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/09/21 13:42:14 UTC
[10/16] lucene-solr:master: LUCENE-7407: switch doc values usage to
an iterator API, based on DocIdSetIterator, instead of random acces,
freeing codecs for future improvements
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestDemoParallelLeafReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestDemoParallelLeafReader.java b/lucene/core/src/test/org/apache/lucene/index/TestDemoParallelLeafReader.java
index 0dc654c..7901214 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestDemoParallelLeafReader.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestDemoParallelLeafReader.java
@@ -23,7 +23,9 @@ import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
+import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -32,10 +34,11 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicLong;
import java.util.regex.Pattern;
-import org.apache.lucene.document.LongPoint;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
+import org.apache.lucene.document.LongPoint;
import org.apache.lucene.document.NumericDocValuesField;
+import org.apache.lucene.search.FieldDoc;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.MatchAllDocsQuery;
import org.apache.lucene.search.ScoreDoc;
@@ -722,9 +725,10 @@ public class TestDemoParallelLeafReader extends LuceneTestCase {
assertNotNull("oldSchemaGen=" + oldSchemaGen, oldValues);
for(int i=0;i<maxDoc;i++) {
// TODO: is this still O(blockSize^2)?
+ assertEquals(i, oldValues.nextDoc());
Document oldDoc = reader.document(i);
Document newDoc = new Document();
- newDoc.add(new NumericDocValuesField("number_" + newSchemaGen, oldValues.get(i)));
+ newDoc.add(new NumericDocValuesField("number_" + newSchemaGen, oldValues.longValue()));
w.addDocument(newDoc);
}
}
@@ -752,11 +756,12 @@ public class TestDemoParallelLeafReader extends LuceneTestCase {
for(int i=0;i<maxDoc;i++) {
Document oldDoc = r.document(i);
long value = Long.parseLong(oldDoc.get("text").split(" ")[1]);
- if (value != numbers.get(i)) {
- if (DEBUG) System.out.println("FAIL: docID=" + i + " " + oldDoc+ " value=" + value + " number=" + numbers.get(i) + " numbers=" + numbers);
+ assertEquals(i, numbers.nextDoc());
+ if (value != numbers.longValue()) {
+ if (DEBUG) System.out.println("FAIL: docID=" + i + " " + oldDoc+ " value=" + value + " number=" + numbers.longValue() + " numbers=" + numbers);
failed = true;
} else if (failed) {
- if (DEBUG) System.out.println("OK: docID=" + i + " " + oldDoc+ " value=" + value + " number=" + numbers.get(i));
+ if (DEBUG) System.out.println("OK: docID=" + i + " " + oldDoc+ " value=" + value + " number=" + numbers.longValue());
}
}
assertFalse("FAILED field=" + fieldName + " r=" + r, failed);
@@ -817,7 +822,8 @@ public class TestDemoParallelLeafReader extends LuceneTestCase {
// TODO: is this still O(blockSize^2)?
Document oldDoc = reader.document(i);
Document newDoc = new Document();
- newDoc.add(new NumericDocValuesField("number", newSchemaGen*(oldValues.get(i)/oldSchemaGen)));
+ assertEquals(i, oldValues.nextDoc());
+ newDoc.add(new NumericDocValuesField("number", newSchemaGen*(oldValues.longValue()/oldSchemaGen)));
w.addDocument(newDoc);
}
}
@@ -850,11 +856,12 @@ public class TestDemoParallelLeafReader extends LuceneTestCase {
Document oldDoc = r.document(i);
long value = Long.parseLong(oldDoc.get("text").split(" ")[1]);
value *= schemaGen;
- if (value != numbers.get(i)) {
- System.out.println("FAIL: docID=" + i + " " + oldDoc+ " value=" + value + " number=" + numbers.get(i) + " numbers=" + numbers);
+ assertEquals(i, numbers.nextDoc());
+ if (value != numbers.longValue()) {
+ System.out.println("FAIL: docID=" + i + " " + oldDoc+ " value=" + value + " number=" + numbers.longValue() + " numbers=" + numbers);
failed = true;
} else if (failed) {
- System.out.println("OK: docID=" + i + " " + oldDoc+ " value=" + value + " number=" + numbers.get(i));
+ System.out.println("OK: docID=" + i + " " + oldDoc+ " value=" + value + " number=" + numbers.longValue());
}
}
assertFalse("FAILED r=" + r, failed);
@@ -1110,7 +1117,8 @@ public class TestDemoParallelLeafReader extends LuceneTestCase {
for(int i=0;i<maxDoc;i++) {
Document doc = leaf.document(i);
long value = Long.parseLong(doc.get("text").split(" ")[1]);
- long dvValue = numbers.get(i);
+ assertEquals(i, numbers.nextDoc());
+ long dvValue = numbers.longValue();
if (value == 0) {
assertEquals(0, dvValue);
} else {
@@ -1278,11 +1286,12 @@ public class TestDemoParallelLeafReader extends LuceneTestCase {
for(int i=0;i<maxDoc;i++) {
Document oldDoc = r.document(i);
long value = multiplier * Long.parseLong(oldDoc.get("text").split(" ")[1]);
- if (value != numbers.get(i)) {
- System.out.println("FAIL: docID=" + i + " " + oldDoc+ " value=" + value + " number=" + numbers.get(i) + " numbers=" + numbers);
+ assertEquals(i, numbers.nextDoc());
+ if (value != numbers.longValue()) {
+ System.out.println("FAIL: docID=" + i + " " + oldDoc+ " value=" + value + " number=" + numbers.longValue() + " numbers=" + numbers);
failed = true;
} else if (failed) {
- System.out.println("OK: docID=" + i + " " + oldDoc+ " value=" + value + " number=" + numbers.get(i));
+ System.out.println("OK: docID=" + i + " " + oldDoc+ " value=" + value + " number=" + numbers.longValue());
}
}
if (failed) {
@@ -1304,18 +1313,16 @@ public class TestDemoParallelLeafReader extends LuceneTestCase {
private static void testNumericDVSort(IndexSearcher s) throws IOException {
// Confirm we can sort by the new DV field:
TopDocs hits = s.search(new MatchAllDocsQuery(), 100, new Sort(new SortField("number", SortField.Type.LONG)));
- NumericDocValues numbers = MultiDocValues.getNumericValues(s.getIndexReader(), "number");
long last = Long.MIN_VALUE;
for(ScoreDoc scoreDoc : hits.scoreDocs) {
long value = Long.parseLong(s.doc(scoreDoc.doc).get("text").split(" ")[1]);
assertTrue(value >= last);
- assertEquals(value, numbers.get(scoreDoc.doc));
+ assertEquals(value, ((Long) ((FieldDoc) scoreDoc).fields[0]).longValue());
last = value;
}
}
private static void testPointRangeQuery(IndexSearcher s) throws IOException {
- NumericDocValues numbers = MultiDocValues.getNumericValues(s.getIndexReader(), "number");
for(int i=0;i<100;i++) {
// Confirm we can range search by the new indexed (numeric) field:
long min = random().nextLong();
@@ -1331,7 +1338,24 @@ public class TestDemoParallelLeafReader extends LuceneTestCase {
long value = Long.parseLong(s.doc(scoreDoc.doc).get("text").split(" ")[1]);
assertTrue(value >= min);
assertTrue(value <= max);
- assertEquals(value, numbers.get(scoreDoc.doc));
+ }
+
+ Arrays.sort(hits.scoreDocs,
+ new Comparator<ScoreDoc>() {
+ @Override
+ public int compare(ScoreDoc a, ScoreDoc b) {
+ return a.doc - b.doc;
+ }
+ });
+
+ NumericDocValues numbers = MultiDocValues.getNumericValues(s.getIndexReader(), "number");
+ for(ScoreDoc hit : hits.scoreDocs) {
+ if (numbers.docID() < hit.doc) {
+ numbers.advance(hit.doc);
+ }
+ assertEquals(hit.doc, numbers.docID());
+ long value = Long.parseLong(s.doc(hit.doc).get("text").split(" ")[1]);
+ assertEquals(value, numbers.longValue());
}
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java b/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java
index 8c7090e..9ac719e 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java
@@ -46,6 +46,8 @@ import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.TestUtil;
import org.junit.Assume;
+import static org.apache.lucene.search.DocIdSetIterator.NO_MORE_DOCS;
+
public class TestDirectoryReader extends LuceneTestCase {
public void testDocument() throws IOException {
@@ -573,8 +575,13 @@ public class TestDirectoryReader extends LuceneTestCase {
NumericDocValues norms2 = MultiDocValues.getNormValues(index2, curField);
if (norms1 != null && norms2 != null) {
// todo: generalize this (like TestDuelingCodecs assert)
- for (int i = 0; i < index1.maxDoc(); i++) {
- assertEquals("Norm different for doc " + i + " and field '" + curField + "'.", norms1.get(i), norms2.get(i));
+ while (true) {
+ int docID = norms1.nextDoc();
+ assertEquals(docID, norms2.nextDoc());
+ if (docID == NO_MORE_DOCS) {
+ break;
+ }
+ assertEquals("Norm different for doc " + docID + " and field '" + curField + "'.", norms1.longValue(), norms2.longValue());
}
} else {
assertNull(norms1);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java b/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java
index 0138b90..f415381 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java
@@ -204,6 +204,7 @@ public class TestDirectoryReaderReopen extends LuceneTestCase {
final Directory dir = newDirectory();
// NOTE: this also controls the number of threads!
final int n = TestUtil.nextInt(random(), 20, 40);
+
IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
for (int i = 0; i < n; i++) {
writer.addDocument(createDocument(i, 3));
@@ -901,9 +902,14 @@ public class TestDirectoryReaderReopen extends LuceneTestCase {
// sharing same core
assertSame(latest.leaves().get(0).reader().getCoreCacheKey(), oldest.leaves().get(0).reader().getCoreCacheKey());
-
- assertEquals(1, getOnlyLeafReader(oldest).getNumericDocValues("dv").get(0));
- assertEquals(2, getOnlyLeafReader(latest).getNumericDocValues("dv").get(0));
+
+ NumericDocValues values = getOnlyLeafReader(oldest).getNumericDocValues("dv");
+ assertEquals(0, values.nextDoc());
+ assertEquals(1, values.longValue());
+
+ values = getOnlyLeafReader(latest).getNumericDocValues("dv");
+ assertEquals(0, values.nextDoc());
+ assertEquals(2, values.longValue());
latest.close();
oldest.close();
@@ -943,9 +949,14 @@ public class TestDirectoryReaderReopen extends LuceneTestCase {
// sharing same core
assertSame(latest.leaves().get(0).reader().getCoreCacheKey(), oldest.leaves().get(0).reader().getCoreCacheKey());
-
- assertEquals(1, getOnlyLeafReader(oldest).getNumericDocValues("dv").get(0));
- assertEquals(2, getOnlyLeafReader(latest).getNumericDocValues("dv").get(0));
+
+ NumericDocValues values = getOnlyLeafReader(oldest).getNumericDocValues("dv");
+ assertEquals(0, values.nextDoc());
+ assertEquals(1, values.longValue());
+
+ values = getOnlyLeafReader(latest).getNumericDocValues("dv");
+ assertEquals(0, values.nextDoc());
+ assertEquals(2, values.longValue());
latest.close();
oldest.close();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestDocValues.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestDocValues.java b/lucene/core/src/test/org/apache/lucene/index/TestDocValues.java
index 2266caf..1f7ef30 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestDocValues.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestDocValues.java
@@ -49,7 +49,6 @@ public class TestDocValues extends LuceneTestCase {
assertNotNull(DocValues.getSorted(r, "bogus"));
assertNotNull(DocValues.getSortedSet(r, "bogus"));
assertNotNull(DocValues.getSortedNumeric(r, "bogus"));
- assertNotNull(DocValues.getDocsWithField(r, "bogus"));
dr.close();
iw.close();
@@ -84,9 +83,6 @@ public class TestDocValues extends LuceneTestCase {
expectThrows(IllegalStateException.class, () -> {
DocValues.getSortedNumeric(r, "foo");
});
- expectThrows(IllegalStateException.class, () -> {
- DocValues.getDocsWithField(r, "foo");
- });
dr.close();
iw.close();
@@ -108,7 +104,6 @@ public class TestDocValues extends LuceneTestCase {
// ok
assertNotNull(DocValues.getNumeric(r, "foo"));
assertNotNull(DocValues.getSortedNumeric(r, "foo"));
- assertNotNull(DocValues.getDocsWithField(r, "foo"));
// errors
expectThrows(IllegalStateException.class, () -> {
@@ -140,7 +135,6 @@ public class TestDocValues extends LuceneTestCase {
// ok
assertNotNull(DocValues.getBinary(r, "foo"));
- assertNotNull(DocValues.getDocsWithField(r, "foo"));
// errors
expectThrows(IllegalStateException.class, () -> {
@@ -177,7 +171,6 @@ public class TestDocValues extends LuceneTestCase {
assertNotNull(DocValues.getBinary(r, "foo"));
assertNotNull(DocValues.getSorted(r, "foo"));
assertNotNull(DocValues.getSortedSet(r, "foo"));
- assertNotNull(DocValues.getDocsWithField(r, "foo"));
// errors
expectThrows(IllegalStateException.class, () -> {
@@ -206,7 +199,6 @@ public class TestDocValues extends LuceneTestCase {
// ok
assertNotNull(DocValues.getSortedSet(r, "foo"));
- assertNotNull(DocValues.getDocsWithField(r, "foo"));
// errors
expectThrows(IllegalStateException.class, () -> {
@@ -241,11 +233,10 @@ public class TestDocValues extends LuceneTestCase {
// ok
assertNotNull(DocValues.getSortedNumeric(r, "foo"));
- assertNotNull(DocValues.getDocsWithField(r, "foo"));
// errors
expectThrows(IllegalStateException.class, () -> {
- DocValues.getBinary(r, "foo");
+ DocValues.getBinary(r, "foo");
});
expectThrows(IllegalStateException.class, () -> {
DocValues.getNumeric(r, "foo");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java b/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java
index 2e0cbd9..b3260d0 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java
@@ -35,7 +35,6 @@ import org.apache.lucene.document.SortedSetDocValuesField;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.Bits;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.TestUtil;
@@ -109,7 +108,9 @@ public class TestDocValuesIndexing extends LuceneTestCase {
DirectoryReader r = w.getReader();
w.close();
- assertEquals(17, DocValues.getNumeric(getOnlyLeafReader(r), "field").get(0));
+ NumericDocValues values = DocValues.getNumeric(getOnlyLeafReader(r), "field");
+ assertEquals(0, values.nextDoc());
+ assertEquals(17, values.longValue());
r.close();
d.close();
}
@@ -130,7 +131,9 @@ public class TestDocValuesIndexing extends LuceneTestCase {
DirectoryReader r = w.getReader();
w.close();
- assertEquals(17, DocValues.getNumeric(getOnlyLeafReader(r), "field").get(0));
+ NumericDocValues values = DocValues.getNumeric(getOnlyLeafReader(r), "field");
+ assertEquals(0, values.nextDoc());
+ assertEquals(17, values.longValue());
r.close();
d.close();
}
@@ -150,7 +153,9 @@ public class TestDocValuesIndexing extends LuceneTestCase {
});
DirectoryReader r = w.getReader();
- assertEquals(17, getOnlyLeafReader(r).getNumericDocValues("field").get(0));
+ NumericDocValues values = DocValues.getNumeric(getOnlyLeafReader(r), "field");
+ assertEquals(0, values.nextDoc());
+ assertEquals(17, values.longValue());
r.close();
w.close();
d.close();
@@ -171,14 +176,15 @@ public class TestDocValuesIndexing extends LuceneTestCase {
w.addDocument(doc);
w.forceMerge(1);
DirectoryReader r = w.getReader();
- BinaryDocValues s = DocValues.getSorted(getOnlyLeafReader(r), "field");
-
- BytesRef bytes1 = s.get(0);
+ BinaryDocValues s = DocValues.getBinary(getOnlyLeafReader(r), "field");
+ assertEquals(0, s.nextDoc());
+ BytesRef bytes1 = s.binaryValue();
assertEquals(bytes.length, bytes1.length);
bytes[0] = 0;
assertEquals(b, bytes1);
- bytes1 = s.get(1);
+ assertEquals(1, s.nextDoc());
+ bytes1 = s.binaryValue();
assertEquals(bytes.length, bytes1.length);
bytes[0] = 1;
assertEquals(b, bytes1);
@@ -204,7 +210,8 @@ public class TestDocValuesIndexing extends LuceneTestCase {
assertTrue(dvInfo.getDocValuesType() != DocValuesType.NONE);
NumericDocValues dv = MultiDocValues.getNumericValues(r, "dv");
for (int i = 0; i < 50; i++) {
- assertEquals(i, dv.get(i));
+ assertEquals(i, dv.nextDoc());
+ assertEquals(i, dv.longValue());
Document d = r.document(i);
// cannot use d.get("dv") due to another bug!
assertNull(d.getField("dv"));
@@ -815,9 +822,6 @@ public class TestDocValuesIndexing extends LuceneTestCase {
LeafReader subR = r.leaves().get(0).reader();
assertEquals(2, subR.numDocs());
- Bits bits = DocValues.getDocsWithField(subR, "dv");
- assertTrue(bits.get(0));
- assertTrue(bits.get(1));
r.close();
dir.close();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java
index 5045396..3e72a7e 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java
@@ -67,7 +67,6 @@ import org.apache.lucene.search.TopDocs;
import org.apache.lucene.search.TopFieldCollector;
import org.apache.lucene.search.similarities.Similarity;
import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.Bits;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.FixedBitSet;
import org.apache.lucene.util.IOUtils;
@@ -75,6 +74,8 @@ import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.NumericUtils;
import org.apache.lucene.util.TestUtil;
+import static org.apache.lucene.search.DocIdSetIterator.NO_MORE_DOCS;
+
public class TestIndexSorting extends LuceneTestCase {
public void testBasicString() throws Exception {
@@ -103,9 +104,12 @@ public class TestIndexSorting extends LuceneTestCase {
LeafReader leaf = getOnlyLeafReader(r);
assertEquals(3, leaf.maxDoc());
SortedDocValues values = leaf.getSortedDocValues("foo");
- assertEquals("aaa", values.get(0).utf8ToString());
- assertEquals("mmm", values.get(1).utf8ToString());
- assertEquals("zzz", values.get(2).utf8ToString());
+ assertEquals(0, values.nextDoc());
+ assertEquals("aaa", values.binaryValue().utf8ToString());
+ assertEquals(1, values.nextDoc());
+ assertEquals("mmm", values.binaryValue().utf8ToString());
+ assertEquals(2, values.nextDoc());
+ assertEquals("zzz", values.binaryValue().utf8ToString());
r.close();
w.close();
dir.close();
@@ -138,9 +142,11 @@ public class TestIndexSorting extends LuceneTestCase {
LeafReader leaf = getOnlyLeafReader(r);
assertEquals(3, leaf.maxDoc());
SortedDocValues values = leaf.getSortedDocValues("foo");
- assertEquals(-1, values.getOrd(0));
- assertEquals("mmm", values.get(1).utf8ToString());
- assertEquals("zzz", values.get(2).utf8ToString());
+ // docID 0 is missing:
+ assertEquals(1, values.nextDoc());
+ assertEquals("mmm", values.binaryValue().utf8ToString());
+ assertEquals(2, values.nextDoc());
+ assertEquals("zzz", values.binaryValue().utf8ToString());
r.close();
w.close();
dir.close();
@@ -173,9 +179,11 @@ public class TestIndexSorting extends LuceneTestCase {
LeafReader leaf = getOnlyLeafReader(r);
assertEquals(3, leaf.maxDoc());
SortedDocValues values = leaf.getSortedDocValues("foo");
- assertEquals("mmm", values.get(0).utf8ToString());
- assertEquals("zzz", values.get(1).utf8ToString());
- assertEquals(-1, values.getOrd(2));
+ assertEquals(0, values.nextDoc());
+ assertEquals("mmm", values.binaryValue().utf8ToString());
+ assertEquals(1, values.nextDoc());
+ assertEquals("zzz", values.binaryValue().utf8ToString());
+ assertEquals(NO_MORE_DOCS, values.nextDoc());
r.close();
w.close();
dir.close();
@@ -207,9 +215,12 @@ public class TestIndexSorting extends LuceneTestCase {
LeafReader leaf = getOnlyLeafReader(r);
assertEquals(3, leaf.maxDoc());
NumericDocValues values = leaf.getNumericDocValues("foo");
- assertEquals(-1, values.get(0));
- assertEquals(7, values.get(1));
- assertEquals(18, values.get(2));
+ assertEquals(0, values.nextDoc());
+ assertEquals(-1, values.longValue());
+ assertEquals(1, values.nextDoc());
+ assertEquals(7, values.longValue());
+ assertEquals(2, values.nextDoc());
+ assertEquals(18, values.longValue());
r.close();
w.close();
dir.close();
@@ -242,11 +253,11 @@ public class TestIndexSorting extends LuceneTestCase {
LeafReader leaf = getOnlyLeafReader(r);
assertEquals(3, leaf.maxDoc());
NumericDocValues values = leaf.getNumericDocValues("foo");
- Bits docsWithField = leaf.getDocsWithField("foo");
- assertEquals(0, values.get(0));
- assertFalse(docsWithField.get(0));
- assertEquals(7, values.get(1));
- assertEquals(18, values.get(2));
+ // docID 0 has no value
+ assertEquals(1, values.nextDoc());
+ assertEquals(7, values.longValue());
+ assertEquals(2, values.nextDoc());
+ assertEquals(18, values.longValue());
r.close();
w.close();
dir.close();
@@ -279,11 +290,11 @@ public class TestIndexSorting extends LuceneTestCase {
LeafReader leaf = getOnlyLeafReader(r);
assertEquals(3, leaf.maxDoc());
NumericDocValues values = leaf.getNumericDocValues("foo");
- Bits docsWithField = leaf.getDocsWithField("foo");
- assertEquals(7, values.get(0));
- assertEquals(18, values.get(1));
- assertEquals(0, values.get(2));
- assertFalse(docsWithField.get(2));
+ assertEquals(0, values.nextDoc());
+ assertEquals(7, values.longValue());
+ assertEquals(1, values.nextDoc());
+ assertEquals(18, values.longValue());
+ assertEquals(NO_MORE_DOCS, values.nextDoc());
r.close();
w.close();
dir.close();
@@ -315,9 +326,12 @@ public class TestIndexSorting extends LuceneTestCase {
LeafReader leaf = getOnlyLeafReader(r);
assertEquals(3, leaf.maxDoc());
NumericDocValues values = leaf.getNumericDocValues("foo");
- assertEquals(-1, values.get(0));
- assertEquals(7, values.get(1));
- assertEquals(18, values.get(2));
+ assertEquals(0, values.nextDoc());
+ assertEquals(-1, values.longValue());
+ assertEquals(1, values.nextDoc());
+ assertEquals(7, values.longValue());
+ assertEquals(2, values.nextDoc());
+ assertEquals(18, values.longValue());
r.close();
w.close();
dir.close();
@@ -350,11 +364,10 @@ public class TestIndexSorting extends LuceneTestCase {
LeafReader leaf = getOnlyLeafReader(r);
assertEquals(3, leaf.maxDoc());
NumericDocValues values = leaf.getNumericDocValues("foo");
- Bits docsWithField = leaf.getDocsWithField("foo");
- assertEquals(0, values.get(0));
- assertFalse(docsWithField.get(0));
- assertEquals(7, values.get(1));
- assertEquals(18, values.get(2));
+ assertEquals(1, values.nextDoc());
+ assertEquals(7, values.longValue());
+ assertEquals(2, values.nextDoc());
+ assertEquals(18, values.longValue());
r.close();
w.close();
dir.close();
@@ -387,11 +400,11 @@ public class TestIndexSorting extends LuceneTestCase {
LeafReader leaf = getOnlyLeafReader(r);
assertEquals(3, leaf.maxDoc());
NumericDocValues values = leaf.getNumericDocValues("foo");
- Bits docsWithField = leaf.getDocsWithField("foo");
- assertEquals(7, values.get(0));
- assertEquals(18, values.get(1));
- assertEquals(0, values.get(2));
- assertFalse(docsWithField.get(2));
+ assertEquals(0, values.nextDoc());
+ assertEquals(7, values.longValue());
+ assertEquals(1, values.nextDoc());
+ assertEquals(18, values.longValue());
+ assertEquals(NO_MORE_DOCS, values.nextDoc());
r.close();
w.close();
dir.close();
@@ -423,9 +436,12 @@ public class TestIndexSorting extends LuceneTestCase {
LeafReader leaf = getOnlyLeafReader(r);
assertEquals(3, leaf.maxDoc());
NumericDocValues values = leaf.getNumericDocValues("foo");
- assertEquals(-1.0, Double.longBitsToDouble(values.get(0)), 0.0);
- assertEquals(7.0, Double.longBitsToDouble(values.get(1)), 0.0);
- assertEquals(18.0, Double.longBitsToDouble(values.get(2)), 0.0);
+ assertEquals(0, values.nextDoc());
+ assertEquals(-1.0, Double.longBitsToDouble(values.longValue()), 0.0);
+ assertEquals(1, values.nextDoc());
+ assertEquals(7.0, Double.longBitsToDouble(values.longValue()), 0.0);
+ assertEquals(2, values.nextDoc());
+ assertEquals(18.0, Double.longBitsToDouble(values.longValue()), 0.0);
r.close();
w.close();
dir.close();
@@ -458,11 +474,10 @@ public class TestIndexSorting extends LuceneTestCase {
LeafReader leaf = getOnlyLeafReader(r);
assertEquals(3, leaf.maxDoc());
NumericDocValues values = leaf.getNumericDocValues("foo");
- Bits docsWithField = leaf.getDocsWithField("foo");
- assertEquals(0.0, Double.longBitsToDouble(values.get(0)), 0.0);
- assertFalse(docsWithField.get(0));
- assertEquals(7.0, Double.longBitsToDouble(values.get(1)), 0.0);
- assertEquals(18.0, Double.longBitsToDouble(values.get(2)), 0.0);
+ assertEquals(1, values.nextDoc());
+ assertEquals(7.0, Double.longBitsToDouble(values.longValue()), 0.0);
+ assertEquals(2, values.nextDoc());
+ assertEquals(18.0, Double.longBitsToDouble(values.longValue()), 0.0);
r.close();
w.close();
dir.close();
@@ -495,11 +510,11 @@ public class TestIndexSorting extends LuceneTestCase {
LeafReader leaf = getOnlyLeafReader(r);
assertEquals(3, leaf.maxDoc());
NumericDocValues values = leaf.getNumericDocValues("foo");
- Bits docsWithField = leaf.getDocsWithField("foo");
- assertEquals(7.0, Double.longBitsToDouble(values.get(0)), 0.0);
- assertEquals(18.0, Double.longBitsToDouble(values.get(1)), 0.0);
- assertEquals(0.0, Double.longBitsToDouble(values.get(2)), 0.0);
- assertFalse(docsWithField.get(2));
+ assertEquals(0, values.nextDoc());
+ assertEquals(7.0, Double.longBitsToDouble(values.longValue()), 0.0);
+ assertEquals(1, values.nextDoc());
+ assertEquals(18.0, Double.longBitsToDouble(values.longValue()), 0.0);
+ assertEquals(NO_MORE_DOCS, values.nextDoc());
r.close();
w.close();
dir.close();
@@ -531,9 +546,12 @@ public class TestIndexSorting extends LuceneTestCase {
LeafReader leaf = getOnlyLeafReader(r);
assertEquals(3, leaf.maxDoc());
NumericDocValues values = leaf.getNumericDocValues("foo");
- assertEquals(-1.0f, Float.intBitsToFloat((int) values.get(0)), 0.0f);
- assertEquals(7.0f, Float.intBitsToFloat((int) values.get(1)), 0.0f);
- assertEquals(18.0f, Float.intBitsToFloat((int) values.get(2)), 0.0f);
+ assertEquals(0, values.nextDoc());
+ assertEquals(-1.0f, Float.intBitsToFloat((int) values.longValue()), 0.0f);
+ assertEquals(1, values.nextDoc());
+ assertEquals(7.0f, Float.intBitsToFloat((int) values.longValue()), 0.0f);
+ assertEquals(2, values.nextDoc());
+ assertEquals(18.0f, Float.intBitsToFloat((int) values.longValue()), 0.0f);
r.close();
w.close();
dir.close();
@@ -566,11 +584,10 @@ public class TestIndexSorting extends LuceneTestCase {
LeafReader leaf = getOnlyLeafReader(r);
assertEquals(3, leaf.maxDoc());
NumericDocValues values = leaf.getNumericDocValues("foo");
- Bits docsWithField = leaf.getDocsWithField("foo");
- assertEquals(0.0f, Float.intBitsToFloat((int) values.get(0)), 0.0f);
- assertFalse(docsWithField.get(0));
- assertEquals(7.0f, Float.intBitsToFloat((int) values.get(1)), 0.0f);
- assertEquals(18.0f, Float.intBitsToFloat((int) values.get(2)), 0.0f);
+ assertEquals(1, values.nextDoc());
+ assertEquals(7.0f, Float.intBitsToFloat((int) values.longValue()), 0.0f);
+ assertEquals(2, values.nextDoc());
+ assertEquals(18.0f, Float.intBitsToFloat((int) values.longValue()), 0.0f);
r.close();
w.close();
dir.close();
@@ -603,11 +620,11 @@ public class TestIndexSorting extends LuceneTestCase {
LeafReader leaf = getOnlyLeafReader(r);
assertEquals(3, leaf.maxDoc());
NumericDocValues values = leaf.getNumericDocValues("foo");
- Bits docsWithField = leaf.getDocsWithField("foo");
- assertEquals(7.0f, Float.intBitsToFloat((int) values.get(0)), 0.0f);
- assertEquals(18.0f, Float.intBitsToFloat((int) values.get(1)), 0.0f);
- assertEquals(0.0f, Float.intBitsToFloat((int) values.get(2)), 0.0f);
- assertFalse(docsWithField.get(2));
+ assertEquals(0, values.nextDoc());
+ assertEquals(7.0f, Float.intBitsToFloat((int) values.longValue()), 0.0f);
+ assertEquals(1, values.nextDoc());
+ assertEquals(18.0f, Float.intBitsToFloat((int) values.longValue()), 0.0f);
+ assertEquals(NO_MORE_DOCS, values.nextDoc());
r.close();
w.close();
dir.close();
@@ -653,7 +670,8 @@ public class TestIndexSorting extends LuceneTestCase {
final NumericDocValues values = leaf.getNumericDocValues("foo");
long previous = Long.MIN_VALUE;
for (int i = 0; i < leaf.maxDoc(); ++i) {
- final long value = values.get(i);
+ assertEquals(i, values.nextDoc());
+ final long value = values.longValue();
assertTrue(value >= previous);
previous = value;
}
@@ -672,7 +690,9 @@ public class TestIndexSorting extends LuceneTestCase {
assertEquals(0, topDocs.totalHits);
} else {
assertEquals(1, topDocs.totalHits);
- assertEquals(i, MultiDocValues.getNumericValues(reader, "id").get(topDocs.scoreDocs[0].doc));
+ NumericDocValues values = MultiDocValues.getNumericValues(reader, "id");
+ assertEquals(topDocs.scoreDocs[0].doc, values.advance(topDocs.scoreDocs[0].doc));
+ assertEquals(i, values.longValue());
Document document = reader.document(topDocs.scoreDocs[0].doc);
assertEquals(Integer.toString(i), document.get("id"));
}
@@ -746,6 +766,7 @@ public class TestIndexSorting extends LuceneTestCase {
final int numDocs = atLeast(100);
Thread[] threads = new Thread[2];
+
final AtomicInteger updateCount = new AtomicInteger(atLeast(1000));
final CountDownLatch latch = new CountDownLatch(1);
for (int i = 0; i < threads.length; ++i) {
@@ -768,7 +789,10 @@ public class TestIndexSorting extends LuceneTestCase {
assertEquals(0, topDocs.totalHits);
} else {
assertEquals(1, topDocs.totalHits);
- assertEquals(values.get(i).longValue(), MultiDocValues.getNumericValues(reader, "foo").get(topDocs.scoreDocs[0].doc));
+ NumericDocValues dvs = MultiDocValues.getNumericValues(reader, "foo");
+ int docID = topDocs.scoreDocs[0].doc;
+ assertEquals(docID, dvs.advance(docID));
+ assertEquals(values.get(i).longValue(), dvs.longValue());
}
}
reader.close();
@@ -862,7 +886,10 @@ public class TestIndexSorting extends LuceneTestCase {
for (int i = 0; i < numDocs; ++i) {
final TopDocs topDocs = searcher.search(new TermQuery(new Term("id", Integer.toString(i))), 1);
assertEquals(1, topDocs.totalHits);
- assertEquals(values.get(i).longValue(), MultiDocValues.getNumericValues(reader, "foo").get(topDocs.scoreDocs[0].doc));
+ NumericDocValues dvs = MultiDocValues.getNumericValues(reader, "foo");
+ int hitDoc = topDocs.scoreDocs[0].doc;
+ assertEquals(hitDoc, dvs.advance(hitDoc));
+ assertEquals(values.get(i).longValue(), dvs.longValue());
}
reader.close();
w.close();
@@ -918,9 +945,15 @@ public class TestIndexSorting extends LuceneTestCase {
final TopDocs topDocs2 = searcher2.search(query, 1);
assertEquals(topDocs.totalHits, topDocs2.totalHits);
if (topDocs.totalHits == 1) {
- assertEquals(
- MultiDocValues.getNumericValues(reader, "foo").get(topDocs.scoreDocs[0].doc),
- MultiDocValues.getNumericValues(reader2, "foo").get(topDocs2.scoreDocs[0].doc));
+ NumericDocValues dvs1 = MultiDocValues.getNumericValues(reader, "foo");
+ int hitDoc1 = topDocs.scoreDocs[0].doc;
+ assertEquals(hitDoc1, dvs1.advance(hitDoc1));
+ long value1 = dvs1.longValue();
+ NumericDocValues dvs2 = MultiDocValues.getNumericValues(reader2, "foo");
+ int hitDoc2 = topDocs2.scoreDocs[0].doc;
+ assertEquals(hitDoc2, dvs2.advance(hitDoc2));
+ long value2 = dvs2.longValue();
+ assertEquals(value1, value2);
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
index 7a47d97..6f112a7 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
@@ -2555,7 +2555,9 @@ public class TestIndexWriter extends LuceneTestCase {
w.commit();
w.close();
DirectoryReader r = DirectoryReader.open(d);
- assertEquals(0, getOnlyLeafReader(r).getNormValues("foo").get(0));
+ NumericDocValues norms = getOnlyLeafReader(r).getNormValues("foo");
+ assertEquals(0, norms.nextDoc());
+ assertEquals(0, norms.longValue());
r.close();
d.close();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
index 4992338..6fdfca8 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
@@ -2039,8 +2039,12 @@ public class TestIndexWriterExceptions extends LuceneTestCase {
BinaryDocValues bcf = reader.getBinaryDocValues("bcf");
for (int i = 0; i < reader.maxDoc(); i++) {
if (liveDocs == null || liveDocs.get(i)) {
- assertEquals("doc=" + (docBase + i), cf.get(i), f.get(i) * 2);
- assertEquals("doc=" + (docBase + i), TestBinaryDocValuesUpdates.getValue(bcf, i), TestBinaryDocValuesUpdates.getValue(bf, i) * 2);
+ assertEquals(i, f.advance(i));
+ assertEquals(i, cf.advance(i));
+ assertEquals(i, bf.advance(i));
+ assertEquals(i, bcf.advance(i));
+ assertEquals("doc=" + (docBase + i), cf.longValue(), f.longValue() * 2);
+ assertEquals("doc=" + (docBase + i), TestBinaryDocValuesUpdates.getValue(bcf), TestBinaryDocValuesUpdates.getValue(bf) * 2);
}
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestIndexingSequenceNumbers.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexingSequenceNumbers.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexingSequenceNumbers.java
index 55aa6e0..52f806a 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexingSequenceNumbers.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexingSequenceNumbers.java
@@ -433,16 +433,18 @@ public class TestIndexingSequenceNumbers extends LuceneTestCase {
DirectoryReader r = DirectoryReader.open(indexCommits.get(i));
IndexSearcher s = new IndexSearcher(r);
- NumericDocValues docValues = MultiDocValues.getNumericValues(r, "thread");
for(int id=0;id<idCount;id++) {
//System.out.println("TEST: check id=" + id + " expectedThreadID=" + expectedThreadIDs[id]);
TopDocs hits = s.search(new TermQuery(new Term("id", ""+id)), 1);
+ NumericDocValues docValues = MultiDocValues.getNumericValues(r, "thread");
// We pre-add all ids up front:
assert expectedThreadIDs[id] != -1;
assertEquals(1, hits.totalHits);
- int actualThreadID = (int) docValues.get(hits.scoreDocs[0].doc);
+ int hitDoc = hits.scoreDocs[0].doc;
+ assertEquals(hitDoc, docValues.advance(hitDoc));
+ int actualThreadID = (int) docValues.longValue();
if (expectedThreadIDs[id] != actualThreadID) {
System.out.println("FAIL: commit=" + i + " (of " + commits.size() + ") id=" + id + " expectedThreadID=" + expectedThreadIDs[id] + " vs actualThreadID=" + actualThreadID + " commitSeqNo=" + commitSeqNo + " numThreads=" + numThreads + " reader=" + r + " commit=" + indexCommits.get(i));
for(int threadID=0;threadID<threadOps.size();threadID++) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestMaxTermFrequency.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestMaxTermFrequency.java b/lucene/core/src/test/org/apache/lucene/index/TestMaxTermFrequency.java
index 29a7cd1..900ec2b 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestMaxTermFrequency.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestMaxTermFrequency.java
@@ -70,7 +70,8 @@ public class TestMaxTermFrequency extends LuceneTestCase {
public void test() throws Exception {
NumericDocValues fooNorms = MultiDocValues.getNormValues(reader, "foo");
for (int i = 0; i < reader.maxDoc(); i++) {
- assertEquals(expected.get(i).intValue(), fooNorms.get(i) & 0xff);
+ assertEquals(i, fooNorms.nextDoc());
+ assertEquals(expected.get(i).intValue(), fooNorms.longValue() & 0xff);
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestMixedDocValuesUpdates.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestMixedDocValuesUpdates.java b/lucene/core/src/test/org/apache/lucene/index/TestMixedDocValuesUpdates.java
index 1f43ddd..f40379f 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestMixedDocValuesUpdates.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestMixedDocValuesUpdates.java
@@ -122,7 +122,6 @@ public class TestMixedDocValuesUpdates extends LuceneTestCase {
String f = "f" + field;
BinaryDocValues bdv = r.getBinaryDocValues(f);
NumericDocValues ndv = r.getNumericDocValues(f);
- Bits docsWithField = r.getDocsWithField(f);
if (field < numNDVFields) {
assertNotNull(ndv);
assertNull(bdv);
@@ -134,11 +133,12 @@ public class TestMixedDocValuesUpdates extends LuceneTestCase {
for (int doc = 0; doc < maxDoc; doc++) {
if (liveDocs == null || liveDocs.get(doc)) {
// System.out.println("doc=" + (doc + context.docBase) + " f='" + f + "' vslue=" + getValue(bdv, doc, scratch));
- assertTrue(docsWithField.get(doc));
if (field < numNDVFields) {
- assertEquals("invalid numeric value for doc=" + doc + ", field=" + f + ", reader=" + r, fieldValues[field], ndv.get(doc));
+ assertEquals(doc, ndv.advance(doc));
+ assertEquals("invalid numeric value for doc=" + doc + ", field=" + f + ", reader=" + r, fieldValues[field], ndv.longValue());
} else {
- assertEquals("invalid binary value for doc=" + doc + ", field=" + f + ", reader=" + r, fieldValues[field], TestBinaryDocValuesUpdates.getValue(bdv, doc));
+ assertEquals(doc, bdv.advance(doc));
+ assertEquals("invalid binary value for doc=" + doc + ", field=" + f + ", reader=" + r, fieldValues[field], TestBinaryDocValuesUpdates.getValue(bdv));
}
}
}
@@ -264,15 +264,13 @@ public class TestMixedDocValuesUpdates extends LuceneTestCase {
for (int i = 0; i < numFields; i++) {
BinaryDocValues bdv = r.getBinaryDocValues("f" + i);
NumericDocValues control = r.getNumericDocValues("cf" + i);
- Bits docsWithBdv = r.getDocsWithField("f" + i);
- Bits docsWithControl = r.getDocsWithField("cf" + i);
Bits liveDocs = r.getLiveDocs();
for (int j = 0; j < r.maxDoc(); j++) {
if (liveDocs == null || liveDocs.get(j)) {
- assertTrue(docsWithBdv.get(j));
- assertTrue(docsWithControl.get(j));
- long ctrlValue = control.get(j);
- long bdvValue = TestBinaryDocValuesUpdates.getValue(bdv, j) * 2;
+ assertEquals(j, control.advance(j));
+ long ctrlValue = control.longValue();
+ assertEquals(j, bdv.advance(j));
+ long bdvValue = TestBinaryDocValuesUpdates.getValue(bdv) * 2;
// if (ctrlValue != bdvValue) {
// System.out.println("seg=" + r + ", f=f" + i + ", doc=" + j + ", group=" + r.document(j).get("updKey") + ", ctrlValue=" + ctrlValue + ", bdvBytes=" + scratch);
// }
@@ -315,7 +313,9 @@ public class TestMixedDocValuesUpdates extends LuceneTestCase {
BinaryDocValues fbdv = r.getBinaryDocValues("f");
NumericDocValues cfndv = r.getNumericDocValues("cf");
for (int j = 0; j < r.maxDoc(); j++) {
- assertEquals(cfndv.get(j), TestBinaryDocValuesUpdates.getValue(fbdv, j) * 2);
+ assertEquals(j, cfndv.nextDoc());
+ assertEquals(j, fbdv.nextDoc());
+ assertEquals(cfndv.longValue(), TestBinaryDocValuesUpdates.getValue(fbdv) * 2);
}
}
reader.close();
@@ -384,7 +384,9 @@ public class TestMixedDocValuesUpdates extends LuceneTestCase {
BinaryDocValues f = r.getBinaryDocValues("f" + i);
NumericDocValues cf = r.getNumericDocValues("cf" + i);
for (int j = 0; j < r.maxDoc(); j++) {
- assertEquals("reader=" + r + ", field=f" + i + ", doc=" + j, cf.get(j), TestBinaryDocValuesUpdates.getValue(f, j) * 2);
+ assertEquals(j, cf.nextDoc());
+ assertEquals(j, f.nextDoc());
+ assertEquals("reader=" + r + ", field=f" + i + ", doc=" + j, cf.longValue(), TestBinaryDocValuesUpdates.getValue(f) * 2);
}
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestMultiDocValues.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestMultiDocValues.java b/lucene/core/src/test/org/apache/lucene/index/TestMultiDocValues.java
index 5b70c38..f6669d5 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestMultiDocValues.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestMultiDocValues.java
@@ -17,6 +17,7 @@
package org.apache.lucene.index;
+import java.io.IOException;
import java.util.ArrayList;
import org.apache.lucene.document.BinaryDocValuesField;
@@ -26,12 +27,15 @@ import org.apache.lucene.document.NumericDocValuesField;
import org.apache.lucene.document.SortedDocValuesField;
import org.apache.lucene.document.SortedNumericDocValuesField;
import org.apache.lucene.document.SortedSetDocValuesField;
+import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.Bits;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.TestUtil;
+import static org.apache.lucene.search.DocIdSetIterator.NO_MORE_DOCS;
+
+
/** Tests MultiDocValues versus ordinary segment merging */
public class TestMultiDocValues extends LuceneTestCase {
@@ -62,8 +66,12 @@ public class TestMultiDocValues extends LuceneTestCase {
NumericDocValues multi = MultiDocValues.getNumericValues(ir, "numbers");
NumericDocValues single = merged.getNumericDocValues("numbers");
for (int i = 0; i < numDocs; i++) {
- assertEquals(single.get(i), multi.get(i));
+ assertEquals(i, multi.nextDoc());
+ assertEquals(i, single.nextDoc());
+ assertEquals(single.longValue(), multi.longValue());
}
+ testRandomAdvance(merged.getNumericDocValues("numbers"), MultiDocValues.getNumericValues(ir, "numbers"));
+
ir.close();
ir2.close();
dir.close();
@@ -80,6 +88,7 @@ public class TestMultiDocValues extends LuceneTestCase {
RandomIndexWriter iw = new RandomIndexWriter(random(), dir, iwc);
int numDocs = TEST_NIGHTLY ? atLeast(500) : atLeast(50);
+
for (int i = 0; i < numDocs; i++) {
BytesRef ref = new BytesRef(TestUtil.randomUnicodeString(random()));
field.setBytesValue(ref);
@@ -93,14 +102,18 @@ public class TestMultiDocValues extends LuceneTestCase {
DirectoryReader ir2 = iw.getReader();
LeafReader merged = getOnlyLeafReader(ir2);
iw.close();
-
+
BinaryDocValues multi = MultiDocValues.getBinaryValues(ir, "bytes");
BinaryDocValues single = merged.getBinaryDocValues("bytes");
for (int i = 0; i < numDocs; i++) {
- final BytesRef expected = BytesRef.deepCopyOf(single.get(i));
- final BytesRef actual = multi.get(i);
+ assertEquals(i, multi.nextDoc());
+ assertEquals(i, single.nextDoc());
+ final BytesRef expected = BytesRef.deepCopyOf(single.binaryValue());
+ final BytesRef actual = multi.binaryValue();
assertEquals(expected, actual);
}
+ testRandomAdvance(merged.getBinaryDocValues("bytes"), MultiDocValues.getBinaryValues(ir, "bytes"));
+
ir.close();
ir2.close();
dir.close();
@@ -133,18 +146,24 @@ public class TestMultiDocValues extends LuceneTestCase {
DirectoryReader ir2 = iw.getReader();
LeafReader merged = getOnlyLeafReader(ir2);
iw.close();
-
SortedDocValues multi = MultiDocValues.getSortedValues(ir, "bytes");
SortedDocValues single = merged.getSortedDocValues("bytes");
assertEquals(single.getValueCount(), multi.getValueCount());
- for (int i = 0; i < numDocs; i++) {
- // check ord
- assertEquals(single.getOrd(i), multi.getOrd(i));
+ while (true) {
+ assertEquals(single.nextDoc(), multi.nextDoc());
+ if (single.docID() == NO_MORE_DOCS) {
+ break;
+ }
+
// check value
- final BytesRef expected = BytesRef.deepCopyOf(single.get(i));
- final BytesRef actual = multi.get(i);
+ final BytesRef expected = BytesRef.deepCopyOf(single.binaryValue());
+ final BytesRef actual = multi.binaryValue();
assertEquals(expected, actual);
+
+ // check ord
+ assertEquals(single.ordValue(), multi.ordValue());
}
+ testRandomAdvance(merged.getSortedDocValues("bytes"), MultiDocValues.getSortedValues(ir, "bytes"));
ir.close();
ir2.close();
dir.close();
@@ -180,13 +199,17 @@ public class TestMultiDocValues extends LuceneTestCase {
SortedDocValues single = merged.getSortedDocValues("bytes");
assertEquals(single.getValueCount(), multi.getValueCount());
for (int i = 0; i < numDocs; i++) {
+ assertEquals(i, multi.nextDoc());
+ assertEquals(i, single.nextDoc());
// check ord
- assertEquals(single.getOrd(i), multi.getOrd(i));
+ assertEquals(single.ordValue(), multi.ordValue());
// check ord value
- final BytesRef expected = BytesRef.deepCopyOf(single.get(i));
- final BytesRef actual = multi.get(i);
+ final BytesRef expected = BytesRef.deepCopyOf(single.binaryValue());
+ final BytesRef actual = multi.binaryValue();
assertEquals(expected, actual);
}
+ testRandomAdvance(merged.getSortedDocValues("bytes"), MultiDocValues.getSortedValues(ir, "bytes"));
+
ir.close();
ir2.close();
dir.close();
@@ -230,15 +253,19 @@ public class TestMultiDocValues extends LuceneTestCase {
assertEquals(expected, actual);
}
// check ord list
- for (int i = 0; i < numDocs; i++) {
- single.setDocument(i);
+ while (true) {
+ int docID = single.nextDoc();
+ assertEquals(docID, multi.nextDoc());
+ if (docID == NO_MORE_DOCS) {
+ break;
+ }
+
ArrayList<Long> expectedList = new ArrayList<>();
long ord;
while ((ord = single.nextOrd()) != SortedSetDocValues.NO_MORE_ORDS) {
expectedList.add(ord);
}
- multi.setDocument(i);
int upto = 0;
while ((ord = multi.nextOrd()) != SortedSetDocValues.NO_MORE_ORDS) {
assertEquals(expectedList.get(upto).longValue(), ord);
@@ -247,6 +274,7 @@ public class TestMultiDocValues extends LuceneTestCase {
assertEquals(expectedList.size(), upto);
}
}
+ testRandomAdvance(merged.getSortedSetDocValues("bytes"), MultiDocValues.getSortedSetValues(ir, "bytes"));
ir.close();
ir2.close();
@@ -292,15 +320,18 @@ public class TestMultiDocValues extends LuceneTestCase {
assertEquals(expected, actual);
}
// check ord list
- for (int i = 0; i < numDocs; i++) {
- single.setDocument(i);
+ while (true) {
+ int docID = single.nextDoc();
+ assertEquals(docID, multi.nextDoc());
+ if (docID == NO_MORE_DOCS) {
+ break;
+ }
ArrayList<Long> expectedList = new ArrayList<>();
long ord;
while ((ord = single.nextOrd()) != SortedSetDocValues.NO_MORE_ORDS) {
expectedList.add(ord);
}
- multi.setDocument(i);
int upto = 0;
while ((ord = multi.nextOrd()) != SortedSetDocValues.NO_MORE_ORDS) {
assertEquals(expectedList.get(upto).longValue(), ord);
@@ -309,6 +340,7 @@ public class TestMultiDocValues extends LuceneTestCase {
assertEquals(expectedList.size(), upto);
}
}
+ testRandomAdvance(merged.getSortedSetDocValues("bytes"), MultiDocValues.getSortedSetValues(ir, "bytes"));
ir.close();
ir2.close();
@@ -347,69 +379,35 @@ public class TestMultiDocValues extends LuceneTestCase {
} else {
// check values
for (int i = 0; i < numDocs; i++) {
- single.setDocument(i);
- ArrayList<Long> expectedList = new ArrayList<>();
- for (int j = 0; j < single.count(); j++) {
- expectedList.add(single.valueAt(j));
+ if (i > single.docID()) {
+ assertEquals(single.nextDoc(), multi.nextDoc());
}
-
- multi.setDocument(i);
- assertEquals(expectedList.size(), multi.count());
- for (int j = 0; j < single.count(); j++) {
- assertEquals(expectedList.get(j).longValue(), multi.valueAt(j));
+ if (i == single.docID()) {
+ assertEquals(single.docValueCount(), multi.docValueCount());
+ for (int j = 0; j < single.docValueCount(); j++) {
+ assertEquals(single.nextValue(), multi.nextValue());
+ }
}
}
}
+ testRandomAdvance(merged.getSortedNumericDocValues("nums"), MultiDocValues.getSortedNumericValues(ir, "nums"));
ir.close();
ir2.close();
dir.close();
}
-
- public void testDocsWithField() throws Exception {
- Directory dir = newDirectory();
-
- IndexWriterConfig iwc = newIndexWriterConfig(random(), null);
- iwc.setMergePolicy(newLogMergePolicy());
- RandomIndexWriter iw = new RandomIndexWriter(random(), dir, iwc);
- int numDocs = TEST_NIGHTLY ? atLeast(500) : atLeast(50);
- for (int i = 0; i < numDocs; i++) {
- Document doc = new Document();
- if (random().nextInt(4) >= 0) {
- doc.add(new NumericDocValuesField("numbers", random().nextLong()));
- }
- doc.add(new NumericDocValuesField("numbersAlways", random().nextLong()));
- iw.addDocument(doc);
- if (random().nextInt(17) == 0) {
- iw.commit();
- }
- }
- DirectoryReader ir = iw.getReader();
- iw.forceMerge(1);
- DirectoryReader ir2 = iw.getReader();
- LeafReader merged = getOnlyLeafReader(ir2);
- iw.close();
-
- Bits multi = MultiDocValues.getDocsWithField(ir, "numbers");
- Bits single = merged.getDocsWithField("numbers");
- if (multi == null) {
- assertNull(single);
- } else {
- assertEquals(single.length(), multi.length());
- for (int i = 0; i < numDocs; i++) {
- assertEquals(single.get(i), multi.get(i));
+ private void testRandomAdvance(DocIdSetIterator iter1, DocIdSetIterator iter2) throws IOException {
+ assertEquals(-1, iter1.docID());
+ assertEquals(-1, iter2.docID());
+
+ while (iter1.docID() != NO_MORE_DOCS) {
+ if (random().nextBoolean()) {
+ assertEquals(iter1.nextDoc(), iter2.nextDoc());
+ } else {
+ int target = iter1.docID() + TestUtil.nextInt(random(), 1, 100);
+ assertEquals(iter1.advance(target), iter2.advance(target));
}
}
-
- multi = MultiDocValues.getDocsWithField(ir, "numbersAlways");
- single = merged.getDocsWithField("numbersAlways");
- assertEquals(single.length(), multi.length());
- for (int i = 0; i < numDocs; i++) {
- assertEquals(single.get(i), multi.get(i));
- }
- ir.close();
- ir2.close();
- dir.close();
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestNorms.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestNorms.java b/lucene/core/src/test/org/apache/lucene/index/TestNorms.java
index ae35963..a51f1d9 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestNorms.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestNorms.java
@@ -94,12 +94,14 @@ public class TestNorms extends LuceneTestCase {
NumericDocValues fooNorms = MultiDocValues.getNormValues(reader, "foo");
for (int i = 0; i < reader.maxDoc(); i++) {
- assertEquals(0, fooNorms.get(i));
+ assertEquals(i, fooNorms.nextDoc());
+ assertEquals(0, fooNorms.longValue());
}
NumericDocValues barNorms = MultiDocValues.getNormValues(reader, "bar");
for (int i = 0; i < reader.maxDoc(); i++) {
- assertEquals(1, barNorms.get(i));
+ assertEquals(i, barNorms.nextDoc());
+ assertEquals(1, barNorms.longValue());
}
reader.close();
@@ -115,7 +117,8 @@ public class TestNorms extends LuceneTestCase {
for (int i = 0; i < open.maxDoc(); i++) {
Document document = open.document(i);
int expected = Integer.parseInt(document.get(byteTestField));
- assertEquals(expected, normValues.get(i));
+ assertEquals(i, normValues.nextDoc());
+ assertEquals(expected, normValues.longValue());
}
open.close();
dir.close();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java b/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
index 219dd05..94da587 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
@@ -221,8 +221,10 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
assertEquals(1, reader.leaves().size());
LeafReader r = reader.leaves().get(0).reader();
NumericDocValues ndv = r.getNumericDocValues("val");
- assertEquals(2, ndv.get(0));
- assertEquals(2, ndv.get(1));
+ assertEquals(0, ndv.nextDoc());
+ assertEquals(2, ndv.longValue());
+ assertEquals(1, ndv.nextDoc());
+ assertEquals(2, ndv.longValue());
reader.close();
dir.close();
@@ -267,7 +269,8 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
assertNotNull(ndv);
for (int i = 0; i < r.maxDoc(); i++) {
long expected = expectedValues[i + context.docBase];
- long actual = ndv.get(i);
+ assertEquals(i, ndv.nextDoc());
+ long actual = ndv.longValue();
assertEquals(expected, actual);
}
}
@@ -303,9 +306,13 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
final DirectoryReader reader2 = DirectoryReader.openIfChanged(reader1);
assertNotNull(reader2);
assertTrue(reader1 != reader2);
+ NumericDocValues dvs1 = reader1.leaves().get(0).reader().getNumericDocValues("val");
+ assertEquals(0, dvs1.nextDoc());
+ assertEquals(1, dvs1.longValue());
- assertEquals(1, reader1.leaves().get(0).reader().getNumericDocValues("val").get(0));
- assertEquals(10, reader2.leaves().get(0).reader().getNumericDocValues("val").get(0));
+ NumericDocValues dvs2 = reader2.leaves().get(0).reader().getNumericDocValues("val");
+ assertEquals(0, dvs2.nextDoc());
+ assertEquals(10, dvs2.longValue());
writer.close();
IOUtils.close(reader1, reader2, dir);
@@ -353,7 +360,8 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
long[] expectedValues = new long[] { 1, 2, 3, 17, 5, 17};
NumericDocValues ndv = MultiDocValues.getNumericValues(reader, "val");
for (int i = 0; i < expectedValues.length; i++) {
- assertEquals(expectedValues[i], ndv.get(i));
+ assertEquals(i, ndv.nextDoc());
+ assertEquals(expectedValues[i], ndv.longValue());
}
reader.close();
@@ -389,7 +397,9 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
LeafReader r = reader.leaves().get(0).reader();
assertFalse(r.getLiveDocs().get(0));
- assertEquals(17, r.getNumericDocValues("val").get(1));
+ NumericDocValues values = r.getNumericDocValues("val");
+ assertEquals(1, values.advance(1));
+ assertEquals(17, values.longValue());
reader.close();
dir.close();
@@ -425,12 +435,16 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
SortedDocValues sdv = r.getSortedDocValues("sdv");
SortedSetDocValues ssdv = r.getSortedSetDocValues("ssdv");
for (int i = 0; i < r.maxDoc(); i++) {
- assertEquals(17, ndv.get(i));
- BytesRef term = bdv.get(i);
+ assertEquals(i, ndv.nextDoc());
+ assertEquals(17, ndv.longValue());
+ assertEquals(i, bdv.nextDoc());
+ BytesRef term = bdv.binaryValue();
assertEquals(new BytesRef(Integer.toString(i)), term);
- term = sdv.get(i);
+ assertEquals(i, sdv.nextDoc());
+ term = sdv.binaryValue();
assertEquals(new BytesRef(Integer.toString(i)), term);
- ssdv.setDocument(i);
+ assertEquals(i, ssdv.nextDoc());
+
long ord = ssdv.nextOrd();
term = ssdv.lookupOrd(ord);
assertEquals(i, Integer.parseInt(term.utf8ToString()));
@@ -471,8 +485,10 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
NumericDocValues ndv1 = r.getNumericDocValues("ndv1");
NumericDocValues ndv2 = r.getNumericDocValues("ndv2");
for (int i = 0; i < r.maxDoc(); i++) {
- assertEquals(17, ndv1.get(i));
- assertEquals(i, ndv2.get(i));
+ assertEquals(i, ndv1.nextDoc());
+ assertEquals(17, ndv1.longValue());
+ assertEquals(i, ndv2.nextDoc());
+ assertEquals(i, ndv2.longValue());
}
reader.close();
@@ -503,7 +519,8 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
LeafReader r = reader.leaves().get(0).reader();
NumericDocValues ndv = r.getNumericDocValues("ndv");
for (int i = 0; i < r.maxDoc(); i++) {
- assertEquals(17, ndv.get(i));
+ assertEquals(i, ndv.nextDoc());
+ assertEquals(17, ndv.longValue());
}
reader.close();
@@ -567,8 +584,10 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
NumericDocValues ndv = MultiDocValues.getNumericValues(reader, "ndv");
SortedDocValues sdv = MultiDocValues.getSortedValues(reader, "sorted");
for (int i = 0; i < reader.maxDoc(); i++) {
- assertEquals(17, ndv.get(i));
- final BytesRef term = sdv.get(i);
+ assertEquals(i, ndv.nextDoc());
+ assertEquals(17, ndv.longValue());
+ assertEquals(i, sdv.nextDoc());
+ final BytesRef term = sdv.binaryValue();
assertEquals(new BytesRef("value"), term);
}
@@ -596,7 +615,8 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
final DirectoryReader reader = DirectoryReader.open(dir);
NumericDocValues ndv = MultiDocValues.getNumericValues(reader, "ndv");
for (int i = 0; i < reader.maxDoc(); i++) {
- assertEquals(3, ndv.get(i));
+ assertEquals(i, ndv.nextDoc());
+ assertEquals(3, ndv.longValue());
}
reader.close();
dir.close();
@@ -665,7 +685,8 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
NumericDocValues ndv = r.getNumericDocValues("ndv");
assertNotNull(ndv);
for (int i = 0; i < r.maxDoc(); i++) {
- assertEquals(value, ndv.get(i));
+ assertEquals(i, ndv.nextDoc());
+ assertEquals(value, ndv.longValue());
}
reader.close();
}
@@ -696,7 +717,8 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
final DirectoryReader reader = DirectoryReader.open(dir);
NumericDocValues ndv = MultiDocValues.getNumericValues(reader, "ndv");
for (int i = 0; i < reader.maxDoc(); i++) {
- assertEquals(3, ndv.get(i));
+ assertEquals(i, ndv.nextDoc());
+ assertEquals(3, ndv.longValue());
}
reader.close();
dir.close();
@@ -774,14 +796,13 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
for (int field = 0; field < fieldValues.length; field++) {
String f = "f" + field;
NumericDocValues ndv = r.getNumericDocValues(f);
- Bits docsWithField = r.getDocsWithField(f);
assertNotNull(ndv);
int maxDoc = r.maxDoc();
for (int doc = 0; doc < maxDoc; doc++) {
if (liveDocs == null || liveDocs.get(doc)) {
// System.out.println("doc=" + (doc + context.docBase) + " f='" + f + "' vslue=" + ndv.get(doc));
- assertTrue(docsWithField.get(doc));
- assertEquals("invalid value for doc=" + doc + ", field=" + f + ", reader=" + r, fieldValues[field], ndv.get(doc));
+ assertEquals(doc, ndv.advance(doc));
+ assertEquals("invalid value for doc=" + doc + ", field=" + f + ", reader=" + r, fieldValues[field], ndv.longValue());
}
}
}
@@ -835,12 +856,10 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
for (LeafReaderContext context : reader.leaves()) {
LeafReader r = context.reader();
NumericDocValues ndv = r.getNumericDocValues("ndv");
- Bits docsWithField = r.getDocsWithField("ndv");
- assertNotNull(docsWithField);
- assertTrue(docsWithField.get(0));
- assertEquals(5L, ndv.get(0));
- assertFalse(docsWithField.get(1));
- assertEquals(0L, ndv.get(1));
+ assertEquals(0, ndv.nextDoc());
+ assertEquals(5L, ndv.longValue());
+ // docID 1 has no ndv value
+ assertTrue(ndv.nextDoc() > 1);
}
reader.close();
@@ -890,12 +909,9 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
for (LeafReaderContext context : reader.leaves()) {
LeafReader r = context.reader();
NumericDocValues ndv = r.getNumericDocValues("ndv");
- Bits docsWithField = r.getDocsWithField("ndv");
- assertNotNull(docsWithField);
- assertTrue(docsWithField.get(0));
- assertEquals(5L, ndv.get(0));
- assertFalse(docsWithField.get(1));
- assertEquals(0L, ndv.get(1));
+ assertEquals(0, ndv.nextDoc());
+ assertEquals(5L, ndv.longValue());
+ assertTrue(ndv.nextDoc() > 1);
}
reader.close();
@@ -967,7 +983,8 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
LeafReader r = context.reader();
NumericDocValues ndv = r.getNumericDocValues("ndv");
for (int i = 0; i < r.maxDoc(); i++) {
- assertEquals(5L, ndv.get(i));
+ assertEquals(i, ndv.nextDoc());
+ assertEquals(5L, ndv.longValue());
}
}
reader.close();
@@ -993,7 +1010,8 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
DirectoryReader r = DirectoryReader.open(dir);
NumericDocValues ndv = r.leaves().get(0).reader().getNumericDocValues("f");
- assertEquals(17, ndv.get(0));
+ assertEquals(0, ndv.nextDoc());
+ assertEquals(17, ndv.longValue());
r.close();
dir.close();
@@ -1111,14 +1129,12 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
for (int i = 0; i < numFields; i++) {
NumericDocValues ndv = r.getNumericDocValues("f" + i);
NumericDocValues control = r.getNumericDocValues("cf" + i);
- Bits docsWithNdv = r.getDocsWithField("f" + i);
- Bits docsWithControl = r.getDocsWithField("cf" + i);
Bits liveDocs = r.getLiveDocs();
for (int j = 0; j < r.maxDoc(); j++) {
if (liveDocs == null || liveDocs.get(j)) {
- assertTrue(docsWithNdv.get(j));
- assertTrue(docsWithControl.get(j));
- assertEquals(control.get(j), ndv.get(j) * 2);
+ assertEquals(j, ndv.advance(j));
+ assertEquals(j, control.advance(j));
+ assertEquals(control.longValue(), ndv.longValue() * 2);
}
}
}
@@ -1157,7 +1173,9 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
NumericDocValues fndv = r.getNumericDocValues("f");
NumericDocValues cfndv = r.getNumericDocValues("cf");
for (int j = 0; j < r.maxDoc(); j++) {
- assertEquals(cfndv.get(j), fndv.get(j) * 2);
+ assertEquals(j, fndv.nextDoc());
+ assertEquals(j, cfndv.nextDoc());
+ assertEquals(cfndv.longValue(), fndv.longValue() * 2);
}
}
reader.close();
@@ -1206,10 +1224,14 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
DirectoryReader reader = DirectoryReader.open(dir);
NumericDocValues f1 = MultiDocValues.getNumericValues(reader, "f1");
NumericDocValues f2 = MultiDocValues.getNumericValues(reader, "f2");
- assertEquals(12L, f1.get(0));
- assertEquals(13L, f2.get(0));
- assertEquals(17L, f1.get(1));
- assertEquals(2L, f2.get(1));
+ assertEquals(0, f1.nextDoc());
+ assertEquals(12L, f1.longValue());
+ assertEquals(0, f2.nextDoc());
+ assertEquals(13L, f2.longValue());
+ assertEquals(1, f1.nextDoc());
+ assertEquals(17L, f1.longValue());
+ assertEquals(1, f2.nextDoc());
+ assertEquals(2L, f2.longValue());
reader.close();
dir.close();
}
@@ -1264,7 +1286,9 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
NumericDocValues ndv = r.getNumericDocValues("ndv");
NumericDocValues control = r.getNumericDocValues("control");
for (int i = 0; i < r.maxDoc(); i++) {
- assertEquals(ndv.get(i)*2, control.get(i));
+ assertEquals(i, ndv.nextDoc());
+ assertEquals(i, control.nextDoc());
+ assertEquals(ndv.longValue()*2, control.longValue());
}
}
reader.close();
@@ -1361,7 +1385,9 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
NumericDocValues f = r.getNumericDocValues("f" + i);
NumericDocValues cf = r.getNumericDocValues("cf" + i);
for (int j = 0; j < r.maxDoc(); j++) {
- assertEquals("reader=" + r + ", field=f" + i + ", doc=" + j, cf.get(j), f.get(j) * 2);
+ assertEquals(j, f.nextDoc());
+ assertEquals(j, cf.nextDoc());
+ assertEquals("reader=" + r + ", field=f" + i + ", doc=" + j, cf.longValue(), f.longValue() * 2);
}
}
}
@@ -1390,8 +1416,12 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
writer.close();
DirectoryReader reader = DirectoryReader.open(dir);
- assertEquals(4, reader.leaves().get(0).reader().getNumericDocValues("f1").get(0));
- assertEquals(3, reader.leaves().get(0).reader().getNumericDocValues("f2").get(0));
+ NumericDocValues dvs = reader.leaves().get(0).reader().getNumericDocValues("f1");
+ assertEquals(0, dvs.nextDoc());
+ assertEquals(4, dvs.longValue());
+ dvs = reader.leaves().get(0).reader().getNumericDocValues("f2");
+ assertEquals(0, dvs.nextDoc());
+ assertEquals(3, dvs.longValue());
reader.close();
dir.close();
@@ -1416,7 +1446,10 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
DirectoryReader reader = DirectoryReader.open(dir);
assertEquals(1, reader.leaves().size());
- assertEquals(2L, reader.leaves().get(0).reader().getNumericDocValues("f1").get(0));
+ NumericDocValues dvs = reader.leaves().get(0).reader().getNumericDocValues("f1");
+ assertEquals(0, dvs.nextDoc());
+ assertEquals(2, dvs.longValue());
+
reader.close();
dir.close();
@@ -1439,7 +1472,9 @@ public class TestNumericDocValuesUpdates extends LuceneTestCase {
DirectoryReader reader = DirectoryReader.open(dir);
assertEquals(1, reader.leaves().size());
- assertEquals(1L, reader.leaves().get(0).reader().getNumericDocValues("f1").get(0));
+ NumericDocValues dvs = reader.leaves().get(0).reader().getNumericDocValues("f1");
+ assertEquals(0, dvs.nextDoc());
+ assertEquals(1, dvs.longValue());
reader.close();
dir.close();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestOmitNorms.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestOmitNorms.java b/lucene/core/src/test/org/apache/lucene/index/TestOmitNorms.java
index bc3c3e8..bee1720 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestOmitNorms.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestOmitNorms.java
@@ -29,6 +29,8 @@ import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.TestUtil;
+import static org.apache.lucene.search.DocIdSetIterator.NO_MORE_DOCS;
+
public class TestOmitNorms extends LuceneTestCase {
// Tests whether the DocumentWriter correctly enable the
// omitNorms bit in the FieldInfo
@@ -302,8 +304,21 @@ public class TestOmitNorms extends LuceneTestCase {
if (norms1 == null) {
assertNull(norms2);
} else {
- for(int docID=0;docID<ir1.maxDoc();docID++) {
- assertEquals(norms1.get(docID), norms2.get(docID));
+ while (true) {
+ int norms1DocID = norms1.nextDoc();
+ int norms2DocID = norms2.nextDoc();
+ while (norms1DocID < norms2DocID) {
+ assertEquals(0, norms1.longValue());
+ norms1DocID = norms1.nextDoc();
+ }
+ while (norms2DocID < norms1DocID) {
+ assertEquals(0, norms2.longValue());
+ norms2DocID = norms2.nextDoc();
+ }
+ if (norms1.docID() == NO_MORE_DOCS) {
+ break;
+ }
+ assertEquals(norms1.longValue(), norms2.longValue());
}
}
ir1.close();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestOrdinalMap.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestOrdinalMap.java b/lucene/core/src/test/org/apache/lucene/index/TestOrdinalMap.java
index 1f9ff11..921102d6 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestOrdinalMap.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestOrdinalMap.java
@@ -25,8 +25,6 @@ import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.SortedDocValuesField;
import org.apache.lucene.document.SortedSetDocValuesField;
-import org.apache.lucene.index.MultiDocValues.MultiSortedDocValues;
-import org.apache.lucene.index.MultiDocValues.MultiSortedSetDocValues;
import org.apache.lucene.index.MultiDocValues.OrdinalMap;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
@@ -84,13 +82,13 @@ public class TestOrdinalMap extends LuceneTestCase {
iw.commit();
DirectoryReader r = iw.getReader();
SortedDocValues sdv = MultiDocValues.getSortedValues(r, "sdv");
- if (sdv instanceof MultiSortedDocValues) {
- OrdinalMap map = ((MultiSortedDocValues) sdv).mapping;
+ if (sdv instanceof MultiDocValues.MultiSortedDocValues) {
+ OrdinalMap map = ((MultiDocValues.MultiSortedDocValues) sdv).mapping;
assertEquals(RamUsageTester.sizeOf(map, ORDINAL_MAP_ACCUMULATOR), map.ramBytesUsed());
}
SortedSetDocValues ssdv = MultiDocValues.getSortedSetValues(r, "ssdv");
- if (ssdv instanceof MultiSortedSetDocValues) {
- OrdinalMap map = ((MultiSortedSetDocValues) ssdv).mapping;
+ if (ssdv instanceof MultiDocValues.MultiSortedSetDocValues) {
+ OrdinalMap map = ((MultiDocValues.MultiSortedSetDocValues) ssdv).mapping;
assertEquals(RamUsageTester.sizeOf(map, ORDINAL_MAP_ACCUMULATOR), map.ramBytesUsed());
}
iw.close();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestPostingsOffsets.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestPostingsOffsets.java b/lucene/core/src/test/org/apache/lucene/index/TestPostingsOffsets.java
index b21cb23..c265d92 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestPostingsOffsets.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestPostingsOffsets.java
@@ -295,7 +295,13 @@ public class TestPostingsOffsets extends LuceneTestCase {
PostingsEnum docs = null;
PostingsEnum docsAndPositions = null;
PostingsEnum docsAndPositionsAndOffsets = null;
- final NumericDocValues docIDToID = DocValues.getNumeric(sub, "id");
+ int[] docIDToID = new int[sub.maxDoc()];
+ NumericDocValues values = DocValues.getNumeric(sub, "id");
+ for(int i=0;i<sub.maxDoc();i++) {
+ assertEquals(i, values.nextDoc());
+ docIDToID[i] = (int) values.longValue();
+ }
+
for(String term : terms) {
//System.out.println(" term=" + term);
if (termsEnum.seekExact(new BytesRef(term))) {
@@ -304,8 +310,8 @@ public class TestPostingsOffsets extends LuceneTestCase {
int doc;
//System.out.println(" doc/freq");
while((doc = docs.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
- final List<Token> expected = actualTokens.get(term).get((int) docIDToID.get(doc));
- //System.out.println(" doc=" + docIDToID.get(doc) + " docID=" + doc + " " + expected.size() + " freq");
+ final List<Token> expected = actualTokens.get(term).get(docIDToID[doc]);
+ //System.out.println(" doc=" + docIDToID[doc] + " docID=" + doc + " " + expected.size() + " freq");
assertNotNull(expected);
assertEquals(expected.size(), docs.freq());
}
@@ -315,8 +321,8 @@ public class TestPostingsOffsets extends LuceneTestCase {
assertNotNull(docsAndPositions);
//System.out.println(" doc/freq/pos");
while((doc = docsAndPositions.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
- final List<Token> expected = actualTokens.get(term).get((int) docIDToID.get(doc));
- //System.out.println(" doc=" + docIDToID.get(doc) + " " + expected.size() + " freq");
+ final List<Token> expected = actualTokens.get(term).get(docIDToID[doc]);
+ //System.out.println(" doc=" + docIDToID[doc] + " " + expected.size() + " freq");
assertNotNull(expected);
assertEquals(expected.size(), docsAndPositions.freq());
for(Token token : expected) {
@@ -330,8 +336,8 @@ public class TestPostingsOffsets extends LuceneTestCase {
assertNotNull(docsAndPositionsAndOffsets);
//System.out.println(" doc/freq/pos/offs");
while((doc = docsAndPositionsAndOffsets.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
- final List<Token> expected = actualTokens.get(term).get((int) docIDToID.get(doc));
- //System.out.println(" doc=" + docIDToID.get(doc) + " " + expected.size() + " freq");
+ final List<Token> expected = actualTokens.get(term).get(docIDToID[doc]);
+ //System.out.println(" doc=" + docIDToID[doc] + " " + expected.size() + " freq");
assertNotNull(expected);
assertEquals(expected.size(), docsAndPositionsAndOffsets.freq());
for(Token token : expected) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java b/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java
index b074f81..6015fbc 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java
@@ -224,7 +224,12 @@ public class TestTermsEnum extends LuceneTestCase {
final IndexReader r = w.getReader();
w.close();
- final NumericDocValues docIDToID = MultiDocValues.getNumericValues(r, "id");
+ int[] docIDToID = new int[r.maxDoc()];
+ NumericDocValues values = MultiDocValues.getNumericValues(r, "id");
+ for(int i=0;i<r.maxDoc();i++) {
+ assertEquals(i, values.nextDoc());
+ docIDToID[i] = (int) values.longValue();
+ }
for(int iter=0;iter<10*RANDOM_MULTIPLIER;iter++) {
@@ -327,7 +332,7 @@ public class TestTermsEnum extends LuceneTestCase {
postingsEnum = TestUtil.docs(random(), te, postingsEnum, PostingsEnum.NONE);
final int docID = postingsEnum.nextDoc();
assertTrue(docID != DocIdSetIterator.NO_MORE_DOCS);
- assertEquals(docIDToID.get(docID), termToID.get(expected).intValue());
+ assertEquals(docIDToID[docID], termToID.get(expected).intValue());
do {
loc++;
} while (loc < termsArray.length && !acceptTermsSet.contains(termsArray[loc]));
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/index/TestUniqueTermCount.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestUniqueTermCount.java b/lucene/core/src/test/org/apache/lucene/index/TestUniqueTermCount.java
index b1661ca..ee47fff 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestUniqueTermCount.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestUniqueTermCount.java
@@ -72,7 +72,8 @@ public class TestUniqueTermCount extends LuceneTestCase {
NumericDocValues fooNorms = MultiDocValues.getNormValues(reader, "foo");
assertNotNull(fooNorms);
for (int i = 0; i < reader.maxDoc(); i++) {
- assertEquals(expected.get(i).longValue(), fooNorms.get(i));
+ assertEquals(i, fooNorms.nextDoc());
+ assertEquals(expected.get(i).longValue(), fooNorms.longValue());
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/search/TestDocValuesScoring.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestDocValuesScoring.java b/lucene/core/src/test/org/apache/lucene/search/TestDocValuesScoring.java
index de40c0d..ac35631 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestDocValuesScoring.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestDocValuesScoring.java
@@ -22,10 +22,10 @@ import java.io.IOException;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.FloatDocValuesField;
-import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.DocValues;
import org.apache.lucene.index.FieldInvertState;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.NumericDocValues;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
@@ -153,9 +153,25 @@ public class TestDocValuesScoring extends LuceneTestCase {
final NumericDocValues values = DocValues.getNumeric(context.reader(), boostField);
return new SimScorer() {
+
+ private float getValueForDoc(int doc) throws IOException {
+ int curDocID = values.docID();
+ if (doc < curDocID) {
+ throw new IllegalArgumentException("doc=" + doc + " is before curDocID=" + curDocID);
+ }
+ if (doc > curDocID) {
+ curDocID = values.advance(doc);
+ }
+ if (curDocID == doc) {
+ return Float.intBitsToFloat((int)values.longValue());
+ } else {
+ return 0f;
+ }
+ }
+
@Override
- public float score(int doc, float freq) {
- return Float.intBitsToFloat((int)values.get(doc)) * sub.score(doc, freq);
+ public float score(int doc, float freq) throws IOException {
+ return getValueForDoc(doc) * sub.score(doc, freq);
}
@Override
@@ -169,8 +185,8 @@ public class TestDocValuesScoring extends LuceneTestCase {
}
@Override
- public Explanation explain(int doc, Explanation freq) {
- Explanation boostExplanation = Explanation.match(Float.intBitsToFloat((int)values.get(doc)), "indexDocValue(" + boostField + ")");
+ public Explanation explain(int doc, Explanation freq) throws IOException {
+ Explanation boostExplanation = Explanation.match(getValueForDoc(doc), "indexDocValue(" + boostField + ")");
Explanation simExplanation = sub.explain(doc, freq);
return Explanation.match(
boostExplanation.getValue() * simExplanation.getValue(),
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/search/TestElevationComparator.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestElevationComparator.java b/lucene/core/src/test/org/apache/lucene/search/TestElevationComparator.java
index 7fdc367..9ca2302 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestElevationComparator.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestElevationComparator.java
@@ -151,9 +151,7 @@ class ElevationComparatorSource extends FieldComparatorSource {
int bottomVal;
@Override
- public LeafFieldComparator getLeafComparator(LeafReaderContext context)
- throws IOException {
- final SortedDocValues idIndex = DocValues.getSorted(context.reader(), fieldname);
+ public LeafFieldComparator getLeafComparator(LeafReaderContext context) throws IOException {
return new LeafFieldComparator() {
@Override
@@ -166,24 +164,24 @@ class ElevationComparatorSource extends FieldComparatorSource {
throw new UnsupportedOperationException();
}
- private int docVal(int doc) {
- int ord = idIndex.getOrd(doc);
- if (ord == -1) {
- return 0;
- } else {
- final BytesRef term = idIndex.lookupOrd(ord);
+ private int docVal(int doc) throws IOException {
+ SortedDocValues idIndex = DocValues.getSorted(context.reader(), fieldname);
+ if (idIndex.advance(doc) == doc) {
+ final BytesRef term = idIndex.binaryValue();
Integer prio = priority.get(term);
return prio == null ? 0 : prio.intValue();
+ } else {
+ return 0;
}
}
@Override
- public int compareBottom(int doc) {
+ public int compareBottom(int doc) throws IOException {
return docVal(doc) - bottomVal;
}
@Override
- public void copy(int slot, int doc) {
+ public void copy(int slot, int doc) throws IOException {
values[slot] = docVal(doc);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/core/src/test/org/apache/lucene/search/TestMinShouldMatch2.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestMinShouldMatch2.java b/lucene/core/src/test/org/apache/lucene/search/TestMinShouldMatch2.java
index 19f0be5..b2c21b3 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestMinShouldMatch2.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestMinShouldMatch2.java
@@ -367,7 +367,12 @@ public class TestMinShouldMatch2 extends LuceneTestCase {
for (currentDoc = currentDoc+1; currentDoc < maxDoc; currentDoc++) {
currentMatched = 0;
score = 0;
- dv.setDocument(currentDoc);
+ if (currentDoc > dv.docID()) {
+ dv.advance(currentDoc);
+ }
+ if (currentDoc != dv.docID()) {
+ continue;
+ }
long ord;
while ((ord = dv.nextOrd()) != SortedSetDocValues.NO_MORE_ORDS) {
if (ords.contains(ord)) {