You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2016/03/03 12:08:40 UTC
[1/9] lucene-solr git commit: add PointValues.size() stat,
to return total number of points
Repository: lucene-solr
Updated Branches:
refs/heads/master a2120730a -> 4c4313889
add PointValues.size() stat, to return total number of points
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/3c02ab21
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/3c02ab21
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/3c02ab21
Branch: refs/heads/master
Commit: 3c02ab21870c44250a2bc28262726459b220615e
Parents: b17c57f
Author: Mike McCandless <mi...@apache.org>
Authored: Wed Mar 2 17:53:28 2016 -0500
Committer: Mike McCandless <mi...@apache.org>
Committed: Wed Mar 2 17:53:28 2016 -0500
----------------------------------------------------------------------
.../codecs/simpletext/SimpleTextBKDReader.java | 4 +-
.../simpletext/SimpleTextPointReader.java | 18 +-
.../simpletext/SimpleTextPointWriter.java | 5 +
.../org/apache/lucene/codecs/PointFormat.java | 5 +
.../org/apache/lucene/codecs/PointWriter.java | 6 +
.../codecs/lucene60/Lucene60PointReader.java | 11 ++
.../org/apache/lucene/index/CheckIndex.java | 79 +++++++--
.../apache/lucene/index/MultiPointValues.java | 172 -------------------
.../apache/lucene/index/ParallelLeafReader.java | 13 ++
.../org/apache/lucene/index/PointValues.java | 9 +-
.../apache/lucene/index/PointValuesWriter.java | 5 +
.../lucene/index/SlowCodecReaderWrapper.java | 5 +
.../org/apache/lucene/util/bkd/BKDReader.java | 16 +-
.../org/apache/lucene/util/bkd/BKDWriter.java | 15 +-
.../codecs/asserting/AssertingPointFormat.java | 11 +-
.../lucene/codecs/cranky/CrankyPointFormat.java | 5 +
16 files changed, 171 insertions(+), 208 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3c02ab21/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextBKDReader.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextBKDReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextBKDReader.java
index d0ab81e..6752393 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextBKDReader.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextBKDReader.java
@@ -34,8 +34,8 @@ import static org.apache.lucene.codecs.simpletext.SimpleTextPointWriter.BLOCK_VA
class SimpleTextBKDReader extends BKDReader {
public SimpleTextBKDReader(IndexInput datIn, int numDims, int maxPointsInLeafNode, int bytesPerDim, long[] leafBlockFPs, byte[] splitPackedValues,
- byte[] minPackedValue, byte[] maxPackedValue) throws IOException {
- super(datIn, numDims, maxPointsInLeafNode, bytesPerDim, leafBlockFPs, splitPackedValues, minPackedValue, maxPackedValue);
+ byte[] minPackedValue, byte[] maxPackedValue, long pointCount) throws IOException {
+ super(datIn, numDims, maxPointsInLeafNode, bytesPerDim, leafBlockFPs, splitPackedValues, minPackedValue, maxPackedValue, pointCount);
}
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3c02ab21/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointReader.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointReader.java
index 0ec2e03..76c0431 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointReader.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointReader.java
@@ -47,6 +47,7 @@ import static org.apache.lucene.codecs.simpletext.SimpleTextPointWriter.MAX_LEAF
import static org.apache.lucene.codecs.simpletext.SimpleTextPointWriter.MAX_VALUE;
import static org.apache.lucene.codecs.simpletext.SimpleTextPointWriter.MIN_VALUE;
import static org.apache.lucene.codecs.simpletext.SimpleTextPointWriter.NUM_DIMS;
+import static org.apache.lucene.codecs.simpletext.SimpleTextPointWriter.POINT_COUNT;
import static org.apache.lucene.codecs.simpletext.SimpleTextPointWriter.SPLIT_COUNT;
import static org.apache.lucene.codecs.simpletext.SimpleTextPointWriter.SPLIT_DIM;
import static org.apache.lucene.codecs.simpletext.SimpleTextPointWriter.SPLIT_VALUE;
@@ -119,6 +120,10 @@ class SimpleTextPointReader extends PointReader {
assert startsWith(MAX_VALUE);
BytesRef maxValue = SimpleTextUtil.fromBytesRefString(stripPrefix(MAX_VALUE));
assert maxValue.length == numDims*bytesPerDim;
+
+ readLine(dataIn);
+ assert startsWith(POINT_COUNT);
+ long pointCount = parseLong(POINT_COUNT);
long[] leafBlockFPs = new long[count];
for(int i=0;i<count;i++) {
@@ -139,7 +144,7 @@ class SimpleTextPointReader extends PointReader {
System.arraycopy(br.bytes, br.offset, splitPackedValues, (1 + bytesPerDim) * i + 1, bytesPerDim);
}
- return new SimpleTextBKDReader(dataIn, numDims, maxPointsInLeafNode, bytesPerDim, leafBlockFPs, splitPackedValues, minValue.bytes, maxValue.bytes);
+ return new SimpleTextBKDReader(dataIn, numDims, maxPointsInLeafNode, bytesPerDim, leafBlockFPs, splitPackedValues, minValue.bytes, maxValue.bytes, pointCount);
}
private void readLine(IndexInput in) throws IOException {
@@ -267,4 +272,15 @@ class SimpleTextPointReader extends PointReader {
}
return bkdReader.getBytesPerDimension();
}
+
+ @Override
+ public long size(String fieldName) {
+ BKDReader bkdReader = getBKDReader(fieldName);
+ if (bkdReader == null) {
+ // Schema ghost corner case! This field did index points in the past, but
+ // now all docs having this field were deleted in this segment:
+ return 0;
+ }
+ return bkdReader.getPointCount();
+ }
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3c02ab21/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointWriter.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointWriter.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointWriter.java
index 0c5a3fc..abc0b5e 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointWriter.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointWriter.java
@@ -51,6 +51,7 @@ class SimpleTextPointWriter extends PointWriter {
final static BytesRef FIELD_FP = new BytesRef(" field fp ");
final static BytesRef MIN_VALUE = new BytesRef("min value ");
final static BytesRef MAX_VALUE = new BytesRef("max value ");
+ final static BytesRef POINT_COUNT = new BytesRef("point count ");
private IndexOutput dataOut;
final BytesRefBuilder scratch = new BytesRefBuilder();
@@ -102,6 +103,10 @@ class SimpleTextPointWriter extends PointWriter {
write(out, br.toString());
newline(out);
+ write(out, POINT_COUNT);
+ writeLong(out, pointCount);
+ newline(out);
+
for(int i=0;i<leafBlockFPs.length;i++) {
write(out, BLOCK_FP);
writeLong(out, leafBlockFPs[i]);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3c02ab21/lucene/core/src/java/org/apache/lucene/codecs/PointFormat.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/PointFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/PointFormat.java
index 1d48358..fc015d5 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/PointFormat.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/PointFormat.java
@@ -95,6 +95,11 @@ public abstract class PointFormat {
public int getBytesPerDimension(String fieldName) {
throw new IllegalArgumentException("field=\"" + fieldName + "\" was not indexed with points");
}
+
+ @Override
+ public long size(String fieldName) {
+ throw new IllegalArgumentException("field=\"" + fieldName + "\" was not indexed with points");
+ }
};
}
};
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3c02ab21/lucene/core/src/java/org/apache/lucene/codecs/PointWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/PointWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/PointWriter.java
index 21d9044..2224c52 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/PointWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/PointWriter.java
@@ -115,6 +115,12 @@ public abstract class PointWriter implements Closeable {
public int getBytesPerDimension(String fieldName) {
throw new UnsupportedOperationException();
}
+
+ @Override
+ public long size(String fieldName) {
+ throw new UnsupportedOperationException();
+ }
+
});
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3c02ab21/lucene/core/src/java/org/apache/lucene/codecs/lucene60/Lucene60PointReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene60/Lucene60PointReader.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene60/Lucene60PointReader.java
index 2e9206a..e493030 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene60/Lucene60PointReader.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene60/Lucene60PointReader.java
@@ -215,5 +215,16 @@ public class Lucene60PointReader extends PointReader implements Closeable {
}
return bkdReader.getBytesPerDimension();
}
+
+ @Override
+ public long size(String fieldName) {
+ BKDReader bkdReader = getBKDReader(fieldName);
+ if (bkdReader == null) {
+ // Schema ghost corner case! This field did index points in the past, but
+ // now all docs having this point field were deleted in this segment:
+ return 0;
+ }
+ return bkdReader.getPointCount();
+ }
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3c02ab21/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java b/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
index 9f711df..c25531c 100644
--- a/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
+++ b/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
@@ -1698,15 +1698,31 @@ public final class CheckIndex implements Closeable {
status.totalValueFields++;
int dimCount = fieldInfo.getPointDimensionCount();
int bytesPerDim = fieldInfo.getPointNumBytes();
- byte[] lastMinPackedValue = new byte[dimCount*bytesPerDim];
- BytesRef lastMinPacked = new BytesRef(lastMinPackedValue);
- byte[] lastMaxPackedValue = new byte[dimCount*bytesPerDim];
- BytesRef lastMaxPacked = new BytesRef(lastMaxPackedValue);
+ int packedBytesCount = dimCount * bytesPerDim;
+ byte[] lastMinPackedValue = new byte[packedBytesCount];
+ byte[] lastMaxPackedValue = new byte[packedBytesCount];
BytesRef scratch = new BytesRef();
- lastMaxPacked.length = bytesPerDim;
- lastMinPacked.length = bytesPerDim;
scratch.length = bytesPerDim;
- byte[] lastPackedValue = new byte[dimCount*bytesPerDim];
+ byte[] lastPackedValue = new byte[packedBytesCount];
+
+ long[] pointCountSeen = new long[1];
+
+ byte[] globalMinPackedValue = values.getMinPackedValue(fieldInfo.name);
+ long size = values.size(fieldInfo.name);
+ if (globalMinPackedValue == null && size != 0) {
+ throw new RuntimeException("getMinPackedValue is null points for field \"" + fieldInfo.name + "\" yet size=" + size);
+ }
+ if (globalMinPackedValue.length != packedBytesCount) {
+ throw new RuntimeException("getMinPackedValue for field \"" + fieldInfo.name + "\" return length=" + globalMinPackedValue.length + " array, but should be " + packedBytesCount);
+ }
+ byte[] globalMaxPackedValue = values.getMaxPackedValue(fieldInfo.name);
+ if (globalMaxPackedValue == null && size != 0) {
+ throw new RuntimeException("getMaxPackedValue is null points for field \"" + fieldInfo.name + "\" yet size=" + size);
+ }
+ if (globalMaxPackedValue.length != packedBytesCount) {
+ throw new RuntimeException("getMaxPackedValue for field \"" + fieldInfo.name + "\" return length=" + globalMaxPackedValue.length + " array, but should be " + packedBytesCount);
+ }
+
values.intersect(fieldInfo.name,
new PointValues.IntersectVisitor() {
@@ -1720,18 +1736,18 @@ public final class CheckIndex implements Closeable {
@Override
public void visit(int docID, byte[] packedValue) {
checkPackedValue("packed value", packedValue, docID);
- scratch.bytes = packedValue;
+ pointCountSeen[0]++;
for(int dim=0;dim<dimCount;dim++) {
- lastMaxPacked.offset = bytesPerDim * dim;
- lastMinPacked.offset = bytesPerDim * dim;
- scratch.offset = bytesPerDim * dim;
+ int offset = bytesPerDim * dim;
- if (scratch.compareTo(lastMinPacked) < 0) {
+ // Compare to last cell:
+ if (StringHelper.compare(bytesPerDim, packedValue, offset, lastMinPackedValue, offset) < 0) {
// This doc's point, in this dimension, is lower than the minimum value of the last cell checked:
throw new RuntimeException("packed points value " + Arrays.toString(packedValue) + " for docID=" + docID + " is out-of-bounds of the last cell min=" + Arrays.toString(lastMinPackedValue) + " max=" + Arrays.toString(lastMaxPackedValue) + " dim=" + dim);
}
- if (scratch.compareTo(lastMaxPacked) > 0) {
+
+ if (StringHelper.compare(bytesPerDim, packedValue, offset, lastMaxPackedValue, offset) > 0) {
// This doc's point, in this dimension, is greater than the maximum value of the last cell checked:
throw new RuntimeException("packed points value " + Arrays.toString(packedValue) + " for docID=" + docID + " is out-of-bounds of the last cell min=" + Arrays.toString(lastMinPackedValue) + " max=" + Arrays.toString(lastMaxPackedValue) + " dim=" + dim);
}
@@ -1758,9 +1774,33 @@ public final class CheckIndex implements Closeable {
@Override
public PointValues.Relation compare(byte[] minPackedValue, byte[] maxPackedValue) {
checkPackedValue("min packed value", minPackedValue, -1);
- System.arraycopy(minPackedValue, 0, lastMinPackedValue, 0, minPackedValue.length);
+ System.arraycopy(minPackedValue, 0, lastMinPackedValue, 0, packedBytesCount);
checkPackedValue("max packed value", maxPackedValue, -1);
- System.arraycopy(maxPackedValue, 0, lastMaxPackedValue, 0, maxPackedValue.length);
+ System.arraycopy(maxPackedValue, 0, lastMaxPackedValue, 0, packedBytesCount);
+
+ for(int dim=0;dim<dimCount;dim++) {
+ int offset = bytesPerDim * dim;
+
+ // Make sure this cell is not outside of the global min/max:
+ if (StringHelper.compare(bytesPerDim, minPackedValue, offset, globalMinPackedValue, offset) < 0) {
+ throw new RuntimeException("packed points cell minPackedValue " + Arrays.toString(minPackedValue) +
+ " is out-of-bounds of the global minimum " + Arrays.toString(globalMinPackedValue) + " dim=" + dim);
+ }
+
+ if (StringHelper.compare(bytesPerDim, maxPackedValue, offset, globalMinPackedValue, offset) < 0) {
+ throw new RuntimeException("packed points cell maxPackedValue " + Arrays.toString(minPackedValue) +
+ " is out-of-bounds of the global minimum " + Arrays.toString(globalMinPackedValue) + " dim=" + dim);
+ }
+
+ if (StringHelper.compare(bytesPerDim, minPackedValue, offset, globalMaxPackedValue, offset) > 0) {
+ throw new RuntimeException("packed points cell minPackedValue " + Arrays.toString(minPackedValue) +
+ " is out-of-bounds of the global maximum " + Arrays.toString(globalMaxPackedValue) + " dim=" + dim);
+ }
+ if (StringHelper.compare(bytesPerDim, maxPackedValue, offset, globalMaxPackedValue, offset) > 0) {
+ throw new RuntimeException("packed points cell maxPackedValue " + Arrays.toString(maxPackedValue) +
+ " is out-of-bounds of the global maximum " + Arrays.toString(globalMaxPackedValue) + " dim=" + dim);
+ }
+ }
// We always pretend the query shape is so complex that it crosses every cell, so
// that packedValue is passed for every document
@@ -1772,11 +1812,16 @@ public final class CheckIndex implements Closeable {
throw new RuntimeException(desc + " is null for docID=" + docID);
}
- if (packedValue.length != dimCount * bytesPerDim) {
- throw new RuntimeException(desc + " has incorrect length=" + packedValue.length + " vs expected=" + (dimCount * bytesPerDim) + " for docID=" + docID);
+ if (packedValue.length != packedBytesCount) {
+ throw new RuntimeException(desc + " has incorrect length=" + packedValue.length + " vs expected=" + packedBytesCount + " for docID=" + docID);
}
}
});
+
+ if (pointCountSeen[0] != size) {
+ System.out.println("HERE: " + values);
+ throw new RuntimeException("point values for field \"" + fieldInfo.name + "\" claims to have size=" + size + " points, but in fact has " + pointCountSeen[0]);
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3c02ab21/lucene/core/src/java/org/apache/lucene/index/MultiPointValues.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/MultiPointValues.java b/lucene/core/src/java/org/apache/lucene/index/MultiPointValues.java
deleted file mode 100644
index dcc33da..0000000
--- a/lucene/core/src/java/org/apache/lucene/index/MultiPointValues.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.index;
-
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.lucene.util.StringHelper;
-
-/** Merges multiple {@link PointValues} into a single one. */
-public class MultiPointValues extends PointValues {
-
- private final List<PointValues> subs;
- private final List<Integer> docBases;
-
- private MultiPointValues(List<PointValues> subs, List<Integer> docBases) {
- this.subs = subs;
- this.docBases = docBases;
- }
-
- /** Returns a {@link PointValues} merging all point values from the provided reader. */
- public static PointValues get(IndexReader r) {
- final List<LeafReaderContext> leaves = r.leaves();
- final int size = leaves.size();
- if (size == 0) {
- return null;
- } else if (size == 1) {
- return leaves.get(0).reader().getPointValues();
- }
-
- List<PointValues> values = new ArrayList<>();
- List<Integer> docBases = new ArrayList<>();
- for (int i = 0; i < size; i++) {
- LeafReaderContext context = leaves.get(i);
- PointValues v = context.reader().getPointValues();
- if (v != null) {
- values.add(v);
- docBases.add(context.docBase);
- }
- }
-
- if (values.isEmpty()) {
- return null;
- }
-
- return new MultiPointValues(values, docBases);
- }
-
- /** Finds all documents and points matching the provided visitor */
- public void intersect(String fieldName, IntersectVisitor visitor) throws IOException {
- for(int i=0;i<subs.size();i++) {
- int docBase = docBases.get(i);
- subs.get(i).intersect(fieldName,
- new IntersectVisitor() {
- @Override
- public void visit(int docID) throws IOException {
- visitor.visit(docBase+docID);
- }
- @Override
- public void visit(int docID, byte[] packedValue) throws IOException {
- visitor.visit(docBase+docID, packedValue);
- }
- @Override
- public Relation compare(byte[] minPackedValue, byte[] maxPackedValue) {
- return visitor.compare(minPackedValue, maxPackedValue);
- }
- });
- }
- }
-
- @Override
- public String toString() {
- StringBuilder b = new StringBuilder();
- b.append("MultiPointValues(");
- for(int i=0;i<subs.size();i++) {
- if (i > 0) {
- b.append(", ");
- }
- b.append("docBase=");
- b.append(docBases.get(i));
- b.append(" sub=" + subs.get(i));
- }
- b.append(')');
- return b.toString();
- }
-
- @Override
- public byte[] getMinPackedValue(String fieldName) throws IOException {
- byte[] result = null;
- for(int i=0;i<subs.size();i++) {
- byte[] minPackedValue = subs.get(i).getMinPackedValue(fieldName);
- if (result == null) {
- if (minPackedValue != null) {
- result = minPackedValue.clone();
- }
- } else {
- int numDims = subs.get(0).getNumDimensions(fieldName);
- int bytesPerDim = subs.get(0).getBytesPerDimension(fieldName);
- for(int dim=0;dim<numDims;dim++) {
- int offset = dim*bytesPerDim;
- if (StringHelper.compare(bytesPerDim, minPackedValue, offset, result, offset) < 0) {
- System.arraycopy(minPackedValue, offset, result, offset, bytesPerDim);
- }
- }
- }
- }
-
- return result;
- }
-
- @Override
- public byte[] getMaxPackedValue(String fieldName) throws IOException {
- byte[] result = null;
- for(int i=0;i<subs.size();i++) {
- byte[] maxPackedValue = subs.get(i).getMaxPackedValue(fieldName);
- if (result == null) {
- if (maxPackedValue != null) {
- result = maxPackedValue.clone();
- }
- } else {
- int numDims = subs.get(0).getNumDimensions(fieldName);
- int bytesPerDim = subs.get(0).getBytesPerDimension(fieldName);
- for(int dim=0;dim<numDims;dim++) {
- int offset = dim*bytesPerDim;
- if (StringHelper.compare(bytesPerDim, maxPackedValue, offset, result, offset) > 0) {
- System.arraycopy(maxPackedValue, offset, result, offset, bytesPerDim);
- }
- }
- }
- }
-
- return result;
- }
-
- @Override
- public int getNumDimensions(String fieldName) throws IOException {
- for(int i=0;i<subs.size();i++) {
- int result = subs.get(i).getNumDimensions(fieldName);
- if (result != 0) {
- return result;
- }
- }
- return 0;
- }
-
- @Override
- public int getBytesPerDimension(String fieldName) throws IOException {
- for(int i=0;i<subs.size();i++) {
- int result = subs.get(i).getBytesPerDimension(fieldName);
- if (result != 0) {
- return result;
- }
- }
- return 0;
- }
-}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3c02ab21/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java b/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java
index 3d51a0b..c1d8ab7 100644
--- a/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java
+++ b/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java
@@ -381,6 +381,19 @@ public class ParallelLeafReader extends LeafReader {
}
return dimValues.getBytesPerDimension(fieldName);
}
+
+ @Override
+ public long size(String fieldName) {
+ LeafReader reader = fieldToReader.get(fieldName);
+ if (reader == null) {
+ return 0;
+ }
+ PointValues dimValues = reader.getPointValues();
+ if (dimValues == null) {
+ return 0;
+ }
+ return dimValues.size(fieldName);
+ }
};
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3c02ab21/lucene/core/src/java/org/apache/lucene/index/PointValues.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/PointValues.java b/lucene/core/src/java/org/apache/lucene/index/PointValues.java
index 34d315f..be049dd 100644
--- a/lucene/core/src/java/org/apache/lucene/index/PointValues.java
+++ b/lucene/core/src/java/org/apache/lucene/index/PointValues.java
@@ -80,10 +80,10 @@ public abstract class PointValues {
* to test whether each document is deleted, if necessary. */
public abstract void intersect(String fieldName, IntersectVisitor visitor) throws IOException;
- /** Returns minimum value for each dimension, packed, or null if no points were indexed */
+ /** Returns minimum value for each dimension, packed, or null if {@link #size} is <code>0</code> */
public abstract byte[] getMinPackedValue(String fieldName) throws IOException;
- /** Returns maximum value for each dimension, packed, or null if no points were indexed */
+ /** Returns maximum value for each dimension, packed, or null if {@link #size} is <code>0</code> */
public abstract byte[] getMaxPackedValue(String fieldName) throws IOException;
/** Returns how many dimensions were indexed */
@@ -91,4 +91,9 @@ public abstract class PointValues {
/** Returns the number of bytes per dimension */
public abstract int getBytesPerDimension(String fieldName) throws IOException;
+
+ /** Returns the total number of indexed points across all documents in this field. */
+ public abstract long size(String fieldName);
+
+ // nocommit make "delete all point docs then force merge" and then check stats test
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3c02ab21/lucene/core/src/java/org/apache/lucene/index/PointValuesWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/PointValuesWriter.java b/lucene/core/src/java/org/apache/lucene/index/PointValuesWriter.java
index 2fa8b4f..fe3aa14 100644
--- a/lucene/core/src/java/org/apache/lucene/index/PointValuesWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/PointValuesWriter.java
@@ -108,6 +108,11 @@ class PointValuesWriter {
public int getBytesPerDimension(String fieldName) {
throw new UnsupportedOperationException();
}
+
+ @Override
+ public long size(String fieldName) {
+ throw new UnsupportedOperationException();
+ }
});
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3c02ab21/lucene/core/src/java/org/apache/lucene/index/SlowCodecReaderWrapper.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/SlowCodecReaderWrapper.java b/lucene/core/src/java/org/apache/lucene/index/SlowCodecReaderWrapper.java
index 50d9778..50f5ad7 100644
--- a/lucene/core/src/java/org/apache/lucene/index/SlowCodecReaderWrapper.java
+++ b/lucene/core/src/java/org/apache/lucene/index/SlowCodecReaderWrapper.java
@@ -172,6 +172,11 @@ public final class SlowCodecReaderWrapper {
public int getBytesPerDimension(String fieldName) throws IOException {
return values.getBytesPerDimension(fieldName);
}
+
+ @Override
+ public long size(String fieldName) {
+ return values.size(fieldName);
+ }
};
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3c02ab21/lucene/core/src/java/org/apache/lucene/util/bkd/BKDReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/util/bkd/BKDReader.java b/lucene/core/src/java/org/apache/lucene/util/bkd/BKDReader.java
index 9d72599..424b81c 100644
--- a/lucene/core/src/java/org/apache/lucene/util/bkd/BKDReader.java
+++ b/lucene/core/src/java/org/apache/lucene/util/bkd/BKDReader.java
@@ -42,6 +42,7 @@ public class BKDReader implements Accountable {
final int maxPointsInLeafNode;
final byte[] minPackedValue;
final byte[] maxPackedValue;
+ final long pointCount;
protected final int packedBytesLength;
/** Caller must pre-seek the provided {@link IndexInput} to the index location that {@link BKDWriter#finish} returned */
@@ -59,9 +60,12 @@ public class BKDReader implements Accountable {
minPackedValue = new byte[packedBytesLength];
maxPackedValue = new byte[packedBytesLength];
+
in.readBytes(minPackedValue, 0, packedBytesLength);
in.readBytes(maxPackedValue, 0, packedBytesLength);
+ pointCount = in.readVLong();
+
splitPackedValues = new byte[(1+bytesPerDim)*numLeaves];
// TODO: don't write split packed values[0]!
@@ -122,7 +126,7 @@ public class BKDReader implements Accountable {
/** Called by consumers that have their own on-disk format for the index (e.g. SimpleText) */
protected BKDReader(IndexInput in, int numDims, int maxPointsInLeafNode, int bytesPerDim, long[] leafBlockFPs, byte[] splitPackedValues,
- byte[] minPackedValue, byte[] maxPackedValue) throws IOException {
+ byte[] minPackedValue, byte[] maxPackedValue, long pointCount) throws IOException {
this.in = in;
this.numDims = numDims;
this.maxPointsInLeafNode = maxPointsInLeafNode;
@@ -133,6 +137,7 @@ public class BKDReader implements Accountable {
this.splitPackedValues = splitPackedValues;
this.minPackedValue = minPackedValue;
this.maxPackedValue = maxPackedValue;
+ this.pointCount = pointCount;
assert minPackedValue.length == packedBytesLength;
assert maxPackedValue.length == packedBytesLength;
}
@@ -275,10 +280,7 @@ public class BKDReader implements Accountable {
packedBytesLength,
maxPointsInLeafNode,
visitor);
- byte[] rootMinPacked = new byte[packedBytesLength];
- byte[] rootMaxPacked = new byte[packedBytesLength];
- Arrays.fill(rootMaxPacked, (byte) 0xff);
- intersect(state, 1, rootMinPacked, rootMaxPacked);
+ intersect(state, 1, minPackedValue, maxPackedValue);
}
/** Fast path: this is called when the query box fully encompasses all cells under this node. */
@@ -430,4 +432,8 @@ public class BKDReader implements Accountable {
public int getBytesPerDimension() {
return bytesPerDim;
}
+
+ public long getPointCount() {
+ return pointCount;
+ }
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3c02ab21/lucene/core/src/java/org/apache/lucene/util/bkd/BKDWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/util/bkd/BKDWriter.java b/lucene/core/src/java/org/apache/lucene/util/bkd/BKDWriter.java
index 9d6ad97..0ccdf43 100644
--- a/lucene/core/src/java/org/apache/lucene/util/bkd/BKDWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/util/bkd/BKDWriter.java
@@ -123,7 +123,7 @@ public class BKDWriter implements Closeable {
/** Maximum per-dim values, packed */
protected final byte[] maxPackedValue;
- private long pointCount;
+ protected long pointCount;
public BKDWriter(Directory tempDir, String tempFileNamePrefix, int numDims, int bytesPerDim) throws IOException {
this(tempDir, tempFileNamePrefix, numDims, bytesPerDim, DEFAULT_MAX_POINTS_IN_LEAF_NODE, DEFAULT_MAX_MB_SORT_IN_HEAP);
@@ -428,7 +428,8 @@ public class BKDWriter implements Closeable {
}
System.arraycopy(reader.state.scratchPackedValue, 0, maxPackedValue, 0, packedBytesLength);
- assert numDims > 1 || valueInOrder(valueCount++, lastPackedValue, reader.state.scratchPackedValue);
+ assert numDims > 1 || valueInOrder(valueCount, lastPackedValue, reader.state.scratchPackedValue);
+ valueCount++;
if (leafCount == 0) {
if (leafBlockFPs.size() > 0) {
@@ -478,6 +479,8 @@ public class BKDWriter implements Closeable {
}
}
+ pointCount = valueCount;
+
long indexFP = out.getFilePointer();
int numInnerNodes = leafBlockStartValues.size();
@@ -799,10 +802,6 @@ public class BKDWriter implements Closeable {
// Sort all docs once by each dimension:
PathSlice[] sortedPointWriters = new PathSlice[numDims];
- byte[] minPacked = new byte[packedBytesLength];
- byte[] maxPacked = new byte[packedBytesLength];
- Arrays.fill(maxPacked, (byte) 0xff);
-
boolean success = false;
try {
//long t0 = System.nanoTime();
@@ -822,7 +821,7 @@ public class BKDWriter implements Closeable {
build(1, numLeaves, sortedPointWriters,
ordBitSet, out,
- minPacked, maxPacked,
+ minPackedValue, maxPackedValue,
splitPackedValues,
leafBlockFPs);
@@ -862,6 +861,8 @@ public class BKDWriter implements Closeable {
out.writeBytes(minPackedValue, 0, packedBytesLength);
out.writeBytes(maxPackedValue, 0, packedBytesLength);
+ out.writeVLong(pointCount);
+
// TODO: for 1D case, don't waste the first byte of each split value (it's always 0)
// NOTE: splitPackedValues[0] is unused, because nodeID is 1-based:
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3c02ab21/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointFormat.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointFormat.java b/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointFormat.java
index 15836de..71790fc 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointFormat.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointFormat.java
@@ -31,6 +31,7 @@ import org.apache.lucene.index.PointValues;
import org.apache.lucene.index.SegmentReadState;
import org.apache.lucene.index.SegmentWriteState;
import org.apache.lucene.util.Accountable;
+import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.StringHelper;
import org.apache.lucene.util.TestUtil;
@@ -105,8 +106,8 @@ public final class AssertingPointFormat extends PointFormat {
// This doc's packed value should be contained in the last cell passed to compare:
for(int dim=0;dim<numDims;dim++) {
- assert StringHelper.compare(bytesPerDim, lastMinPackedValue, dim*bytesPerDim, packedValue, dim*bytesPerDim) <= 0: "dim=" + dim + " of " + numDims;
- assert StringHelper.compare(bytesPerDim, lastMaxPackedValue, dim*bytesPerDim, packedValue, dim*bytesPerDim) >= 0: "dim=" + dim + " of " + numDims;
+ assert StringHelper.compare(bytesPerDim, lastMinPackedValue, dim*bytesPerDim, packedValue, dim*bytesPerDim) <= 0: "dim=" + dim + " of " + numDims + " value=" + new BytesRef(packedValue);
+ assert StringHelper.compare(bytesPerDim, lastMaxPackedValue, dim*bytesPerDim, packedValue, dim*bytesPerDim) >= 0: "dim=" + dim + " of " + numDims + " value=" + new BytesRef(packedValue);
}
// TODO: we should assert that this "matches" whatever relation the last call to compare had returned
@@ -214,6 +215,12 @@ public final class AssertingPointFormat extends PointFormat {
public int getBytesPerDimension(String fieldName) throws IOException {
return in.getBytesPerDimension(fieldName);
}
+
+ @Override
+ public long size(String fieldName) {
+ // TODO: what to assert?
+ return in.size(fieldName);
+ }
}
static class AssertingPointWriter extends PointWriter {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3c02ab21/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankyPointFormat.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankyPointFormat.java b/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankyPointFormat.java
index 6b83b1e..699fb3c 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankyPointFormat.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankyPointFormat.java
@@ -171,5 +171,10 @@ class CrankyPointFormat extends PointFormat {
public long ramBytesUsed() {
return delegate.ramBytesUsed();
}
+
+ @Override
+ public long size(String fieldName) {
+ return delegate.size(fieldName);
+ }
}
}
[3/9] lucene-solr git commit: also add PointValues.getDocCount stat,
and check it in CheckIndex
Posted by mi...@apache.org.
also add PointValues.getDocCount stat, and check it in CheckIndex
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/b5475d10
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/b5475d10
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/b5475d10
Branch: refs/heads/master
Commit: b5475d10e1b5ef3c07389f36bbe72c9cd5f962d5
Parents: 85dbdb7
Author: Mike McCandless <mi...@apache.org>
Authored: Wed Mar 2 18:39:57 2016 -0500
Committer: Mike McCandless <mi...@apache.org>
Committed: Wed Mar 2 18:39:57 2016 -0500
----------------------------------------------------------------------
.../codecs/simpletext/SimpleTextBKDReader.java | 4 ++--
.../codecs/simpletext/SimpleTextPointReader.java | 18 +++++++++++++++++-
.../codecs/simpletext/SimpleTextPointWriter.java | 18 ++++++++++++------
.../org/apache/lucene/codecs/PointFormat.java | 5 +++++
.../org/apache/lucene/codecs/PointWriter.java | 4 ++++
.../codecs/lucene60/Lucene60PointReader.java | 11 +++++++++++
.../codecs/lucene60/Lucene60PointWriter.java | 6 ++++--
.../java/org/apache/lucene/index/CheckIndex.java | 13 ++++++++++++-
.../apache/lucene/index/ParallelLeafReader.java | 13 +++++++++++++
.../java/org/apache/lucene/index/PointValues.java | 3 ++-
.../apache/lucene/index/PointValuesWriter.java | 5 +++++
.../lucene/index/SlowCodecReaderWrapper.java | 5 +++++
.../org/apache/lucene/util/bkd/BKDReader.java | 9 ++++++++-
.../org/apache/lucene/util/bkd/BKDWriter.java | 16 ++++++++++++----
.../test/org/apache/lucene/util/bkd/TestBKD.java | 14 +++++++-------
.../codecs/asserting/AssertingPointFormat.java | 6 ++++++
.../lucene/codecs/cranky/CrankyPointFormat.java | 5 +++++
17 files changed, 130 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextBKDReader.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextBKDReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextBKDReader.java
index 6752393..09c40ec 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextBKDReader.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextBKDReader.java
@@ -34,8 +34,8 @@ import static org.apache.lucene.codecs.simpletext.SimpleTextPointWriter.BLOCK_VA
class SimpleTextBKDReader extends BKDReader {
public SimpleTextBKDReader(IndexInput datIn, int numDims, int maxPointsInLeafNode, int bytesPerDim, long[] leafBlockFPs, byte[] splitPackedValues,
- byte[] minPackedValue, byte[] maxPackedValue, long pointCount) throws IOException {
- super(datIn, numDims, maxPointsInLeafNode, bytesPerDim, leafBlockFPs, splitPackedValues, minPackedValue, maxPackedValue, pointCount);
+ byte[] minPackedValue, byte[] maxPackedValue, long pointCount, int docCount) throws IOException {
+ super(datIn, numDims, maxPointsInLeafNode, bytesPerDim, leafBlockFPs, splitPackedValues, minPackedValue, maxPackedValue, pointCount, docCount);
}
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointReader.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointReader.java
index 76c0431..05afd93 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointReader.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointReader.java
@@ -39,6 +39,7 @@ import org.apache.lucene.util.bkd.BKDReader;
import static org.apache.lucene.codecs.simpletext.SimpleTextPointWriter.BLOCK_FP;
import static org.apache.lucene.codecs.simpletext.SimpleTextPointWriter.BYTES_PER_DIM;
+import static org.apache.lucene.codecs.simpletext.SimpleTextPointWriter.DOC_COUNT;
import static org.apache.lucene.codecs.simpletext.SimpleTextPointWriter.FIELD_COUNT;
import static org.apache.lucene.codecs.simpletext.SimpleTextPointWriter.FIELD_FP;
import static org.apache.lucene.codecs.simpletext.SimpleTextPointWriter.FIELD_FP_NAME;
@@ -124,6 +125,10 @@ class SimpleTextPointReader extends PointReader {
readLine(dataIn);
assert startsWith(POINT_COUNT);
long pointCount = parseLong(POINT_COUNT);
+
+ readLine(dataIn);
+ assert startsWith(DOC_COUNT);
+ int docCount = parseInt(DOC_COUNT);
long[] leafBlockFPs = new long[count];
for(int i=0;i<count;i++) {
@@ -144,7 +149,7 @@ class SimpleTextPointReader extends PointReader {
System.arraycopy(br.bytes, br.offset, splitPackedValues, (1 + bytesPerDim) * i + 1, bytesPerDim);
}
- return new SimpleTextBKDReader(dataIn, numDims, maxPointsInLeafNode, bytesPerDim, leafBlockFPs, splitPackedValues, minValue.bytes, maxValue.bytes, pointCount);
+ return new SimpleTextBKDReader(dataIn, numDims, maxPointsInLeafNode, bytesPerDim, leafBlockFPs, splitPackedValues, minValue.bytes, maxValue.bytes, pointCount, docCount);
}
private void readLine(IndexInput in) throws IOException {
@@ -283,4 +288,15 @@ class SimpleTextPointReader extends PointReader {
}
return bkdReader.getPointCount();
}
+
+ @Override
+ public int getDocCount(String fieldName) {
+ BKDReader bkdReader = getBKDReader(fieldName);
+ if (bkdReader == null) {
+ // Schema ghost corner case! This field did index points in the past, but
+ // now all docs having this field were deleted in this segment:
+ return 0;
+ }
+ return bkdReader.getDocCount();
+ }
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointWriter.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointWriter.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointWriter.java
index abc0b5e..a20e487 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointWriter.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointWriter.java
@@ -52,6 +52,7 @@ class SimpleTextPointWriter extends PointWriter {
final static BytesRef MIN_VALUE = new BytesRef("min value ");
final static BytesRef MAX_VALUE = new BytesRef("max value ");
final static BytesRef POINT_COUNT = new BytesRef("point count ");
+ final static BytesRef DOC_COUNT = new BytesRef("doc count ");
private IndexOutput dataOut;
final BytesRefBuilder scratch = new BytesRefBuilder();
@@ -68,12 +69,13 @@ class SimpleTextPointWriter extends PointWriter {
public void writeField(FieldInfo fieldInfo, PointReader values) throws IOException {
// We use the normal BKDWriter, but subclass to customize how it writes the index and blocks to disk:
- try (BKDWriter writer = new BKDWriter(writeState.directory,
- writeState.segmentInfo.name,
- fieldInfo.getPointDimensionCount(),
- fieldInfo.getPointNumBytes(),
- BKDWriter.DEFAULT_MAX_POINTS_IN_LEAF_NODE,
- BKDWriter.DEFAULT_MAX_MB_SORT_IN_HEAP) {
+ try (BKDWriter writer = new BKDWriter(writeState.segmentInfo.maxDoc(),
+ writeState.directory,
+ writeState.segmentInfo.name,
+ fieldInfo.getPointDimensionCount(),
+ fieldInfo.getPointNumBytes(),
+ BKDWriter.DEFAULT_MAX_POINTS_IN_LEAF_NODE,
+ BKDWriter.DEFAULT_MAX_MB_SORT_IN_HEAP) {
@Override
protected void writeIndex(IndexOutput out, long[] leafBlockFPs, byte[] splitPackedValues) throws IOException {
@@ -107,6 +109,10 @@ class SimpleTextPointWriter extends PointWriter {
writeLong(out, pointCount);
newline(out);
+ write(out, DOC_COUNT);
+ writeInt(out, docsSeen.cardinality());
+ newline(out);
+
for(int i=0;i<leafBlockFPs.length;i++) {
write(out, BLOCK_FP);
writeLong(out, leafBlockFPs[i]);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/core/src/java/org/apache/lucene/codecs/PointFormat.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/PointFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/PointFormat.java
index fc015d5..964f8f0 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/PointFormat.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/PointFormat.java
@@ -100,6 +100,11 @@ public abstract class PointFormat {
public long size(String fieldName) {
throw new IllegalArgumentException("field=\"" + fieldName + "\" was not indexed with points");
}
+
+ @Override
+ public int getDocCount(String fieldName) {
+ throw new IllegalArgumentException("field=\"" + fieldName + "\" was not indexed with points");
+ }
};
}
};
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/core/src/java/org/apache/lucene/codecs/PointWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/PointWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/PointWriter.java
index 2224c52..d244093 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/PointWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/PointWriter.java
@@ -121,6 +121,10 @@ public abstract class PointWriter implements Closeable {
throw new UnsupportedOperationException();
}
+ @Override
+ public int getDocCount(String fieldName) {
+ throw new UnsupportedOperationException();
+ }
});
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/core/src/java/org/apache/lucene/codecs/lucene60/Lucene60PointReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene60/Lucene60PointReader.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene60/Lucene60PointReader.java
index e493030..91a1e6c 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene60/Lucene60PointReader.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene60/Lucene60PointReader.java
@@ -226,5 +226,16 @@ public class Lucene60PointReader extends PointReader implements Closeable {
}
return bkdReader.getPointCount();
}
+
+ @Override
+ public int getDocCount(String fieldName) {
+ BKDReader bkdReader = getBKDReader(fieldName);
+ if (bkdReader == null) {
+ // Schema ghost corner case! This field did index points in the past, but
+ // now all docs having this point field were deleted in this segment:
+ return 0;
+ }
+ return bkdReader.getDocCount();
+ }
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/core/src/java/org/apache/lucene/codecs/lucene60/Lucene60PointWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene60/Lucene60PointWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene60/Lucene60PointWriter.java
index 9709ffb..63fc134 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene60/Lucene60PointWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene60/Lucene60PointWriter.java
@@ -82,7 +82,8 @@ public class Lucene60PointWriter extends PointWriter implements Closeable {
@Override
public void writeField(FieldInfo fieldInfo, PointReader values) throws IOException {
- try (BKDWriter writer = new BKDWriter(writeState.directory,
+ try (BKDWriter writer = new BKDWriter(writeState.segmentInfo.maxDoc(),
+ writeState.directory,
writeState.segmentInfo.name,
fieldInfo.getPointDimensionCount(),
fieldInfo.getPointNumBytes(),
@@ -129,7 +130,8 @@ public class Lucene60PointWriter extends PointWriter implements Closeable {
// Optimize the 1D case to use BKDWriter.merge, which does a single merge sort of the
// already sorted incoming segments, instead of trying to sort all points again as if
// we were simply reindexing them:
- try (BKDWriter writer = new BKDWriter(writeState.directory,
+ try (BKDWriter writer = new BKDWriter(writeState.segmentInfo.maxDoc(),
+ writeState.directory,
writeState.segmentInfo.name,
fieldInfo.getPointDimensionCount(),
fieldInfo.getPointNumBytes(),
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java b/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
index db32924..012f88a 100644
--- a/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
+++ b/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
@@ -1695,6 +1695,7 @@ public final class CheckIndex implements Closeable {
}
for (FieldInfo fieldInfo : fieldInfos) {
if (fieldInfo.getPointDimensionCount() > 0) {
+ FixedBitSet docsSeen = new FixedBitSet(reader.maxDoc());
status.totalValueFields++;
int dimCount = fieldInfo.getPointDimensionCount();
int bytesPerDim = fieldInfo.getPointNumBytes();
@@ -1709,6 +1710,12 @@ public final class CheckIndex implements Closeable {
byte[] globalMinPackedValue = values.getMinPackedValue(fieldInfo.name);
long size = values.size(fieldInfo.name);
+ int docCount = values.getDocCount(fieldInfo.name);
+
+ if (docCount > size) {
+ throw new RuntimeException("point values for field \"" + fieldInfo.name + "\" claims to have size=" + size + " points and inconsistent docCount=" + docCount);
+ }
+
if (globalMinPackedValue == null) {
if (size != 0) {
throw new RuntimeException("getMinPackedValue is null points for field \"" + fieldInfo.name + "\" yet size=" + size);
@@ -1739,6 +1746,7 @@ public final class CheckIndex implements Closeable {
public void visit(int docID, byte[] packedValue) {
checkPackedValue("packed value", packedValue, docID);
pointCountSeen[0]++;
+ docsSeen.set(docID);
for(int dim=0;dim<dimCount;dim++) {
int offset = bytesPerDim * dim;
@@ -1821,9 +1829,12 @@ public final class CheckIndex implements Closeable {
});
if (pointCountSeen[0] != size) {
- System.out.println("HERE: " + values);
throw new RuntimeException("point values for field \"" + fieldInfo.name + "\" claims to have size=" + size + " points, but in fact has " + pointCountSeen[0]);
}
+
+ if (docsSeen.cardinality() != docCount) {
+ throw new RuntimeException("point values for field \"" + fieldInfo.name + "\" claims to have docCount=" + docCount + " but in fact has " + docsSeen.cardinality());
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java b/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java
index c1d8ab7..532265f 100644
--- a/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java
+++ b/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java
@@ -394,6 +394,19 @@ public class ParallelLeafReader extends LeafReader {
}
return dimValues.size(fieldName);
}
+
+ @Override
+ public int getDocCount(String fieldName) {
+ LeafReader reader = fieldToReader.get(fieldName);
+ if (reader == null) {
+ return 0;
+ }
+ PointValues dimValues = reader.getPointValues();
+ if (dimValues == null) {
+ return 0;
+ }
+ return dimValues.getDocCount(fieldName);
+ }
};
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/core/src/java/org/apache/lucene/index/PointValues.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/PointValues.java b/lucene/core/src/java/org/apache/lucene/index/PointValues.java
index be049dd..230a14f 100644
--- a/lucene/core/src/java/org/apache/lucene/index/PointValues.java
+++ b/lucene/core/src/java/org/apache/lucene/index/PointValues.java
@@ -95,5 +95,6 @@ public abstract class PointValues {
/** Returns the total number of indexed points across all documents in this field. */
public abstract long size(String fieldName);
- // nocommit make "delete all point docs then force merge" and then check stats test
+ /** Returns the total number of documents that have indexed at least one point for this field. */
+ public abstract int getDocCount(String fieldName);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/core/src/java/org/apache/lucene/index/PointValuesWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/PointValuesWriter.java b/lucene/core/src/java/org/apache/lucene/index/PointValuesWriter.java
index fe3aa14..546bf71 100644
--- a/lucene/core/src/java/org/apache/lucene/index/PointValuesWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/PointValuesWriter.java
@@ -113,6 +113,11 @@ class PointValuesWriter {
public long size(String fieldName) {
throw new UnsupportedOperationException();
}
+
+ @Override
+ public int getDocCount(String fieldName) {
+ throw new UnsupportedOperationException();
+ }
});
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/core/src/java/org/apache/lucene/index/SlowCodecReaderWrapper.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/SlowCodecReaderWrapper.java b/lucene/core/src/java/org/apache/lucene/index/SlowCodecReaderWrapper.java
index 50f5ad7..a741111 100644
--- a/lucene/core/src/java/org/apache/lucene/index/SlowCodecReaderWrapper.java
+++ b/lucene/core/src/java/org/apache/lucene/index/SlowCodecReaderWrapper.java
@@ -177,6 +177,11 @@ public final class SlowCodecReaderWrapper {
public long size(String fieldName) {
return values.size(fieldName);
}
+
+ @Override
+ public int getDocCount(String fieldName) {
+ return values.getDocCount(fieldName);
+ }
};
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/core/src/java/org/apache/lucene/util/bkd/BKDReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/util/bkd/BKDReader.java b/lucene/core/src/java/org/apache/lucene/util/bkd/BKDReader.java
index 424b81c..b904a50 100644
--- a/lucene/core/src/java/org/apache/lucene/util/bkd/BKDReader.java
+++ b/lucene/core/src/java/org/apache/lucene/util/bkd/BKDReader.java
@@ -43,6 +43,7 @@ public class BKDReader implements Accountable {
final byte[] minPackedValue;
final byte[] maxPackedValue;
final long pointCount;
+ final int docCount;
protected final int packedBytesLength;
/** Caller must pre-seek the provided {@link IndexInput} to the index location that {@link BKDWriter#finish} returned */
@@ -65,6 +66,7 @@ public class BKDReader implements Accountable {
in.readBytes(maxPackedValue, 0, packedBytesLength);
pointCount = in.readVLong();
+ docCount = in.readVInt();
splitPackedValues = new byte[(1+bytesPerDim)*numLeaves];
@@ -126,7 +128,7 @@ public class BKDReader implements Accountable {
/** Called by consumers that have their own on-disk format for the index (e.g. SimpleText) */
protected BKDReader(IndexInput in, int numDims, int maxPointsInLeafNode, int bytesPerDim, long[] leafBlockFPs, byte[] splitPackedValues,
- byte[] minPackedValue, byte[] maxPackedValue, long pointCount) throws IOException {
+ byte[] minPackedValue, byte[] maxPackedValue, long pointCount, int docCount) throws IOException {
this.in = in;
this.numDims = numDims;
this.maxPointsInLeafNode = maxPointsInLeafNode;
@@ -138,6 +140,7 @@ public class BKDReader implements Accountable {
this.minPackedValue = minPackedValue;
this.maxPackedValue = maxPackedValue;
this.pointCount = pointCount;
+ this.docCount = docCount;
assert minPackedValue.length == packedBytesLength;
assert maxPackedValue.length == packedBytesLength;
}
@@ -436,4 +439,8 @@ public class BKDReader implements Accountable {
public long getPointCount() {
return pointCount;
}
+
+ public int getDocCount() {
+ return docCount;
+ }
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/core/src/java/org/apache/lucene/util/bkd/BKDWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/util/bkd/BKDWriter.java b/lucene/core/src/java/org/apache/lucene/util/bkd/BKDWriter.java
index 0ccdf43..5388bb3 100644
--- a/lucene/core/src/java/org/apache/lucene/util/bkd/BKDWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/util/bkd/BKDWriter.java
@@ -34,6 +34,7 @@ import org.apache.lucene.store.TrackingDirectoryWrapper;
import org.apache.lucene.util.ArrayUtil;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.BytesRefBuilder;
+import org.apache.lucene.util.FixedBitSet;
import org.apache.lucene.util.IOUtils;
import org.apache.lucene.util.IntroSorter;
import org.apache.lucene.util.LongBitSet;
@@ -110,6 +111,8 @@ public class BKDWriter implements Closeable {
final byte[] scratch2;
final int[] commonPrefixLengths;
+ protected final FixedBitSet docsSeen;
+
private OfflinePointWriter offlinePointWriter;
private HeapPointWriter heapPointWriter;
@@ -125,11 +128,11 @@ public class BKDWriter implements Closeable {
protected long pointCount;
- public BKDWriter(Directory tempDir, String tempFileNamePrefix, int numDims, int bytesPerDim) throws IOException {
- this(tempDir, tempFileNamePrefix, numDims, bytesPerDim, DEFAULT_MAX_POINTS_IN_LEAF_NODE, DEFAULT_MAX_MB_SORT_IN_HEAP);
+ public BKDWriter(int maxDoc, Directory tempDir, String tempFileNamePrefix, int numDims, int bytesPerDim) throws IOException {
+ this(maxDoc, tempDir, tempFileNamePrefix, numDims, bytesPerDim, DEFAULT_MAX_POINTS_IN_LEAF_NODE, DEFAULT_MAX_MB_SORT_IN_HEAP);
}
- public BKDWriter(Directory tempDir, String tempFileNamePrefix, int numDims, int bytesPerDim, int maxPointsInLeafNode, double maxMBSortInHeap) throws IOException {
+ public BKDWriter(int maxDoc, Directory tempDir, String tempFileNamePrefix, int numDims, int bytesPerDim, int maxPointsInLeafNode, double maxMBSortInHeap) throws IOException {
verifyParams(numDims, maxPointsInLeafNode, maxMBSortInHeap);
// We use tracking dir to deal with removing files on exception, so each place that
// creates temp files doesn't need crazy try/finally/sucess logic:
@@ -138,6 +141,7 @@ public class BKDWriter implements Closeable {
this.maxPointsInLeafNode = maxPointsInLeafNode;
this.numDims = numDims;
this.bytesPerDim = bytesPerDim;
+ docsSeen = new FixedBitSet(maxDoc);
packedBytesLength = numDims * bytesPerDim;
scratchDiff = new byte[bytesPerDim];
@@ -239,6 +243,7 @@ public class BKDWriter implements Closeable {
}
pointCount++;
+ docsSeen.set(docID);
}
/** How many points have been added so far */
@@ -420,8 +425,10 @@ public class BKDWriter implements Closeable {
// System.out.println("iter reader=" + reader);
// NOTE: doesn't work with subclasses (e.g. SimpleText!)
- leafBlockDocIDs[leafCount] = reader.docIDBase + reader.docID;
+ int docID = reader.docIDBase + reader.docID;
+ leafBlockDocIDs[leafCount] = docID;
System.arraycopy(reader.state.scratchPackedValue, 0, leafBlockPackedValues[leafCount], 0, packedBytesLength);
+ docsSeen.set(docID);
if (valueCount == 0) {
System.arraycopy(reader.state.scratchPackedValue, 0, minPackedValue, 0, packedBytesLength);
@@ -862,6 +869,7 @@ public class BKDWriter implements Closeable {
out.writeBytes(maxPackedValue, 0, packedBytesLength);
out.writeVLong(pointCount);
+ out.writeVInt(docsSeen.cardinality());
// TODO: for 1D case, don't waste the first byte of each split value (it's always 0)
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/core/src/test/org/apache/lucene/util/bkd/TestBKD.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/util/bkd/TestBKD.java b/lucene/core/src/test/org/apache/lucene/util/bkd/TestBKD.java
index 1688e6f..a98aa2e 100644
--- a/lucene/core/src/test/org/apache/lucene/util/bkd/TestBKD.java
+++ b/lucene/core/src/test/org/apache/lucene/util/bkd/TestBKD.java
@@ -42,7 +42,7 @@ public class TestBKD extends LuceneTestCase {
public void testBasicInts1D() throws Exception {
try (Directory dir = getDirectory(100)) {
- BKDWriter w = new BKDWriter(dir, "tmp", 1, 4, 2, 1.0f);
+ BKDWriter w = new BKDWriter(100, dir, "tmp", 1, 4, 2, 1.0f);
byte[] scratch = new byte[4];
for(int docID=0;docID<100;docID++) {
NumericUtils.intToBytes(docID, scratch, 0);
@@ -117,7 +117,7 @@ public class TestBKD extends LuceneTestCase {
int numDims = TestUtil.nextInt(random(), 1, 5);
int maxPointsInLeafNode = TestUtil.nextInt(random(), 50, 100);
float maxMB = (float) 3.0 + (3*random().nextFloat());
- BKDWriter w = new BKDWriter(dir, "tmp", numDims, 4, maxPointsInLeafNode, maxMB);
+ BKDWriter w = new BKDWriter(numDocs, dir, "tmp", numDims, 4, maxPointsInLeafNode, maxMB);
if (VERBOSE) {
System.out.println("TEST: numDims=" + numDims + " numDocs=" + numDocs);
@@ -258,7 +258,7 @@ public class TestBKD extends LuceneTestCase {
int numDims = TestUtil.nextInt(random(), 1, 5);
int maxPointsInLeafNode = TestUtil.nextInt(random(), 50, 100);
float maxMB = (float) 3.0 + (3*random().nextFloat());
- BKDWriter w = new BKDWriter(dir, "tmp", numDims, numBytesPerDim, maxPointsInLeafNode, maxMB);
+ BKDWriter w = new BKDWriter(numDocs, dir, "tmp", numDims, numBytesPerDim, maxPointsInLeafNode, maxMB);
BigInteger[][] docs = new BigInteger[numDocs][];
byte[] scratch = new byte[numBytesPerDim*numDims];
@@ -431,7 +431,7 @@ public class TestBKD extends LuceneTestCase {
public void testTooLittleHeap() throws Exception {
try (Directory dir = getDirectory(0)) {
IllegalArgumentException expected = expectThrows(IllegalArgumentException.class, () -> {
- new BKDWriter(dir, "bkd", 1, 16, 1000000, 0.001);
+ new BKDWriter(1, dir, "bkd", 1, 16, 1000000, 0.001);
});
assertTrue(expected.getMessage().contains("either increase maxMBSortInHeap or decrease maxPointsInLeafNode"));
}
@@ -631,7 +631,7 @@ public class TestBKD extends LuceneTestCase {
List<Integer> docIDBases = null;
int seg = 0;
- BKDWriter w = new BKDWriter(dir, "_" + seg, numDims, numBytesPerDim, maxPointsInLeafNode, maxMB);
+ BKDWriter w = new BKDWriter(numValues, dir, "_" + seg, numDims, numBytesPerDim, maxPointsInLeafNode, maxMB);
IndexOutput out = dir.createOutput("bkd", IOContext.DEFAULT);
IndexInput in = null;
@@ -685,7 +685,7 @@ public class TestBKD extends LuceneTestCase {
seg++;
maxPointsInLeafNode = TestUtil.nextInt(random(), 50, 1000);
maxMB = (float) 3.0 + (3*random().nextDouble());
- w = new BKDWriter(dir, "_" + seg, numDims, numBytesPerDim, maxPointsInLeafNode, maxMB);
+ w = new BKDWriter(numValues, dir, "_" + seg, numDims, numBytesPerDim, maxPointsInLeafNode, maxMB);
lastDocIDBase = docID;
}
}
@@ -701,7 +701,7 @@ public class TestBKD extends LuceneTestCase {
out.close();
in = dir.openInput("bkd", IOContext.DEFAULT);
seg++;
- w = new BKDWriter(dir, "_" + seg, numDims, numBytesPerDim, maxPointsInLeafNode, maxMB);
+ w = new BKDWriter(numValues, dir, "_" + seg, numDims, numBytesPerDim, maxPointsInLeafNode, maxMB);
List<BKDReader> readers = new ArrayList<>();
for(long fp : toMerge) {
in.seek(fp);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointFormat.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointFormat.java b/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointFormat.java
index 71790fc..892eeef 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointFormat.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointFormat.java
@@ -221,6 +221,12 @@ public final class AssertingPointFormat extends PointFormat {
// TODO: what to assert?
return in.size(fieldName);
}
+
+ @Override
+ public int getDocCount(String fieldName) {
+ // TODO: what to assert?
+ return in.getDocCount(fieldName);
+ }
}
static class AssertingPointWriter extends PointWriter {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b5475d10/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankyPointFormat.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankyPointFormat.java b/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankyPointFormat.java
index 699fb3c..b663a80 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankyPointFormat.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankyPointFormat.java
@@ -176,5 +176,10 @@ class CrankyPointFormat extends PointFormat {
public long size(String fieldName) {
return delegate.size(fieldName);
}
+
+ @Override
+ public int getDocCount(String fieldName) {
+ return delegate.getDocCount(fieldName);
+ }
}
}
[2/9] lucene-solr git commit: fix NPE, add test case
Posted by mi...@apache.org.
fix NPE, add test case
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/85dbdb76
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/85dbdb76
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/85dbdb76
Branch: refs/heads/master
Commit: 85dbdb7659498e8a41653b642dc0c9b0e1f69304
Parents: 3c02ab2
Author: Mike McCandless <mi...@apache.org>
Authored: Wed Mar 2 17:59:42 2016 -0500
Committer: Mike McCandless <mi...@apache.org>
Committed: Wed Mar 2 17:59:42 2016 -0500
----------------------------------------------------------------------
.../org/apache/lucene/index/CheckIndex.java | 18 +++++++++-------
.../apache/lucene/index/TestPointValues.java | 22 ++++++++++++++++++++
2 files changed, 32 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85dbdb76/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java b/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
index c25531c..db32924 100644
--- a/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
+++ b/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
@@ -1709,17 +1709,19 @@ public final class CheckIndex implements Closeable {
byte[] globalMinPackedValue = values.getMinPackedValue(fieldInfo.name);
long size = values.size(fieldInfo.name);
- if (globalMinPackedValue == null && size != 0) {
- throw new RuntimeException("getMinPackedValue is null points for field \"" + fieldInfo.name + "\" yet size=" + size);
- }
- if (globalMinPackedValue.length != packedBytesCount) {
+ if (globalMinPackedValue == null) {
+ if (size != 0) {
+ throw new RuntimeException("getMinPackedValue is null points for field \"" + fieldInfo.name + "\" yet size=" + size);
+ }
+ } else if (globalMinPackedValue.length != packedBytesCount) {
throw new RuntimeException("getMinPackedValue for field \"" + fieldInfo.name + "\" return length=" + globalMinPackedValue.length + " array, but should be " + packedBytesCount);
}
byte[] globalMaxPackedValue = values.getMaxPackedValue(fieldInfo.name);
- if (globalMaxPackedValue == null && size != 0) {
- throw new RuntimeException("getMaxPackedValue is null points for field \"" + fieldInfo.name + "\" yet size=" + size);
- }
- if (globalMaxPackedValue.length != packedBytesCount) {
+ if (globalMaxPackedValue == null) {
+ if (size != 0) {
+ throw new RuntimeException("getMaxPackedValue is null points for field \"" + fieldInfo.name + "\" yet size=" + size);
+ }
+ } else if (globalMaxPackedValue.length != packedBytesCount) {
throw new RuntimeException("getMaxPackedValue for field \"" + fieldInfo.name + "\" return length=" + globalMaxPackedValue.length + " array, but should be " + packedBytesCount);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85dbdb76/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java b/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java
index 7551d3c..506d58c 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java
@@ -34,6 +34,7 @@ import org.apache.lucene.document.Field;
import org.apache.lucene.document.FloatPoint;
import org.apache.lucene.document.IntPoint;
import org.apache.lucene.document.LongPoint;
+import org.apache.lucene.document.StringField;
import org.apache.lucene.index.PointValues.IntersectVisitor;
import org.apache.lucene.index.PointValues.Relation;
import org.apache.lucene.index.PointValues;
@@ -540,4 +541,25 @@ public class TestPointValues extends LuceneTestCase {
w.close();
dir.close();
}
+
+ public void testDeleteAllPointDocs() throws Exception {
+ Directory dir = newDirectory();
+ IndexWriterConfig iwc = newIndexWriterConfig();
+ IndexWriter w = new IndexWriter(dir, iwc);
+ Document doc = new Document();
+ doc.add(new StringField("id", "0", Field.Store.NO));
+ doc.add(new IntPoint("int", 17));
+ w.addDocument(doc);
+ w.addDocument(new Document());
+ w.commit();
+
+ w.deleteDocuments(new Term("id", "0"));
+
+ w.forceMerge(1);
+ DirectoryReader r = w.getReader();
+ assertEquals(0, r.leaves().get(0).reader().getPointValues().size("int"));
+ w.close();
+ r.close();
+ dir.close();
+ }
}
[8/9] lucene-solr git commit: also assert points stats docCount <=
maxDoc, and docCount >=0 and size >= 0
Posted by mi...@apache.org.
also assert points stats docCount <= maxDoc, and docCount >=0 and size >= 0
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/2d5519a0
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/2d5519a0
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/2d5519a0
Branch: refs/heads/master
Commit: 2d5519a0ee7415a62356c3bc93fd80206811a8ac
Parents: c16f73a
Author: Mike McCandless <mi...@apache.org>
Authored: Thu Mar 3 05:48:15 2016 -0500
Committer: Mike McCandless <mi...@apache.org>
Committed: Thu Mar 3 05:48:15 2016 -0500
----------------------------------------------------------------------
.../org/apache/lucene/index/CheckIndex.java | 4 ++++
.../codecs/asserting/AssertingPointFormat.java | 23 +++++++++++++++-----
2 files changed, 22 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2d5519a0/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java b/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
index 012f88a..1da69c1 100644
--- a/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
+++ b/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
@@ -1716,6 +1716,10 @@ public final class CheckIndex implements Closeable {
throw new RuntimeException("point values for field \"" + fieldInfo.name + "\" claims to have size=" + size + " points and inconsistent docCount=" + docCount);
}
+ if (docCount > reader.maxDoc()) {
+ throw new RuntimeException("point values for field \"" + fieldInfo.name + "\" claims to have docCount=" + docCount + " but that's greater than maxDoc=" + reader.maxDoc());
+ }
+
if (globalMinPackedValue == null) {
if (size != 0) {
throw new RuntimeException("getMinPackedValue is null points for field \"" + fieldInfo.name + "\" yet size=" + size);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2d5519a0/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointFormat.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointFormat.java b/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointFormat.java
index 892eeef..07365e0 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointFormat.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPointFormat.java
@@ -64,7 +64,7 @@ public final class AssertingPointFormat extends PointFormat {
@Override
public PointReader fieldsReader(SegmentReadState state) throws IOException {
- return new AssertingPointReader(in.fieldsReader(state));
+ return new AssertingPointReader(state.segmentInfo.maxDoc(), in.fieldsReader(state));
}
/** Validates in the 1D case that all points are visited in order, and point values are in bounds of the last cell checked */
@@ -146,9 +146,11 @@ public final class AssertingPointFormat extends PointFormat {
static class AssertingPointReader extends PointReader {
private final PointReader in;
+ private final int maxDoc;
- AssertingPointReader(PointReader in) {
+ AssertingPointReader(int maxDoc, PointReader in) {
this.in = in;
+ this.maxDoc = maxDoc;
// do a few simple checks on init
assert toString() != null;
assert ramBytesUsed() >= 0;
@@ -188,7 +190,7 @@ public final class AssertingPointFormat extends PointFormat {
@Override
public PointReader getMergeInstance() throws IOException {
- return new AssertingPointReader(in.getMergeInstance());
+ return new AssertingPointReader(maxDoc, in.getMergeInstance());
}
@Override
@@ -198,35 +200,46 @@ public final class AssertingPointFormat extends PointFormat {
@Override
public byte[] getMinPackedValue(String fieldName) throws IOException {
+ assertStats(fieldName);
return in.getMinPackedValue(fieldName);
}
@Override
public byte[] getMaxPackedValue(String fieldName) throws IOException {
+ assertStats(fieldName);
return in.getMaxPackedValue(fieldName);
}
@Override
public int getNumDimensions(String fieldName) throws IOException {
+ assertStats(fieldName);
return in.getNumDimensions(fieldName);
}
@Override
public int getBytesPerDimension(String fieldName) throws IOException {
+ assertStats(fieldName);
return in.getBytesPerDimension(fieldName);
}
@Override
public long size(String fieldName) {
- // TODO: what to assert?
+ assertStats(fieldName);
return in.size(fieldName);
}
@Override
public int getDocCount(String fieldName) {
- // TODO: what to assert?
+ assertStats(fieldName);
return in.getDocCount(fieldName);
}
+
+ private void assertStats(String fieldName) {
+ assert in.size(fieldName) >= 0;
+ assert in.getDocCount(fieldName) >= 0;
+ assert in.getDocCount(fieldName) <= in.size(fieldName);
+ assert in.getDocCount(fieldName) <= maxDoc;
+ }
}
static class AssertingPointWriter extends PointWriter {
[7/9] lucene-solr git commit: remove leftover print
Posted by mi...@apache.org.
remove leftover print
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/c16f73aa
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/c16f73aa
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/c16f73aa
Branch: refs/heads/master
Commit: c16f73aa919c5e45cae8e3d125bcbf82f118f62d
Parents: 7dffaa3
Author: Mike McCandless <mi...@apache.org>
Authored: Wed Mar 2 19:29:08 2016 -0500
Committer: Mike McCandless <mi...@apache.org>
Committed: Wed Mar 2 19:29:08 2016 -0500
----------------------------------------------------------------------
lucene/core/src/test/org/apache/lucene/util/bkd/TestBKD.java | 1 -
1 file changed, 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c16f73aa/lucene/core/src/test/org/apache/lucene/util/bkd/TestBKD.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/util/bkd/TestBKD.java b/lucene/core/src/test/org/apache/lucene/util/bkd/TestBKD.java
index a98aa2e..2be2b42 100644
--- a/lucene/core/src/test/org/apache/lucene/util/bkd/TestBKD.java
+++ b/lucene/core/src/test/org/apache/lucene/util/bkd/TestBKD.java
@@ -693,7 +693,6 @@ public class TestBKD extends LuceneTestCase {
long indexFP;
if (toMerge != null) {
- System.out.println("merge " + toMerge.size());
if (segCount > 0) {
docIDBases.add(lastDocIDBase);
toMerge.add(w.finish(out));
[9/9] lucene-solr git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/lucene-solr
Posted by mi...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/lucene-solr
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/4c431388
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/4c431388
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/4c431388
Branch: refs/heads/master
Commit: 4c4313889f4ee9c12ff0ce012f24de4a447c319b
Parents: 2d5519a a212073
Author: Mike McCandless <mi...@apache.org>
Authored: Thu Mar 3 05:48:45 2016 -0500
Committer: Mike McCandless <mi...@apache.org>
Committed: Thu Mar 3 05:48:45 2016 -0500
----------------------------------------------------------------------
lucene/CHANGES.txt | 6 +
lucene/benchmark/conf/spatial.alg | 2 +-
lucene/benchmark/ivy.xml | 2 +-
.../benchmark/byTask/feeds/SpatialDocMaker.java | 8 +-
.../byTask/feeds/SpatialFileQueryMaker.java | 4 +-
.../java/org/apache/lucene/util/Version.java | 7 +
lucene/ivy-versions.properties | 3 +-
lucene/licenses/spatial4j-0.5-tests.jar.sha1 | 1 -
lucene/licenses/spatial4j-0.5.jar.sha1 | 1 -
lucene/licenses/spatial4j-0.6-tests.jar.sha1 | 1 +
lucene/licenses/spatial4j-0.6.jar.sha1 | 1 +
lucene/licenses/spatial4j-NOTICE.txt | 136 ++++++++++++++++++-
lucene/spatial-extras/ivy.xml | 4 +-
.../apache/lucene/spatial/SpatialStrategy.java | 12 +-
.../bbox/BBoxOverlapRatioValueSource.java | 2 +-
.../spatial/bbox/BBoxSimilarityValueSource.java | 4 +-
.../lucene/spatial/bbox/BBoxStrategy.java | 10 +-
.../lucene/spatial/bbox/BBoxValueSource.java | 2 +-
.../composite/CompositeSpatialStrategy.java | 4 +-
.../composite/IntersectsRPTVerifyQuery.java | 4 +-
.../spatial/prefix/AbstractPrefixTreeQuery.java | 2 +-
.../prefix/AbstractVisitingPrefixTreeQuery.java | 4 +-
.../spatial/prefix/ContainsPrefixTreeQuery.java | 4 +-
.../spatial/prefix/HeatmapFacetCounter.java | 10 +-
.../prefix/IntersectsPrefixTreeQuery.java | 4 +-
.../prefix/NumberRangePrefixTreeStrategy.java | 4 +-
.../PointPrefixTreeFieldCacheProvider.java | 2 +-
.../spatial/prefix/PrefixTreeFacetCounter.java | 6 +-
.../spatial/prefix/PrefixTreeStrategy.java | 10 +-
.../prefix/RecursivePrefixTreeStrategy.java | 4 +-
.../prefix/TermQueryPrefixTreeStrategy.java | 6 +-
.../spatial/prefix/WithinPrefixTreeQuery.java | 16 +--
.../apache/lucene/spatial/prefix/tree/Cell.java | 6 +-
.../prefix/tree/DateRangePrefixTree.java | 2 +-
.../spatial/prefix/tree/FilterCellIterator.java | 4 +-
.../spatial/prefix/tree/GeohashPrefixTree.java | 10 +-
.../lucene/spatial/prefix/tree/LegacyCell.java | 6 +-
.../spatial/prefix/tree/LegacyPrefixTree.java | 8 +-
.../prefix/tree/NumberRangePrefixTree.java | 16 +--
.../prefix/tree/PackedQuadPrefixTree.java | 12 +-
.../spatial/prefix/tree/QuadPrefixTree.java | 10 +-
.../spatial/prefix/tree/SpatialPrefixTree.java | 4 +-
.../prefix/tree/SpatialPrefixTreeFactory.java | 4 +-
.../spatial/prefix/tree/TreeCellIterator.java | 4 +-
.../lucene/spatial/query/SpatialArgs.java | 12 +-
.../lucene/spatial/query/SpatialArgsParser.java | 10 +-
.../lucene/spatial/query/SpatialOperation.java | 8 +-
.../serialized/SerializedDVStrategy.java | 10 +-
.../lucene/spatial/spatial4j/Geo3dShape.java | 14 +-
.../util/DistanceToShapeValueSource.java | 10 +-
.../spatial/util/ShapeAreaValueSource.java | 6 +-
.../lucene/spatial/util/ShapeFieldCache.java | 2 +-
.../ShapeFieldCacheDistanceValueSource.java | 6 +-
.../spatial/util/ShapeFieldCacheProvider.java | 2 +-
.../spatial/util/ShapePredicateValueSource.java | 2 +-
.../spatial/vector/DistanceValueSource.java | 4 +-
.../spatial/vector/PointVectorStrategy.java | 16 +--
.../lucene/spatial/DistanceStrategyTest.java | 6 +-
.../apache/lucene/spatial/PortedSolr3Test.java | 8 +-
.../lucene/spatial/QueryEqualsHashCodeTest.java | 4 +-
.../apache/lucene/spatial/SpatialArgsTest.java | 4 +-
.../apache/lucene/spatial/SpatialExample.java | 8 +-
.../apache/lucene/spatial/SpatialTestCase.java | 8 +-
.../apache/lucene/spatial/SpatialTestData.java | 4 +-
.../apache/lucene/spatial/SpatialTestQuery.java | 2 +-
.../apache/lucene/spatial/StrategyTestCase.java | 4 +-
.../lucene/spatial/TestTestFramework.java | 4 +-
.../lucene/spatial/bbox/TestBBoxStrategy.java | 12 +-
.../composite/CompositeStrategyTest.java | 12 +-
.../spatial/prefix/DateNRStrategyTest.java | 2 +-
.../spatial/prefix/HeatmapFacetCounterTest.java | 18 +--
.../lucene/spatial/prefix/JtsPolygonTest.java | 8 +-
.../spatial/prefix/NumberRangeFacetsTest.java | 2 +-
.../RandomSpatialOpFuzzyPrefixTreeTest.java | 24 ++--
.../prefix/RandomSpatialOpStrategyTestCase.java | 2 +-
.../prefix/TestRecursivePrefixTreeStrategy.java | 8 +-
.../prefix/TestTermQueryPrefixGridStrategy.java | 4 +-
.../prefix/tree/DateRangePrefixTreeTest.java | 4 +-
.../prefix/tree/SpatialPrefixTreeTest.java | 8 +-
.../spatial/query/SpatialArgsParserTest.java | 4 +-
.../serialized/SerializedStrategyTest.java | 2 +-
.../lucene/spatial/spatial4j/Geo3dRptTest.java | 10 +-
.../Geo3dShapeRectRelationTestCase.java | 18 +--
.../Geo3dShapeSphereModelRectRelationTest.java | 2 +-
.../spatial4j/RandomizedShapeTestCase.java | 22 +--
.../spatial/spatial4j/geo3d/GeoPointTest.java | 2 +-
.../spatial/vector/TestPointVectorStrategy.java | 6 +-
solr/CHANGES.txt | 3 +
solr/core/ivy.xml | 2 +-
.../handler/component/SpatialHeatmapFacets.java | 4 +-
.../solr/schema/AbstractSpatialFieldType.java | 12 +-
.../AbstractSpatialPrefixTreeFieldType.java | 2 +-
.../java/org/apache/solr/schema/BBoxField.java | 2 +-
.../org/apache/solr/schema/DateRangeField.java | 2 +-
.../org/apache/solr/schema/GeoHashField.java | 8 +-
.../java/org/apache/solr/schema/LatLonType.java | 8 +-
.../java/org/apache/solr/schema/PointType.java | 2 +-
.../schema/RptWithGeometrySpatialField.java | 6 +-
.../apache/solr/search/ValueSourceParser.java | 2 +-
.../distance/GeoDistValueSourceParser.java | 8 +-
.../function/distance/GeohashFunction.java | 2 +-
.../distance/GeohashHaversineFunction.java | 10 +-
.../distance/HaversineConstFunction.java | 4 +-
.../function/distance/HaversineFunction.java | 2 +-
.../org/apache/solr/util/DistanceUnits.java | 2 +-
.../java/org/apache/solr/util/SpatialUtils.java | 18 +--
.../solr/collection1/conf/schema_latest.xml | 2 +-
.../apache/solr/search/TestSolr4Spatial.java | 8 +-
.../function/distance/DistanceFunctionTest.java | 4 +-
.../org/apache/solr/util/DistanceUnitsTest.java | 2 +-
solr/licenses/spatial4j-0.5.jar.sha1 | 1 -
solr/licenses/spatial4j-0.6.jar.sha1 | 1 +
solr/licenses/spatial4j-NOTICE.txt | 136 ++++++++++++++++++-
113 files changed, 609 insertions(+), 340 deletions(-)
----------------------------------------------------------------------
[4/9] lucene-solr git commit: add missing delegations
Posted by mi...@apache.org.
add missing delegations
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/5b1b1838
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/5b1b1838
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/5b1b1838
Branch: refs/heads/master
Commit: 5b1b183878a576901b8c6d1b04819c08b2576ef0
Parents: b5475d1
Author: Mike McCandless <mi...@apache.org>
Authored: Wed Mar 2 18:45:03 2016 -0500
Committer: Mike McCandless <mi...@apache.org>
Committed: Wed Mar 2 18:45:03 2016 -0500
----------------------------------------------------------------------
.../java/org/apache/lucene/index/SortingLeafReader.java | 10 ++++++++++
1 file changed, 10 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5b1b1838/lucene/misc/src/java/org/apache/lucene/index/SortingLeafReader.java
----------------------------------------------------------------------
diff --git a/lucene/misc/src/java/org/apache/lucene/index/SortingLeafReader.java b/lucene/misc/src/java/org/apache/lucene/index/SortingLeafReader.java
index 12cee20..683c5c2 100644
--- a/lucene/misc/src/java/org/apache/lucene/index/SortingLeafReader.java
+++ b/lucene/misc/src/java/org/apache/lucene/index/SortingLeafReader.java
@@ -303,6 +303,16 @@ public class SortingLeafReader extends FilterLeafReader {
public int getBytesPerDimension(String fieldName) throws IOException {
return in.getBytesPerDimension(fieldName);
}
+
+ @Override
+ public long size(String fieldName) {
+ return in.size(fieldName);
+ }
+
+ @Override
+ public int getDocCount(String fieldName) {
+ return in.getDocCount(fieldName);
+ }
}
private static class SortingSortedDocValues extends SortedDocValues {
[6/9] lucene-solr git commit: also test getDocCount on schema ghost
Posted by mi...@apache.org.
also test getDocCount on schema ghost
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/7dffaa30
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/7dffaa30
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/7dffaa30
Branch: refs/heads/master
Commit: 7dffaa30faa3995db120a31abf4828183d2b64b2
Parents: e4964ef
Author: Mike McCandless <mi...@apache.org>
Authored: Wed Mar 2 18:58:21 2016 -0500
Committer: Mike McCandless <mi...@apache.org>
Committed: Wed Mar 2 18:58:21 2016 -0500
----------------------------------------------------------------------
lucene/core/src/test/org/apache/lucene/index/TestPointValues.java | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7dffaa30/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java b/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java
index 506d58c..9aafb3f 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java
@@ -558,6 +558,7 @@ public class TestPointValues extends LuceneTestCase {
w.forceMerge(1);
DirectoryReader r = w.getReader();
assertEquals(0, r.leaves().get(0).reader().getPointValues().size("int"));
+ assertEquals(0, r.leaves().get(0).reader().getPointValues().getDocCount("int"));
w.close();
r.close();
dir.close();
[5/9] lucene-solr git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/lucene-solr
Posted by mi...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/lucene-solr
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/e4964efd
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/e4964efd
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/e4964efd
Branch: refs/heads/master
Commit: e4964efdf400e777fac9f69595ef0dfbbc1e2945
Parents: 5b1b183 9f5bbc2
Author: Mike McCandless <mi...@apache.org>
Authored: Wed Mar 2 18:55:33 2016 -0500
Committer: Mike McCandless <mi...@apache.org>
Committed: Wed Mar 2 18:55:33 2016 -0500
----------------------------------------------------------------------
.../org/apache/lucene/document/BinaryPoint.java | 82 ++--
.../org/apache/lucene/document/DoublePoint.java | 84 ++--
.../org/apache/lucene/document/FloatPoint.java | 84 ++--
.../org/apache/lucene/document/IntPoint.java | 84 ++--
.../org/apache/lucene/document/LongPoint.java | 84 ++--
.../apache/lucene/search/PointInSetQuery.java | 11 +-
.../apache/lucene/search/PointRangeQuery.java | 170 ++------
.../index/TestDemoParallelLeafReader.java | 2 +-
.../apache/lucene/search/TestPointQueries.java | 410 +++++++++----------
.../TestUsageTrackingFilterCachingPolicy.java | 2 +-
.../demo/facet/DistanceFacetsExample.java | 8 +-
.../lucene/demo/facet/RangeFacetsExample.java | 3 +-
.../apache/lucene/facet/range/DoubleRange.java | 33 +-
.../facet/range/DoubleRangeFacetCounts.java | 4 +-
.../apache/lucene/facet/range/LongRange.java | 25 +-
.../lucene/facet/range/LongRangeCounter.java | 14 +-
.../facet/range/TestRangeFacetCounts.java | 20 +-
.../search/highlight/HighlighterTest.java | 2 +-
.../apache/lucene/document/BigIntegerPoint.java | 97 +++--
.../lucene/document/InetAddressPoint.java | 66 ++-
.../org/apache/lucene/document/LatLonPoint.java | 11 +-
.../lucene/document/TestBigIntegerPoint.java | 12 +-
.../lucene/document/TestInetAddressPoint.java | 4 +-
.../apache/lucene/document/TestLatLonPoint.java | 2 +-
.../lucene/search/TestDocValuesRangeQuery.java | 26 +-
.../lucene/search/TestLatLonPointQueries.java | 8 +-
.../spatial/util/BaseGeoPointTestCase.java | 74 +++-
.../suggest/document/TestSuggestField.java | 2 +-
28 files changed, 636 insertions(+), 788 deletions(-)
----------------------------------------------------------------------