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:09 UTC
[05/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/test-framework/src/java/org/apache/lucene/index/BaseDocValuesFormatTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/BaseDocValuesFormatTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/index/BaseDocValuesFormatTestCase.java
index 85ac12f..b9bf745 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/BaseDocValuesFormatTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/BaseDocValuesFormatTestCase.java
@@ -25,8 +25,8 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Map.Entry;
+import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.concurrent.CountDownLatch;
@@ -49,22 +49,25 @@ import org.apache.lucene.index.CheckIndex.Status.DocValuesStatus;
import org.apache.lucene.index.TermsEnum.SeekStatus;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.Bits;
+import org.apache.lucene.util.BitSet;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.BytesRefBuilder;
import org.apache.lucene.util.BytesRefHash;
+import org.apache.lucene.util.FixedBitSet;
import org.apache.lucene.util.IOUtils;
import org.apache.lucene.util.TestUtil;
import com.carrotsearch.randomizedtesting.generators.RandomPicks;
import static org.apache.lucene.index.SortedSetDocValues.NO_MORE_ORDS;
+import static org.apache.lucene.search.DocIdSetIterator.NO_MORE_DOCS;
/**
* Abstract class to do basic tests for a docvalues format.
@@ -83,17 +86,13 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
doc.add(new BinaryDocValuesField("bdv", new BytesRef(TestUtil.randomSimpleString(random()))));
doc.add(new SortedDocValuesField("sdv", new BytesRef(TestUtil.randomSimpleString(random(), 2))));
}
- if (codecSupportsSortedSet()) {
- final int numValues = random().nextInt(5);
- for (int i = 0; i < numValues; ++i) {
- doc.add(new SortedSetDocValuesField("ssdv", new BytesRef(TestUtil.randomSimpleString(random(), 2))));
- }
+ int numValues = random().nextInt(5);
+ for (int i = 0; i < numValues; ++i) {
+ doc.add(new SortedSetDocValuesField("ssdv", new BytesRef(TestUtil.randomSimpleString(random(), 2))));
}
- if (codecSupportsSortedNumeric()) {
- final int numValues = random().nextInt(5);
- for (int i = 0; i < numValues; ++i) {
- doc.add(new SortedNumericDocValuesField("sndv", TestUtil.nextLong(random(), Long.MIN_VALUE, Long.MAX_VALUE)));
- }
+ numValues = random().nextInt(5);
+ for (int i = 0; i < numValues; ++i) {
+ doc.add(new SortedNumericDocValuesField("sndv", TestUtil.nextLong(random(), Long.MIN_VALUE, Long.MAX_VALUE)));
}
}
@@ -122,7 +121,9 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(text, hitDoc.get("fieldname"));
assert ireader.leaves().size() == 1;
NumericDocValues dv = ireader.leaves().get(0).reader().getNumericDocValues("dv");
- assertEquals(5, dv.get(hits.scoreDocs[i].doc));
+ int docID = hits.scoreDocs[i].doc;
+ assertEquals(docID, dv.advance(docID));
+ assertEquals(5, dv.longValue());
}
ireader.close();
@@ -150,11 +151,14 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(1, hits.totalHits);
// Iterate through the results:
for (int i = 0; i < hits.scoreDocs.length; i++) {
- Document hitDoc = isearcher.doc(hits.scoreDocs[i].doc);
+ int docID = hits.scoreDocs[i].doc;
+ Document hitDoc = isearcher.doc(docID);
assertEquals(text, hitDoc.get("fieldname"));
assert ireader.leaves().size() == 1;
+
NumericDocValues dv = ireader.leaves().get(0).reader().getNumericDocValues("dv");
- assertEquals(Float.floatToRawIntBits(5.7f), dv.get(hits.scoreDocs[i].doc));
+ assertEquals(docID, dv.advance(docID));
+ assertEquals(Float.floatToRawIntBits(5.7f), dv.longValue());
}
ireader.close();
@@ -183,13 +187,16 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(1, hits.totalHits);
// Iterate through the results:
for (int i = 0; i < hits.scoreDocs.length; i++) {
- Document hitDoc = isearcher.doc(hits.scoreDocs[i].doc);
+ int docID = hits.scoreDocs[i].doc;
+ Document hitDoc = isearcher.doc(docID);
assertEquals(text, hitDoc.get("fieldname"));
assert ireader.leaves().size() == 1;
NumericDocValues dv = ireader.leaves().get(0).reader().getNumericDocValues("dv1");
- assertEquals(5, dv.get(hits.scoreDocs[i].doc));
+ assertEquals(docID, dv.advance(docID));
+ assertEquals(5, dv.longValue());
dv = ireader.leaves().get(0).reader().getNumericDocValues("dv2");
- assertEquals(17, dv.get(hits.scoreDocs[i].doc));
+ assertEquals(docID, dv.advance(docID));
+ assertEquals(17, dv.longValue());
}
ireader.close();
@@ -218,14 +225,17 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(1, hits.totalHits);
// Iterate through the results:
for (int i = 0; i < hits.scoreDocs.length; i++) {
- Document hitDoc = isearcher.doc(hits.scoreDocs[i].doc);
+ int hitDocID = hits.scoreDocs[i].doc;
+ Document hitDoc = isearcher.doc(hitDocID);
assertEquals(text, hitDoc.get("fieldname"));
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv1");
- BytesRef scratch = dv.get(hits.scoreDocs[i].doc);
+ assertEquals(hitDocID, dv.advance(hitDocID));
+ BytesRef scratch = dv.binaryValue();
assertEquals(new BytesRef(longTerm), scratch);
dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv2");
- scratch = dv.get(hits.scoreDocs[i].doc);
+ assertEquals(hitDocID, dv.advance(hitDocID));
+ scratch = dv.binaryValue();
assertEquals(new BytesRef(text), scratch);
}
@@ -255,14 +265,16 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(1, hits.totalHits);
// Iterate through the results:
for (int i = 0; i < hits.scoreDocs.length; i++) {
- Document hitDoc = isearcher.doc(hits.scoreDocs[i].doc);
+ int docID = hits.scoreDocs[i].doc;
+ Document hitDoc = isearcher.doc(docID);
assertEquals(text, hitDoc.get("fieldname"));
assert ireader.leaves().size() == 1;
NumericDocValues dv = ireader.leaves().get(0).reader().getNumericDocValues("dv1");
- assertEquals(5, dv.get(hits.scoreDocs[i].doc));
+ assertEquals(docID, dv.advance(docID));
+ assertEquals(5, dv.longValue());
BinaryDocValues dv2 = ireader.leaves().get(0).reader().getBinaryDocValues("dv2");
- BytesRef scratch = dv2.get(hits.scoreDocs[i].doc);
- assertEquals(new BytesRef("hello world"), scratch);
+ assertEquals(docID, dv2.advance(docID));
+ assertEquals(new BytesRef("hello world"), dv2.binaryValue());
}
ireader.close();
@@ -292,18 +304,21 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(1, hits.totalHits);
// Iterate through the results:
for (int i = 0; i < hits.scoreDocs.length; i++) {
- Document hitDoc = isearcher.doc(hits.scoreDocs[i].doc);
+ int docID = hits.scoreDocs[i].doc;
+ Document hitDoc = isearcher.doc(docID);
assertEquals(text, hitDoc.get("fieldname"));
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv1");
- int ord = dv.getOrd(0);
+ assertEquals(docID, dv.advance(docID));
+ int ord = dv.ordValue();
BytesRef scratch = dv.lookupOrd(ord);
assertEquals(new BytesRef("hello hello"), scratch);
NumericDocValues dv2 = ireader.leaves().get(0).reader().getNumericDocValues("dv2");
- assertEquals(5, dv2.get(hits.scoreDocs[i].doc));
+ assertEquals(docID, dv2.advance(docID));
+ assertEquals(5, dv2.longValue());
BinaryDocValues dv3 = ireader.leaves().get(0).reader().getBinaryDocValues("dv3");
- scratch = dv3.get(hits.scoreDocs[i].doc);
- assertEquals(new BytesRef("hello world"), scratch);
+ assertEquals(docID, dv3.advance(docID));
+ assertEquals(new BytesRef("hello world"), dv3.binaryValue());
}
ireader.close();
@@ -334,18 +349,21 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
BytesRef scratch = new BytesRef();
// Iterate through the results:
for (int i = 0; i < hits.scoreDocs.length; i++) {
- Document hitDoc = isearcher.doc(hits.scoreDocs[i].doc);
+ int docID = hits.scoreDocs[i].doc;
+ Document hitDoc = isearcher.doc(docID);
assertEquals(text, hitDoc.get("fieldname"));
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv2");
- int ord = dv.getOrd(0);
+ assertEquals(docID, dv.advance(docID));
+ int ord = dv.ordValue();
scratch = dv.lookupOrd(ord);
assertEquals(new BytesRef("hello hello"), scratch);
NumericDocValues dv2 = ireader.leaves().get(0).reader().getNumericDocValues("dv3");
- assertEquals(5, dv2.get(hits.scoreDocs[i].doc));
+ assertEquals(docID, dv2.advance(docID));
+ assertEquals(5, dv2.longValue());
BinaryDocValues dv3 = ireader.leaves().get(0).reader().getBinaryDocValues("dv1");
- scratch = dv3.get(hits.scoreDocs[i].doc);
- assertEquals(new BytesRef("hello world"), scratch);
+ assertEquals(docID, dv3.advance(docID));
+ assertEquals(new BytesRef("hello world"), dv3.binaryValue());
}
ireader.close();
@@ -372,8 +390,10 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
NumericDocValues dv = ireader.leaves().get(0).reader().getNumericDocValues("dv");
- assertEquals(1, dv.get(0));
- assertEquals(2, dv.get(1));
+ assertEquals(0, dv.nextDoc());
+ assertEquals(1, dv.longValue());
+ assertEquals(1, dv.nextDoc());
+ assertEquals(2, dv.longValue());
ireader.close();
directory.close();
@@ -410,7 +430,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
} else {
expected = 99;
}
- assertEquals(expected, dv.get(i));
+ assertEquals(i, dv.nextDoc());
+ assertEquals(expected, dv.longValue());
}
ireader.close();
@@ -437,8 +458,10 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
NumericDocValues dv = ireader.leaves().get(0).reader().getNumericDocValues("dv");
- assertEquals(Long.MIN_VALUE, dv.get(0));
- assertEquals(Long.MAX_VALUE, dv.get(1));
+ assertEquals(0, dv.nextDoc());
+ assertEquals(Long.MIN_VALUE, dv.longValue());
+ assertEquals(1, dv.nextDoc());
+ assertEquals(Long.MAX_VALUE, dv.longValue());
ireader.close();
directory.close();
@@ -464,8 +487,10 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
NumericDocValues dv = ireader.leaves().get(0).reader().getNumericDocValues("dv");
- assertEquals(-8841491950446638677L, dv.get(0));
- assertEquals(9062230939892376225L, dv.get(1));
+ assertEquals(0, dv.nextDoc());
+ assertEquals(-8841491950446638677L, dv.longValue());
+ assertEquals(1, dv.nextDoc());
+ assertEquals(9062230939892376225L, dv.longValue());
ireader.close();
directory.close();
@@ -495,12 +520,13 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(1, hits.totalHits);
// Iterate through the results:
for (int i = 0; i < hits.scoreDocs.length; i++) {
- Document hitDoc = isearcher.doc(hits.scoreDocs[i].doc);
+ int hitDocID = hits.scoreDocs[i].doc;
+ Document hitDoc = isearcher.doc(hitDocID);
assertEquals(text, hitDoc.get("fieldname"));
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv");
- BytesRef scratch = dv.get(hits.scoreDocs[i].doc);
- assertEquals(new BytesRef("hello world"), scratch);
+ assertEquals(hitDocID, dv.advance(hitDocID));
+ assertEquals(new BytesRef("hello world"), dv.binaryValue());
}
ireader.close();
@@ -539,8 +565,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
} else {
expected = "hello 2";
}
- scratch = dv.get(i);
- assertEquals(expected, scratch.utf8ToString());
+ assertEquals(i, dv.nextDoc());
+ assertEquals(expected, dv.binaryValue().utf8ToString());
}
ireader.close();
@@ -569,7 +595,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.close();
BinaryDocValues dv = getOnlyLeafReader(ireader).getBinaryDocValues("field");
- assertEquals(new BytesRef(), dv.get(0));
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
ireader.close();
directory.close();
@@ -600,11 +626,13 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
BytesRef scratch = new BytesRef();
// Iterate through the results:
for (int i = 0; i < hits.scoreDocs.length; i++) {
- Document hitDoc = isearcher.doc(hits.scoreDocs[i].doc);
+ int docID = hits.scoreDocs[i].doc;
+ Document hitDoc = isearcher.doc(docID);
assertEquals(text, hitDoc.get("fieldname"));
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
- scratch = dv.lookupOrd(dv.getOrd(hits.scoreDocs[i].doc));
+ assertEquals(docID, dv.advance(docID));
+ scratch = dv.lookupOrd(dv.ordValue());
assertEquals(new BytesRef("hello world"), scratch);
}
@@ -633,9 +661,11 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
BytesRef scratch = new BytesRef();
- scratch = dv.lookupOrd(dv.getOrd(0));
+ assertEquals(0, dv.nextDoc());
+ scratch = dv.lookupOrd(dv.ordValue());
assertEquals("hello world 1", scratch.utf8ToString());
- scratch = dv.lookupOrd(dv.getOrd(1));
+ assertEquals(1, dv.nextDoc());
+ scratch = dv.lookupOrd(dv.ordValue());
assertEquals("hello world 2", scratch.utf8ToString());
ireader.close();
@@ -666,13 +696,16 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
assertEquals(2, dv.getValueCount());
- assertEquals(0, dv.getOrd(0));
+ assertEquals(0, dv.nextDoc());
+ assertEquals(0, dv.ordValue());
BytesRef scratch = dv.lookupOrd(0);
assertEquals("hello world 1", scratch.utf8ToString());
- assertEquals(1, dv.getOrd(1));
+ assertEquals(1, dv.nextDoc());
+ assertEquals(1, dv.ordValue());
scratch = dv.lookupOrd(1);
assertEquals("hello world 2", scratch.utf8ToString());
- assertEquals(0, dv.getOrd(2));
+ assertEquals(2, dv.nextDoc());
+ assertEquals(0, dv.ordValue());
ireader.close();
directory.close();
@@ -702,7 +735,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
assertEquals(2, dv.getValueCount()); // 2 ords
- BytesRef scratch = dv.lookupOrd(0);
+ assertEquals(0, dv.nextDoc());
+ BytesRef scratch = dv.binaryValue();
assertEquals(new BytesRef("hello world 1"), scratch);
scratch = dv.lookupOrd(1);
assertEquals(new BytesRef("hello world 2"), scratch);
@@ -714,7 +748,10 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
} else {
expected = "hello world 2";
}
- scratch = dv.lookupOrd(dv.getOrd(i));
+ if (dv.docID() < i) {
+ assertEquals(i, dv.nextDoc());
+ }
+ scratch = dv.lookupOrd(dv.ordValue());
assertEquals(expected, scratch.utf8ToString());
}
@@ -744,15 +781,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.close();
SortedDocValues dv = getOnlyLeafReader(ireader).getSortedDocValues("field");
- if (codecSupportsDocsWithField()) {
- assertEquals(-1, dv.getOrd(0));
- assertEquals(0, dv.getValueCount());
- } else {
- assertEquals(0, dv.getOrd(0));
- assertEquals(1, dv.getValueCount());
- BytesRef ref = dv.lookupOrd(0);
- assertEquals(new BytesRef(), ref);
- }
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
ireader.close();
directory.close();
@@ -774,8 +803,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv");
- BytesRef scratch = dv.get(0);
- assertEquals(new BytesRef("hello\nworld\r1"), scratch);
+ assertEquals(0, dv.nextDoc());
+ assertEquals(new BytesRef("hello\nworld\r1"), dv.binaryValue());
ireader.close();
directory.close();
@@ -799,13 +828,10 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
- BytesRef scratch = dv.lookupOrd(dv.getOrd(0));
+ assertEquals(0, dv.nextDoc());
+ BytesRef scratch = dv.lookupOrd(dv.ordValue());
assertEquals(new BytesRef("hello world 2"), scratch);
- if (codecSupportsDocsWithField()) {
- assertEquals(-1, dv.getOrd(1));
- }
- scratch = dv.get(1);
- assertEquals(new BytesRef(""), scratch);
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
ireader.close();
directory.close();
}
@@ -903,9 +929,11 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
- assertEquals(0, dv.getOrd(0));
- assertEquals(0, dv.getOrd(1));
- BytesRef scratch = dv.lookupOrd(dv.getOrd(0));
+ assertEquals(0, dv.nextDoc());
+ assertEquals(0, dv.ordValue());
+ assertEquals(1, dv.nextDoc());
+ assertEquals(0, dv.ordValue());
+ BytesRef scratch = dv.lookupOrd(0);
assertEquals("", scratch.utf8ToString());
ireader.close();
@@ -932,10 +960,10 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv");
- BytesRef scratch = dv.get(0);
- assertEquals("", scratch.utf8ToString());
- scratch = dv.get(1);
- assertEquals("", scratch.utf8ToString());
+ assertEquals(0, dv.nextDoc());
+ assertEquals("", dv.binaryValue().utf8ToString());
+ assertEquals(1, dv.nextDoc());
+ assertEquals("", dv.binaryValue().utf8ToString());
ireader.close();
directory.close();
@@ -960,8 +988,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv");
- BytesRef scratch = dv.get(0);
- assertEquals(new BytesRef(bytes), scratch);
+ assertEquals(0, dv.nextDoc());
+ assertEquals(new BytesRef(bytes), dv.binaryValue());
ireader.close();
directory.close();
@@ -985,9 +1013,9 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
// Now search the index:
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
- BinaryDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
- BytesRef scratch = dv.get(0);
- assertEquals(new BytesRef(bytes), scratch);
+ BinaryDocValues dv = DocValues.getBinary(ireader.leaves().get(0).reader(), "dv");
+ assertEquals(0, dv.nextDoc());
+ assertEquals(new BytesRef(bytes), dv.binaryValue());
ireader.close();
directory.close();
}
@@ -1008,10 +1036,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv");
- byte mybytes[] = new byte[20];
- BytesRef scratch = dv.get(0);
- assertEquals("boo!", scratch.utf8ToString());
- assertFalse(scratch.bytes == mybytes);
+ assertEquals(0, dv.nextDoc());
+ assertEquals("boo!", dv.binaryValue().utf8ToString());
ireader.close();
directory.close();
@@ -1032,11 +1058,11 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
// Now search the index:
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
- BinaryDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
+ BinaryDocValues dv = DocValues.getBinary(ireader.leaves().get(0).reader(), "dv");
byte mybytes[] = new byte[20];
- BytesRef scratch = dv.get(0);
- assertEquals("boo!", scratch.utf8ToString());
- assertFalse(scratch.bytes == mybytes);
+ assertEquals(0, dv.nextDoc());
+ assertEquals("boo!", dv.binaryValue().utf8ToString());
+ assertFalse(dv.binaryValue().bytes == mybytes);
ireader.close();
directory.close();
@@ -1080,7 +1106,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
NumericDocValues docValues = getOnlyLeafReader(reader).getNumericDocValues("docId");
for (int i = 0; i < scoreDocs.length; i++) {
assertEquals(i, scoreDocs[i].doc);
- assertEquals(i, docValues.get(scoreDocs[i].doc));
+ assertEquals(i, docValues.advance(i));
+ assertEquals(i, docValues.longValue());
}
reader.close();
dir.close();
@@ -1089,11 +1116,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
public void testRandomSortedBytes() throws IOException {
Directory dir = newDirectory();
IndexWriterConfig cfg = newIndexWriterConfig(new MockAnalyzer(random()));
- if (!codecSupportsDocsWithField()) {
- // if the codec doesnt support missing, we expect missing to be mapped to byte[]
- // by the impersonator, but we have to give it a chance to merge them to this
- cfg.setMergePolicy(newLogMergePolicy());
- }
RandomIndexWriter w = new RandomIndexWriter(random(), dir, cfg);
int numDocs = atLeast(100);
BytesRefHash hash = new BytesRefHash();
@@ -1118,18 +1140,9 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
doc.add(newTextField("id", "noValue", Field.Store.YES));
w.addDocument(doc);
}
- if (!codecSupportsDocsWithField()) {
- BytesRef bytesRef = new BytesRef();
- hash.add(bytesRef); // add empty value for the gaps
- }
if (rarely()) {
w.commit();
}
- if (!codecSupportsDocsWithField()) {
- // if the codec doesnt support missing, we expect missing to be mapped to byte[]
- // by the impersonator, but we have to give it a chance to merge them to this
- w.forceMerge(1);
- }
for (int i = 0; i < numDocs; i++) {
Document doc = new Document();
String id = "" + i + numDocs;
@@ -1161,7 +1174,9 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
PostingsEnum termPostingsEnum = TestUtil.docs(random(), reader, "id", new BytesRef(entry.getKey()), null, 0);
int docId = termPostingsEnum.nextDoc();
expected = new BytesRef(entry.getValue());
- final BytesRef actual = docValues.get(docId);
+ docValues = MultiDocValues.getSortedValues(reader, "field");
+ assertEquals(docId, docValues.advance(docId));
+ final BytesRef actual = docValues.binaryValue();
assertEquals(expected, actual);
}
@@ -1231,7 +1246,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
NumericDocValues docValues = r.getNumericDocValues("dv");
for (int i = 0; i < r.maxDoc(); i++) {
long storedValue = Long.parseLong(r.document(i).get("stored"));
- assertEquals(storedValue, docValues.get(i));
+ assertEquals(i, docValues.nextDoc());
+ assertEquals(storedValue, docValues.longValue());
}
}
ir.close();
@@ -1288,13 +1304,19 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
LeafReader r = context.reader();
SortedNumericDocValues docValues = DocValues.getSortedNumeric(r, "dv");
for (int i = 0; i < r.maxDoc(); i++) {
+ if (i > docValues.docID()) {
+ docValues.nextDoc();
+ }
String expected[] = r.document(i).getValues("stored");
- docValues.setDocument(i);
- String actual[] = new String[docValues.count()];
- for (int j = 0; j < actual.length; j++) {
- actual[j] = Long.toString(docValues.valueAt(j));
+ if (i < docValues.docID()) {
+ assertEquals(0, expected.length);
+ } else {
+ String actual[] = new String[docValues.docValueCount()];
+ for (int j = 0; j < actual.length; j++) {
+ actual[j] = Long.toString(docValues.nextValue());
+ }
+ assertArrayEquals(expected, actual);
}
- assertArrayEquals(expected, actual);
}
}
ir.close();
@@ -1382,8 +1404,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
BinaryDocValues docValues = r.getBinaryDocValues("dv");
for (int i = 0; i < r.maxDoc(); i++) {
BytesRef binaryValue = r.document(i).getBinaryValue("stored");
- BytesRef scratch = docValues.get(i);
- assertEquals(binaryValue, scratch);
+ assertEquals(i, docValues.nextDoc());
+ assertEquals(binaryValue, docValues.binaryValue());
}
}
ir.close();
@@ -1396,8 +1418,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
BinaryDocValues docValues = r.getBinaryDocValues("dv");
for (int i = 0; i < r.maxDoc(); i++) {
BytesRef binaryValue = r.document(i).getBinaryValue("stored");
- BytesRef scratch = docValues.get(i);
- assertEquals(binaryValue, scratch);
+ assertEquals(i, docValues.nextDoc());
+ assertEquals(binaryValue, docValues.binaryValue());
}
}
ir.close();
@@ -1462,11 +1484,11 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
DirectoryReader ir = writer.getReader();
for (LeafReaderContext context : ir.leaves()) {
LeafReader r = context.reader();
- BinaryDocValues docValues = r.getSortedDocValues("dv");
+ BinaryDocValues docValues = DocValues.getBinary(r, "dv");
for (int i = 0; i < r.maxDoc(); i++) {
BytesRef binaryValue = r.document(i).getBinaryValue("stored");
- BytesRef scratch = docValues.get(i);
- assertEquals(binaryValue, scratch);
+ assertEquals(i, docValues.nextDoc());
+ assertEquals(binaryValue, docValues.binaryValue());
}
}
ir.close();
@@ -1476,11 +1498,11 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
ir = writer.getReader();
for (LeafReaderContext context : ir.leaves()) {
LeafReader r = context.reader();
- BinaryDocValues docValues = r.getSortedDocValues("dv");
+ BinaryDocValues docValues = DocValues.getBinary(r, "dv");
for (int i = 0; i < r.maxDoc(); i++) {
BytesRef binaryValue = r.document(i).getBinaryValue("stored");
- BytesRef scratch = docValues.get(i);
- assertEquals(binaryValue, scratch);
+ assertEquals(i, docValues.nextDoc());
+ assertEquals(binaryValue, docValues.binaryValue());
}
}
ir.close();
@@ -1504,7 +1526,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetOneValue() throws IOException {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
Directory directory = newDirectory();
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory);
@@ -1516,8 +1537,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.close();
SortedSetDocValues dv = getOnlyLeafReader(ireader).getSortedSetDocValues("field");
-
- dv.setDocument(0);
+ assertEquals(0, dv.nextDoc());
assertEquals(0, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
@@ -1529,7 +1549,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetTwoFields() throws IOException {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
Directory directory = newDirectory();
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory);
@@ -1542,8 +1561,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.close();
SortedSetDocValues dv = getOnlyLeafReader(ireader).getSortedSetDocValues("field");
+ assertEquals(0, dv.nextDoc());
- dv.setDocument(0);
assertEquals(0, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
@@ -1552,7 +1571,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
dv = getOnlyLeafReader(ireader).getSortedSetDocValues("field2");
- dv.setDocument(0);
+ assertEquals(0, dv.nextDoc());
assertEquals(0, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
@@ -1564,7 +1583,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetTwoDocumentsMerged() throws IOException {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
Directory directory = newDirectory();
Analyzer analyzer = new MockAnalyzer(random());
IndexWriterConfig iwconfig = newIndexWriterConfig(analyzer);
@@ -1587,14 +1605,14 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
SortedSetDocValues dv = getOnlyLeafReader(ireader).getSortedSetDocValues("field");
assertEquals(2, dv.getValueCount());
- dv.setDocument(0);
+ assertEquals(0, dv.nextDoc());
assertEquals(0, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
BytesRef bytes = dv.lookupOrd(0);
assertEquals(new BytesRef("hello"), bytes);
- dv.setDocument(1);
+ assertEquals(1, dv.nextDoc());
assertEquals(1, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
@@ -1606,7 +1624,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetTwoValues() throws IOException {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
Directory directory = newDirectory();
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory);
@@ -1619,8 +1636,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.close();
SortedSetDocValues dv = getOnlyLeafReader(ireader).getSortedSetDocValues("field");
+ assertEquals(0, dv.nextDoc());
- dv.setDocument(0);
assertEquals(0, dv.nextOrd());
assertEquals(1, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
@@ -1636,7 +1653,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetTwoValuesUnordered() throws IOException {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
Directory directory = newDirectory();
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory);
@@ -1649,8 +1665,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.close();
SortedSetDocValues dv = getOnlyLeafReader(ireader).getSortedSetDocValues("field");
+ assertEquals(0, dv.nextDoc());
- dv.setDocument(0);
assertEquals(0, dv.nextOrd());
assertEquals(1, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
@@ -1666,7 +1682,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetThreeValuesTwoDocs() throws IOException {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
Directory directory = newDirectory();
Analyzer analyzer = new MockAnalyzer(random());
IndexWriterConfig iwconfig = newIndexWriterConfig(analyzer);
@@ -1691,12 +1706,12 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
SortedSetDocValues dv = getOnlyLeafReader(ireader).getSortedSetDocValues("field");
assertEquals(3, dv.getValueCount());
- dv.setDocument(0);
+ assertEquals(0, dv.nextDoc());
assertEquals(1, dv.nextOrd());
assertEquals(2, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
- dv.setDocument(1);
+ assertEquals(1, dv.nextDoc());
assertEquals(0, dv.nextOrd());
assertEquals(1, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
@@ -1715,7 +1730,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetTwoDocumentsLastMissing() throws IOException {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
Directory directory = newDirectory();
Analyzer analyzer = new MockAnalyzer(random());
IndexWriterConfig iwconfig = newIndexWriterConfig(analyzer);
@@ -1735,7 +1749,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
SortedSetDocValues dv = getOnlyLeafReader(ireader).getSortedSetDocValues("field");
assertEquals(1, dv.getValueCount());
- dv.setDocument(0);
+ assertEquals(0, dv.nextDoc());
assertEquals(0, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
@@ -1747,7 +1761,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetTwoDocumentsLastMissingMerge() throws IOException {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
Directory directory = newDirectory();
Analyzer analyzer = new MockAnalyzer(random());
IndexWriterConfig iwconfig = newIndexWriterConfig(analyzer);
@@ -1769,7 +1782,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
SortedSetDocValues dv = getOnlyLeafReader(ireader).getSortedSetDocValues("field");
assertEquals(1, dv.getValueCount());
- dv.setDocument(0);
+ assertEquals(0, dv.nextDoc());
assertEquals(0, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
@@ -1781,7 +1794,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetTwoDocumentsFirstMissing() throws IOException {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
Directory directory = newDirectory();
Analyzer analyzer = new MockAnalyzer(random());
IndexWriterConfig iwconfig = newIndexWriterConfig(analyzer);
@@ -1802,7 +1814,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
SortedSetDocValues dv = getOnlyLeafReader(ireader).getSortedSetDocValues("field");
assertEquals(1, dv.getValueCount());
- dv.setDocument(1);
+ assertEquals(1, dv.nextDoc());
assertEquals(0, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
@@ -1814,7 +1826,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetTwoDocumentsFirstMissingMerge() throws IOException {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
Directory directory = newDirectory();
Analyzer analyzer = new MockAnalyzer(random());
IndexWriterConfig iwconfig = newIndexWriterConfig(analyzer);
@@ -1836,7 +1847,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
SortedSetDocValues dv = getOnlyLeafReader(ireader).getSortedSetDocValues("field");
assertEquals(1, dv.getValueCount());
- dv.setDocument(1);
+ assertEquals(1, dv.nextDoc());
assertEquals(0, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
@@ -1848,7 +1859,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetMergeAwayAllValues() throws IOException {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
Directory directory = newDirectory();
Analyzer analyzer = new MockAnalyzer(random());
IndexWriterConfig iwconfig = newIndexWriterConfig(analyzer);
@@ -1877,7 +1887,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetTermsEnum() throws IOException {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
Directory directory = newDirectory();
Analyzer analyzer = new MockAnalyzer(random());
IndexWriterConfig iwconfig = newIndexWriterConfig(analyzer);
@@ -1998,16 +2007,21 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
for (int i = 0; i < r.maxDoc(); i++) {
String stringValues[] = r.document(i).getValues("stored");
if (docValues != null) {
- docValues.setDocument(i);
+ if (docValues.docID() < i) {
+ docValues.nextDoc();
+ }
}
- for (int j = 0; j < stringValues.length; j++) {
- assert docValues != null;
- long ord = docValues.nextOrd();
- assert ord != NO_MORE_ORDS;
- BytesRef scratch = docValues.lookupOrd(ord);
- assertEquals(stringValues[j], scratch.utf8ToString());
+ if (docValues != null && stringValues.length > 0) {
+ assertEquals(i, docValues.docID());
+ for (int j = 0; j < stringValues.length; j++) {
+ assert docValues != null;
+ long ord = docValues.nextOrd();
+ assert ord != NO_MORE_ORDS;
+ BytesRef scratch = docValues.lookupOrd(ord);
+ assertEquals(stringValues[j], scratch.utf8ToString());
+ }
+ assertEquals(NO_MORE_ORDS, docValues.nextOrd());
}
- assert docValues == null || docValues.nextOrd() == NO_MORE_ORDS;
}
}
ir.close();
@@ -2020,17 +2034,20 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
SortedSetDocValues docValues = r.getSortedSetDocValues("dv");
for (int i = 0; i < r.maxDoc(); i++) {
String stringValues[] = r.document(i).getValues("stored");
- if (docValues != null) {
- docValues.setDocument(i);
+ if (docValues.docID() < i) {
+ docValues.nextDoc();
}
- for (int j = 0; j < stringValues.length; j++) {
- assert docValues != null;
- long ord = docValues.nextOrd();
- assert ord != NO_MORE_ORDS;
- BytesRef scratch = docValues.lookupOrd(ord);
- assertEquals(stringValues[j], scratch.utf8ToString());
+ if (docValues != null && stringValues.length > 0) {
+ assertEquals(i, docValues.docID());
+ for (int j = 0; j < stringValues.length; j++) {
+ assert docValues != null;
+ long ord = docValues.nextOrd();
+ assert ord != NO_MORE_ORDS;
+ BytesRef scratch = docValues.lookupOrd(ord);
+ assertEquals(stringValues[j], scratch.utf8ToString());
+ }
+ assertEquals(NO_MORE_ORDS, docValues.nextOrd());
}
- assert docValues == null || docValues.nextOrd() == NO_MORE_ORDS;
}
}
ir.close();
@@ -2039,7 +2056,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetFixedLengthVsStoredFields() throws Exception {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
int numIterations = atLeast(1);
for (int i = 0; i < numIterations; i++) {
int fixedLength = TestUtil.nextInt(random(), 1, 10);
@@ -2048,7 +2064,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedNumericsSingleValuedVsStoredFields() throws Exception {
- assumeTrue("Codec does not support SORTED_NUMERIC", codecSupportsSortedNumeric());
int numIterations = atLeast(1);
for (int i = 0; i < numIterations; i++) {
doTestSortedNumericsVsStoredFields(
@@ -2069,7 +2084,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedNumericsSingleValuedMissingVsStoredFields() throws Exception {
- assumeTrue("Codec does not support SORTED_NUMERIC", codecSupportsSortedNumeric());
int numIterations = atLeast(1);
for (int i = 0; i < numIterations; i++) {
doTestSortedNumericsVsStoredFields(
@@ -2090,7 +2104,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedNumericsMultipleValuesVsStoredFields() throws Exception {
- assumeTrue("Codec does not support SORTED_NUMERIC", codecSupportsSortedNumeric());
int numIterations = atLeast(1);
for (int i = 0; i < numIterations; i++) {
doTestSortedNumericsVsStoredFields(
@@ -2111,7 +2124,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedNumericsFewUniqueSetsVsStoredFields() throws Exception {
- assumeTrue("Codec does not support SORTED_NUMERIC", codecSupportsSortedNumeric());
final long[] values = new long[TestUtil.nextInt(random(), 2, 6)];
for (int i = 0; i < values.length; ++i) {
values[i] = random().nextLong();
@@ -2136,7 +2148,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetVariableLengthVsStoredFields() throws Exception {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
int numIterations = atLeast(1);
for (int i = 0; i < numIterations; i++) {
doTestSortedSetVsStoredFields(atLeast(300), 1, 10, 16, 100);
@@ -2144,7 +2155,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetFixedLengthSingleValuedVsStoredFields() throws Exception {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
int numIterations = atLeast(1);
for (int i = 0; i < numIterations; i++) {
int fixedLength = TestUtil.nextInt(random(), 1, 10);
@@ -2153,7 +2163,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetVariableLengthSingleValuedVsStoredFields() throws Exception {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
int numIterations = atLeast(1);
for (int i = 0; i < numIterations; i++) {
doTestSortedSetVsStoredFields(atLeast(300), 1, 10, 1, 100);
@@ -2161,7 +2170,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetFixedLengthFewUniqueSetsVsStoredFields() throws Exception {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
int numIterations = atLeast(1);
for (int i = 0; i < numIterations; i++) {
doTestSortedSetVsStoredFields(atLeast(300), 10, 10, 6, 6);
@@ -2169,7 +2177,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetVariableLengthFewUniqueSetsVsStoredFields() throws Exception {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
int numIterations = atLeast(1);
for (int i = 0; i < numIterations; i++) {
doTestSortedSetVsStoredFields(atLeast(300), 1, 10, 6, 6);
@@ -2177,7 +2184,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetVariableLengthManyValuesPerDocVsStoredFields() throws Exception {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
int numIterations = atLeast(1);
for (int i = 0; i < numIterations; i++) {
doTestSortedSetVsStoredFields(atLeast(20), 1, 10, 500, 1000);
@@ -2185,7 +2191,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testSortedSetFixedLengthManyValuesPerDocVsStoredFields() throws Exception {
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
int numIterations = atLeast(1);
for (int i = 0; i < numIterations; i++) {
doTestSortedSetVsStoredFields(atLeast(20), 10, 10, 500, 1000);
@@ -2227,7 +2232,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testTwoNumbersOneMissing() throws IOException {
- assumeTrue("Codec does not support getDocsWithField", codecSupportsDocsWithField());
Directory directory = newDirectory();
IndexWriterConfig conf = newIndexWriterConfig(null);
conf.setMergePolicy(newLogMergePolicy());
@@ -2246,17 +2250,14 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(1, ir.leaves().size());
LeafReader ar = ir.leaves().get(0).reader();
NumericDocValues dv = ar.getNumericDocValues("dv1");
- assertEquals(0, dv.get(0));
- assertEquals(0, dv.get(1));
- Bits docsWithField = ar.getDocsWithField("dv1");
- assertTrue(docsWithField.get(0));
- assertFalse(docsWithField.get(1));
+ assertEquals(0, dv.nextDoc());
+ assertEquals(0, dv.longValue());
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
ir.close();
directory.close();
}
public void testTwoNumbersOneMissingWithMerging() throws IOException {
- assumeTrue("Codec does not support getDocsWithField", codecSupportsDocsWithField());
Directory directory = newDirectory();
IndexWriterConfig conf = newIndexWriterConfig(null);
conf.setMergePolicy(newLogMergePolicy());
@@ -2276,17 +2277,14 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(1, ir.leaves().size());
LeafReader ar = ir.leaves().get(0).reader();
NumericDocValues dv = ar.getNumericDocValues("dv1");
- assertEquals(0, dv.get(0));
- assertEquals(0, dv.get(1));
- Bits docsWithField = ar.getDocsWithField("dv1");
- assertTrue(docsWithField.get(0));
- assertFalse(docsWithField.get(1));
+ assertEquals(0, dv.nextDoc());
+ assertEquals(0, dv.longValue());
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
ir.close();
directory.close();
}
public void testThreeNumbersOneMissingWithMerging() throws IOException {
- assumeTrue("Codec does not support getDocsWithField", codecSupportsDocsWithField());
Directory directory = newDirectory();
IndexWriterConfig conf = newIndexWriterConfig(null);
conf.setMergePolicy(newLogMergePolicy());
@@ -2310,19 +2308,15 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(1, ir.leaves().size());
LeafReader ar = ir.leaves().get(0).reader();
NumericDocValues dv = ar.getNumericDocValues("dv1");
- assertEquals(0, dv.get(0));
- assertEquals(0, dv.get(1));
- assertEquals(5, dv.get(2));
- Bits docsWithField = ar.getDocsWithField("dv1");
- assertTrue(docsWithField.get(0));
- assertFalse(docsWithField.get(1));
- assertTrue(docsWithField.get(2));
+ assertEquals(0, dv.nextDoc());
+ assertEquals(0, dv.longValue());
+ assertEquals(2, dv.nextDoc());
+ assertEquals(5, dv.longValue());
ir.close();
directory.close();
}
public void testTwoBytesOneMissing() throws IOException {
- assumeTrue("Codec does not support getDocsWithField", codecSupportsDocsWithField());
Directory directory = newDirectory();
IndexWriterConfig conf = newIndexWriterConfig(null);
conf.setMergePolicy(newLogMergePolicy());
@@ -2341,19 +2335,14 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(1, ir.leaves().size());
LeafReader ar = ir.leaves().get(0).reader();
BinaryDocValues dv = ar.getBinaryDocValues("dv1");
- BytesRef ref = dv.get(0);
- assertEquals(new BytesRef(), ref);
- ref = dv.get(1);
- assertEquals(new BytesRef(), ref);
- Bits docsWithField = ar.getDocsWithField("dv1");
- assertTrue(docsWithField.get(0));
- assertFalse(docsWithField.get(1));
+ assertEquals(0, dv.nextDoc());
+ assertEquals(new BytesRef(), dv.binaryValue());
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
ir.close();
directory.close();
}
public void testTwoBytesOneMissingWithMerging() throws IOException {
- assumeTrue("Codec does not support getDocsWithField", codecSupportsDocsWithField());
Directory directory = newDirectory();
IndexWriterConfig conf = newIndexWriterConfig(null);
conf.setMergePolicy(newLogMergePolicy());
@@ -2373,19 +2362,14 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(1, ir.leaves().size());
LeafReader ar = ir.leaves().get(0).reader();
BinaryDocValues dv = ar.getBinaryDocValues("dv1");
- BytesRef ref = dv.get(0);
- assertEquals(new BytesRef(), ref);
- ref = dv.get(1);
- assertEquals(new BytesRef(), ref);
- Bits docsWithField = ar.getDocsWithField("dv1");
- assertTrue(docsWithField.get(0));
- assertFalse(docsWithField.get(1));
+ assertEquals(0, dv.nextDoc());
+ assertEquals(new BytesRef(), dv.binaryValue());
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
ir.close();
directory.close();
}
public void testThreeBytesOneMissingWithMerging() throws IOException {
- assumeTrue("Codec does not support getDocsWithField", codecSupportsDocsWithField());
Directory directory = newDirectory();
IndexWriterConfig conf = newIndexWriterConfig(null);
conf.setMergePolicy(newLogMergePolicy());
@@ -2409,16 +2393,11 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(1, ir.leaves().size());
LeafReader ar = ir.leaves().get(0).reader();
BinaryDocValues dv = ar.getBinaryDocValues("dv1");
- BytesRef ref = dv.get(0);
- assertEquals(new BytesRef(), ref);
- ref = dv.get(1);
- assertEquals(new BytesRef(), ref);
- ref = dv.get(2);
- assertEquals(new BytesRef("boo"), ref);
- Bits docsWithField = ar.getDocsWithField("dv1");
- assertTrue(docsWithField.get(0));
- assertFalse(docsWithField.get(1));
- assertTrue(docsWithField.get(2));
+ assertEquals(0, dv.nextDoc());
+ assertEquals(new BytesRef(), dv.binaryValue());
+ assertEquals(2, dv.nextDoc());
+ assertEquals(new BytesRef("boo"), dv.binaryValue());
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
ir.close();
directory.close();
}
@@ -2488,12 +2467,15 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
NumericDocValues numerics = r.getNumericDocValues("dvNum");
for (int j = 0; j < r.maxDoc(); j++) {
BytesRef binaryValue = r.document(j).getBinaryValue("storedBin");
- BytesRef scratch = binaries.get(j);
+ assertEquals(j, binaries.nextDoc());
+ BytesRef scratch = binaries.binaryValue();
assertEquals(binaryValue, scratch);
- scratch = sorted.get(j);
+ assertEquals(j, sorted.nextDoc());
+ scratch = sorted.binaryValue();
assertEquals(binaryValue, scratch);
String expected = r.document(j).get("storedNum");
- assertEquals(Long.parseLong(expected), numerics.get(j));
+ assertEquals(j, numerics.nextDoc());
+ assertEquals(Long.parseLong(expected), numerics.longValue());
}
}
TestUtil.checkReader(ir);
@@ -2515,9 +2497,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
/** Tests dv against stored fields with threads (all types + missing) */
@Slow
public void testThreads2() throws Exception {
- assumeTrue("Codec does not support getDocsWithField", codecSupportsDocsWithField());
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
- assumeTrue("Codec does not support SORTED_NUMERIC", codecSupportsSortedNumeric());
Directory dir = newDirectory();
IndexWriterConfig conf = newIndexWriterConfig(new MockAnalyzer(random()));
RandomIndexWriter writer = new RandomIndexWriter(random(), dir, conf);
@@ -2599,46 +2578,35 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
for (LeafReaderContext context : ir.leaves()) {
LeafReader r = context.reader();
BinaryDocValues binaries = r.getBinaryDocValues("dvBin");
- Bits binaryBits = r.getDocsWithField("dvBin");
SortedDocValues sorted = r.getSortedDocValues("dvSorted");
- Bits sortedBits = r.getDocsWithField("dvSorted");
NumericDocValues numerics = r.getNumericDocValues("dvNum");
- Bits numericBits = r.getDocsWithField("dvNum");
SortedSetDocValues sortedSet = r.getSortedSetDocValues("dvSortedSet");
- Bits sortedSetBits = r.getDocsWithField("dvSortedSet");
SortedNumericDocValues sortedNumeric = r.getSortedNumericDocValues("dvSortedNumeric");
- Bits sortedNumericBits = r.getDocsWithField("dvSortedNumeric");
for (int j = 0; j < r.maxDoc(); j++) {
BytesRef binaryValue = r.document(j).getBinaryValue("storedBin");
if (binaryValue != null) {
if (binaries != null) {
- BytesRef scratch = binaries.get(j);
+ assertEquals(j, binaries.nextDoc());
+ BytesRef scratch = binaries.binaryValue();
assertEquals(binaryValue, scratch);
- scratch = sorted.get(j);
+ assertEquals(j, sorted.nextDoc());
+ scratch = sorted.binaryValue();
assertEquals(binaryValue, scratch);
- assertTrue(binaryBits.get(j));
- assertTrue(sortedBits.get(j));
}
- } else if (binaries != null) {
- assertFalse(binaryBits.get(j));
- assertFalse(sortedBits.get(j));
- assertEquals(-1, sorted.getOrd(j));
}
String number = r.document(j).get("storedNum");
if (number != null) {
if (numerics != null) {
- assertEquals(Long.parseLong(number), numerics.get(j));
+ assertEquals(j, numerics.advance(j));
+ assertEquals(Long.parseLong(number), numerics.longValue());
}
- } else if (numerics != null) {
- assertFalse(numericBits.get(j));
- assertEquals(0, numerics.get(j));
}
String values[] = r.document(j).getValues("storedSortedSet");
if (values.length > 0) {
assertNotNull(sortedSet);
- sortedSet.setDocument(j);
+ assertEquals(j, sortedSet.nextDoc());
for (int k = 0; k < values.length; k++) {
long ord = sortedSet.nextOrd();
assertTrue(ord != SortedSetDocValues.NO_MORE_ORDS);
@@ -2646,27 +2614,17 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(values[k], value.utf8ToString());
}
assertEquals(SortedSetDocValues.NO_MORE_ORDS, sortedSet.nextOrd());
- assertTrue(sortedSetBits.get(j));
- } else if (sortedSet != null) {
- sortedSet.setDocument(j);
- assertEquals(SortedSetDocValues.NO_MORE_ORDS, sortedSet.nextOrd());
- assertFalse(sortedSetBits.get(j));
}
String numValues[] = r.document(j).getValues("storedSortedNumeric");
if (numValues.length > 0) {
assertNotNull(sortedNumeric);
- sortedNumeric.setDocument(j);
- assertEquals(numValues.length, sortedNumeric.count());
+ assertEquals(j, sortedNumeric.nextDoc());
+ assertEquals(numValues.length, sortedNumeric.docValueCount());
for (int k = 0; k < numValues.length; k++) {
- long v = sortedNumeric.valueAt(k);
+ long v = sortedNumeric.nextValue();
assertEquals(numValues[k], Long.toString(v));
}
- assertTrue(sortedNumericBits.get(j));
- } else if (sortedNumeric != null) {
- sortedNumeric.setDocument(j);
- assertEquals(0, sortedNumeric.count());
- assertFalse(sortedNumericBits.get(j));
}
}
}
@@ -2688,9 +2646,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
@Slow
public void testThreads3() throws Exception {
- assumeTrue("Codec does not support getDocsWithField", codecSupportsDocsWithField());
- assumeTrue("Codec does not support SORTED_SET", codecSupportsSortedSet());
- assumeTrue("Codec does not support SORTED_NUMERIC", codecSupportsSortedNumeric());
Directory dir = newFSDirectory(createTempDir());
IndexWriterConfig conf = newIndexWriterConfig(new MockAnalyzer(random()));
RandomIndexWriter writer = new RandomIndexWriter(random(), dir, conf);
@@ -2785,7 +2740,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
BinaryDocValues values = MultiDocValues.getBinaryValues(r, "field");
for(int j=0;j<5;j++) {
- BytesRef result = values.get(0);
+ assertEquals(j, values.nextDoc());
+ BytesRef result = values.binaryValue();
assertTrue(result.length == 0 || result.length == 1<<i);
}
r.close();
@@ -2794,7 +2750,6 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testOneSortedNumber() throws IOException {
- assumeTrue("Codec does not support SORTED_NUMERIC", codecSupportsSortedNumeric());
Directory directory = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random(), directory);
Document doc = new Document();
@@ -2806,16 +2761,15 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader reader = DirectoryReader.open(directory);
assert reader.leaves().size() == 1;
SortedNumericDocValues dv = reader.leaves().get(0).reader().getSortedNumericDocValues("dv");
- dv.setDocument(0);
- assertEquals(1, dv.count());
- assertEquals(5, dv.valueAt(0));
+ assertEquals(0, dv.nextDoc());
+ assertEquals(1, dv.docValueCount());
+ assertEquals(5, dv.nextValue());
reader.close();
directory.close();
}
public void testOneSortedNumberOneMissing() throws IOException {
- assumeTrue("Codec does not support SORTED_NUMERIC", codecSupportsSortedNumeric());
Directory directory = newDirectory();
IndexWriter writer = new IndexWriter(directory, new IndexWriterConfig(null));
Document doc = new Document();
@@ -2828,17 +2782,11 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader reader = DirectoryReader.open(directory);
assert reader.leaves().size() == 1;
SortedNumericDocValues dv = reader.leaves().get(0).reader().getSortedNumericDocValues("dv");
- dv.setDocument(0);
- assertEquals(1, dv.count());
- assertEquals(5, dv.valueAt(0));
- dv.setDocument(1);
- assertEquals(0, dv.count());
+ assertEquals(0, dv.nextDoc());
+ assertEquals(1, dv.docValueCount());
+ assertEquals(5, dv.nextValue());
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
- Bits docsWithField = reader.leaves().get(0).reader().getDocsWithField("dv");
- assertEquals(2, docsWithField.length());
- assertTrue(docsWithField.get(0));
- assertFalse(docsWithField.get(1));
-
reader.close();
directory.close();
}
@@ -2865,14 +2813,13 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.close();
NumericDocValues dv = getOnlyLeafReader(ireader).getNumericDocValues("field");
- assertEquals(0, dv.get(0));
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
ireader.close();
directory.close();
}
public void testTwoSortedNumber() throws IOException {
- assumeTrue("Codec does not support SORTED_NUMERIC", codecSupportsSortedNumeric());
Directory directory = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random(), directory);
Document doc = new Document();
@@ -2885,17 +2832,16 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader reader = DirectoryReader.open(directory);
assert reader.leaves().size() == 1;
SortedNumericDocValues dv = reader.leaves().get(0).reader().getSortedNumericDocValues("dv");
- dv.setDocument(0);
- assertEquals(2, dv.count());
- assertEquals(-5, dv.valueAt(0));
- assertEquals(11, dv.valueAt(1));
+ assertEquals(0, dv.nextDoc());
+ assertEquals(2, dv.docValueCount());
+ assertEquals(-5, dv.nextValue());
+ assertEquals(11, dv.nextValue());
reader.close();
directory.close();
}
public void testTwoSortedNumberSameValue() throws IOException {
- assumeTrue("Codec does not support SORTED_NUMERIC", codecSupportsSortedNumeric());
Directory directory = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random(), directory);
Document doc = new Document();
@@ -2908,17 +2854,16 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader reader = DirectoryReader.open(directory);
assert reader.leaves().size() == 1;
SortedNumericDocValues dv = reader.leaves().get(0).reader().getSortedNumericDocValues("dv");
- dv.setDocument(0);
- assertEquals(2, dv.count());
- assertEquals(11, dv.valueAt(0));
- assertEquals(11, dv.valueAt(1));
+ assertEquals(0, dv.nextDoc());
+ assertEquals(2, dv.docValueCount());
+ assertEquals(11, dv.nextValue());
+ assertEquals(11, dv.nextValue());
reader.close();
directory.close();
}
public void testTwoSortedNumberOneMissing() throws IOException {
- assumeTrue("Codec does not support SORTED_NUMERIC", codecSupportsSortedNumeric());
Directory directory = newDirectory();
IndexWriter writer = new IndexWriter(directory, new IndexWriterConfig(null));
Document doc = new Document();
@@ -2932,24 +2877,17 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader reader = DirectoryReader.open(directory);
assert reader.leaves().size() == 1;
SortedNumericDocValues dv = reader.leaves().get(0).reader().getSortedNumericDocValues("dv");
- dv.setDocument(0);
- assertEquals(2, dv.count());
- assertEquals(-5, dv.valueAt(0));
- assertEquals(11, dv.valueAt(1));
- dv.setDocument(1);
- assertEquals(0, dv.count());
-
- Bits docsWithField = reader.leaves().get(0).reader().getDocsWithField("dv");
- assertEquals(2, docsWithField.length());
- assertTrue(docsWithField.get(0));
- assertFalse(docsWithField.get(1));
-
+ assertEquals(0, dv.nextDoc());
+ assertEquals(2, dv.docValueCount());
+ assertEquals(-5, dv.nextValue());
+ assertEquals(11, dv.nextValue());
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
+
reader.close();
directory.close();
}
public void testSortedNumberMerge() throws IOException {
- assumeTrue("Codec does not support SORTED_NUMERIC", codecSupportsSortedNumeric());
Directory directory = newDirectory();
IndexWriterConfig iwc = new IndexWriterConfig(null);
iwc.setMergePolicy(newLogMergePolicy());
@@ -2968,19 +2906,18 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader reader = DirectoryReader.open(directory);
assert reader.leaves().size() == 1;
SortedNumericDocValues dv = reader.leaves().get(0).reader().getSortedNumericDocValues("dv");
- dv.setDocument(0);
- assertEquals(1, dv.count());
- assertEquals(11, dv.valueAt(0));
- dv.setDocument(1);
- assertEquals(1, dv.count());
- assertEquals(-5, dv.valueAt(0));
+ assertEquals(0, dv.nextDoc());
+ assertEquals(1, dv.docValueCount());
+ assertEquals(11, dv.nextValue());
+ assertEquals(1, dv.nextDoc());
+ assertEquals(1, dv.docValueCount());
+ assertEquals(-5, dv.nextValue());
reader.close();
directory.close();
}
public void testSortedNumberMergeAwayAllValues() throws IOException {
- assumeTrue("Codec does not support SORTED_NUMERIC", codecSupportsSortedNumeric());
Directory directory = newDirectory();
Analyzer analyzer = new MockAnalyzer(random());
IndexWriterConfig iwconfig = newIndexWriterConfig(analyzer);
@@ -3002,8 +2939,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.close();
SortedNumericDocValues dv = getOnlyLeafReader(ireader).getSortedNumericDocValues("field");
- dv.setDocument(0);
- assertEquals(0, dv.count());
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
ireader.close();
directory.close();
@@ -3169,9 +3105,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.close();
SortedDocValues dv = getOnlyLeafReader(ireader).getSortedDocValues("field");
- for (int i = 0; i < numEmptyDocs; ++i) {
- assertEquals(-1, dv.getOrd(i));
- }
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
ireader.close();
directory.close();
@@ -3201,10 +3135,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.close();
SortedSetDocValues dv = getOnlyLeafReader(ireader).getSortedSetDocValues("field");
- for (int i = 0; i < numEmptyDocs; ++i) {
- dv.setDocument(i);
- assertEquals(-1L, dv.nextOrd());
- }
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
ireader.close();
directory.close();
@@ -3234,11 +3165,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.close();
NumericDocValues dv = getOnlyLeafReader(ireader).getNumericDocValues("field");
- Bits docsWithField = getOnlyLeafReader(ireader).getDocsWithField("field");
- for (int i = 0; i < numEmptyDocs; ++i) {
- assertEquals(0, dv.get(i));
- assertFalse(docsWithField.get(i));
- }
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
ireader.close();
directory.close();
@@ -3268,10 +3195,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.close();
SortedNumericDocValues dv = getOnlyLeafReader(ireader).getSortedNumericDocValues("field");
- for (int i = 0; i < numEmptyDocs; ++i) {
- dv.setDocument(i);
- assertEquals(0, dv.count());
- }
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
ireader.close();
directory.close();
@@ -3301,34 +3225,126 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.close();
BinaryDocValues dv = getOnlyLeafReader(ireader).getBinaryDocValues("field");
- Bits docsWithField = getOnlyLeafReader(ireader).getDocsWithField("field");
- for (int i = 0; i < numEmptyDocs; ++i) {
- assertEquals(new BytesRef(), dv.get(i));
- assertFalse(docsWithField.get(i));
- }
+ assertEquals(NO_MORE_DOCS, dv.nextDoc());
ireader.close();
directory.close();
}
- protected boolean codecAcceptsHugeBinaryValues(String field) {
- return true;
+ public void testRandomAdvanceNumeric() throws IOException {
+ final long longRange;
+ if (random().nextBoolean()) {
+ longRange = TestUtil.nextInt(random(), 1, 1024);
+ } else {
+ longRange = TestUtil.nextLong(random(), 1, Long.MAX_VALUE);
+ }
+ doTestRandomAdvance(new FieldCreator() {
+ @Override
+ public Field next() {
+ return new NumericDocValuesField("field", TestUtil.nextLong(random(), 0, longRange));
+ }
+
+ @Override
+ public DocIdSetIterator iterator(IndexReader r) throws IOException {
+ return MultiDocValues.getNumericValues(r, "field");
+ }
+ });
}
-
- /** Returns true if the codec "supports" docsWithField
- * (other codecs return MatchAllBits, because you couldnt write missing values before) */
- protected boolean codecSupportsDocsWithField() {
- return true;
+
+ public void testRandomAdvanceBinary() throws IOException {
+ doTestRandomAdvance(new FieldCreator() {
+ @Override
+ public Field next() {
+ byte[] bytes = new byte[random().nextInt(10)];
+ random().nextBytes(bytes);
+ return new BinaryDocValuesField("field", new BytesRef(bytes));
+ }
+
+ @Override
+ public DocIdSetIterator iterator(IndexReader r) throws IOException {
+ return MultiDocValues.getBinaryValues(r, "field");
+ }
+ });
}
-
- /** Returns true if the default codec supports SORTED_SET docvalues */
- protected boolean codecSupportsSortedSet() {
- return true;
+
+ private interface FieldCreator {
+ public Field next();
+ public DocIdSetIterator iterator(IndexReader r) throws IOException;
}
-
- /** Returns true if the default codec supports SORTED_NUMERIC docvalues */
- protected boolean codecSupportsSortedNumeric() {
+
+ private void doTestRandomAdvance(FieldCreator fieldCreator) throws IOException {
+
+ Analyzer analyzer = new MockAnalyzer(random());
+
+ Directory directory = newDirectory();
+ IndexWriterConfig conf = newIndexWriterConfig(analyzer);
+ conf.setMergePolicy(newLogMergePolicy());
+ RandomIndexWriter w = new RandomIndexWriter(random(), directory, conf);
+ int numChunks = atLeast(10);
+ int id = 0;
+ Set<Integer> missingSet = new HashSet<>();
+ for(int i=0;i<numChunks;i++) {
+ // change sparseness for each chunk
+ double sparseChance = random().nextDouble();
+ int docCount = atLeast(1000);
+ for(int j=0;j<docCount;j++) {
+ Document doc = new Document();
+ doc.add(new StoredField("id", id));
+ if (random().nextDouble() > sparseChance) {
+ doc.add(fieldCreator.next());
+ } else {
+ missingSet.add(id);
+ }
+ id++;
+ w.addDocument(doc);
+ }
+ }
+
+ if (random().nextBoolean()) {
+ w.forceMerge(1);
+ }
+
+ // Now search the index:
+ IndexReader r = w.getReader();
+ BitSet missing = new FixedBitSet(r.maxDoc());
+ for(int docID=0;docID<r.maxDoc();docID++) {
+ Document doc = r.document(docID);
+ if (missingSet.contains(doc.getField("id").numericValue())) {
+ missing.set(docID);
+ }
+ }
+
+ for(int iter=0;iter<100;iter++) {
+ DocIdSetIterator values = fieldCreator.iterator(r);
+ assertEquals(-1, values.docID());
+
+ while (true) {
+ int docID;
+ if (random().nextBoolean()) {
+ docID = values.nextDoc();
+ } else {
+ int range;
+ if (random().nextInt(10) == 7) {
+ // big jump
+ range = r.maxDoc()-values.docID();
+ } else {
+ // small jump
+ range = 25;
+ }
+ int inc = TestUtil.nextInt(random(), 1, range);
+ docID = values.advance(values.docID() + inc);
+ }
+ if (docID == NO_MORE_DOCS) {
+ break;
+ }
+ assertFalse(missing.get(docID));
+ }
+ }
+
+ IOUtils.close(r, w, directory);
+ }
+
+ protected boolean codecAcceptsHugeBinaryValues(String field) {
return true;
}
-
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/test-framework/src/java/org/apache/lucene/index/BaseIndexFileFormatTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/BaseIndexFileFormatTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/index/BaseIndexFileFormatTestCase.java
index 5d2e383..d56e6cb 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/BaseIndexFileFormatTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/BaseIndexFileFormatTestCase.java
@@ -330,7 +330,49 @@ abstract class BaseIndexFileFormatTestCase extends LuceneTestCase {
// DocValuesFormat
try (DocValuesConsumer consumer = codec.docValuesFormat().fieldsConsumer(writeState)) {
- consumer.addNumericField(field, Collections.singleton(5));
+ consumer.addNumericField(field,
+ new EmptyDocValuesProducer() {
+ @Override
+ public NumericDocValues getNumeric(FieldInfo field) {
+ return new NumericDocValues() {
+ int docID = -1;
+
+ @Override
+ public int docID() {
+ return docID;
+ }
+
+ @Override
+ public int nextDoc() {
+ docID++;
+ if (docID == 1) {
+ docID = NO_MORE_DOCS;
+ }
+ return docID;
+ }
+
+ @Override
+ public int advance(int target) {
+ if (docID <= 0 && target == 0) {
+ docID = 0;
+ } else {
+ docID = NO_MORE_DOCS;
+ }
+ return docID;
+ }
+
+ @Override
+ public long cost() {
+ return 1;
+ }
+
+ @Override
+ public long longValue() {
+ return 5;
+ }
+ };
+ }
+ });
IOUtils.close(consumer);
IOUtils.close(consumer);
}
@@ -341,7 +383,62 @@ abstract class BaseIndexFileFormatTestCase extends LuceneTestCase {
// NormsFormat
try (NormsConsumer consumer = codec.normsFormat().normsConsumer(writeState)) {
- consumer.addNormsField(field, Collections.singleton(5));
+ consumer.addNormsField(field,
+ new NormsProducer() {
+ @Override
+ public NumericDocValues getNorms(FieldInfo field) {
+ return new NumericDocValues() {
+ int docID = -1;
+
+ @Override
+ public int docID() {
+ return docID;
+ }
+
+ @Override
+ public int nextDoc() {
+ docID++;
+ if (docID == 1) {
+ docID = NO_MORE_DOCS;
+ }
+ return docID;
+ }
+
+ @Override
+ public int advance(int target) {
+ if (docID <= 0 && target == 0) {
+ docID = 0;
+ } else {
+ docID = NO_MORE_DOCS;
+ }
+ return docID;
+ }
+
+ @Override
+ public long cost() {
+ return 1;
+ }
+
+ @Override
+ public long longValue() {
+ return 5;
+ }
+ };
+ }
+
+ @Override
+ public void checkIntegrity() {
+ }
+
+ @Override
+ public void close() {
+ }
+
+ @Override
+ public long ramBytesUsed() {
+ return 0;
+ }
+ });
IOUtils.close(consumer);
IOUtils.close(consumer);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/test-framework/src/java/org/apache/lucene/index/BaseNormsFormatTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/BaseNormsFormatTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/index/BaseNormsFormatTestCase.java
index ee70fb6..dc0636d 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/BaseNormsFormatTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/BaseNormsFormatTestCase.java
@@ -35,6 +35,8 @@ import org.apache.lucene.search.similarities.Similarity;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.TestUtil;
+import static org.apache.lucene.search.DocIdSetIterator.NO_MORE_DOCS;
+
/**
* Abstract class to do basic tests for a norms format.
* NOTE: This test focuses on the norms impl, nothing else.
@@ -279,8 +281,11 @@ public abstract class BaseNormsFormatTestCase extends BaseIndexFileFormatTestCas
NumericDocValues expected = r.getNumericDocValues("dv");
NumericDocValues actual = r.getNormValues("indexed");
for (int i = 0; i < r.maxDoc(); i++) {
- assertEquals("doc " + i, expected.get(i), actual.get(i));
+ assertEquals(i, expected.nextDoc());
+ assertEquals(i, actual.nextDoc());
+ assertEquals("doc " + i, expected.longValue(), actual.longValue());
}
+ assertEquals(NO_MORE_DOCS, expected.nextDoc());
}
ir.close();
@@ -293,7 +298,9 @@ public abstract class BaseNormsFormatTestCase extends BaseIndexFileFormatTestCas
NumericDocValues expected = r.getNumericDocValues("dv");
NumericDocValues actual = r.getNormValues("indexed");
for (int i = 0; i < r.maxDoc(); i++) {
- assertEquals("doc " + i, expected.get(i), actual.get(i));
+ assertEquals(i, expected.nextDoc());
+ assertEquals(i, actual.nextDoc());
+ assertEquals("doc " + i, expected.longValue(), actual.longValue());
}
}
@@ -397,7 +404,8 @@ public abstract class BaseNormsFormatTestCase extends BaseIndexFileFormatTestCas
NumericDocValues norms = MultiDocValues.getNormValues(r, "content");
assertNotNull(norms);
for(int i=0;i<r.maxDoc();i++) {
- assertEquals(0, norms.get(i));
+ assertEquals(i, norms.nextDoc());
+ assertEquals(0, norms.longValue());
}
r.close();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/test-framework/src/java/org/apache/lucene/index/BasePointsFormatTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/BasePointsFormatTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/index/BasePointsFormatTestCase.java
index 5891df5..b981aef 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/BasePointsFormatTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/BasePointsFormatTestCase.java
@@ -43,6 +43,8 @@ import org.apache.lucene.util.NumericUtils;
import org.apache.lucene.util.StringHelper;
import org.apache.lucene.util.TestUtil;
+import static org.apache.lucene.search.DocIdSetIterator.NO_MORE_DOCS;
+
/**
* Abstract class to do basic tests for a points format.
* NOTE: This test focuses on the points impl, nothing else.
@@ -167,7 +169,14 @@ public abstract class BasePointsFormatTestCase extends BaseIndexFileFormatTestCa
for(LeafReaderContext ctx : r.leaves()) {
PointValues values = ctx.reader().getPointValues();
+
NumericDocValues idValues = ctx.reader().getNumericDocValues("id");
+ int[] docIDToID = new int[ctx.reader().maxDoc()];
+ int docID;
+ while ((docID = idValues.nextDoc()) != NO_MORE_DOCS) {
+ docIDToID[docID] = (int) idValues.longValue();
+ }
+
if (values != null) {
BitSet seen = new BitSet();
values.intersect("dim",
@@ -183,7 +192,7 @@ public abstract class BasePointsFormatTestCase extends BaseIndexFileFormatTestCa
if (liveDocs.get(docID)) {
seen.set(docID);
}
- assertEquals(idValues.get(docID), NumericUtils.sortableBytesToInt(packedValue, 0));
+ assertEquals(docIDToID[docID], NumericUtils.sortableBytesToInt(packedValue, 0));
}
});
assertEquals(0, seen.cardinality());
@@ -704,6 +713,14 @@ public abstract class BasePointsFormatTestCase extends BaseIndexFileFormatTestCa
}
NumericDocValues idValues = MultiDocValues.getNumericValues(r, "id");
+ int[] docIDToID = new int[r.maxDoc()];
+ {
+ int docID;
+ while ((docID = idValues.nextDoc()) != NO_MORE_DOCS) {
+ docIDToID[docID] = (int) idValues.longValue();
+ }
+ }
+
Bits liveDocs = MultiFields.getLiveDocs(r);
// Verify min/max values are correct:
@@ -781,7 +798,7 @@ public abstract class BasePointsFormatTestCase extends BaseIndexFileFormatTestCa
@Override
public void visit(int docID) {
if (liveDocs == null || liveDocs.get(docBase+docID)) {
- hits.set((int) idValues.get(docBase+docID));
+ hits.set(docIDToID[docBase+docID]);
}
//System.out.println("visit docID=" + docID);
}
@@ -792,7 +809,6 @@ public abstract class BasePointsFormatTestCase extends BaseIndexFileFormatTestCa
return;
}
- //System.out.println("visit check docID=" + docID + " id=" + idValues.get(docID));
for(int dim=0;dim<numDims;dim++) {
//System.out.println(" dim=" + dim + " value=" + new BytesRef(packedValue, dim*numBytesPerDim, numBytesPerDim));
if (StringHelper.compare(numBytesPerDim, packedValue, dim*numBytesPerDim, queryMin[dim], 0) < 0 ||
@@ -803,7 +819,7 @@ public abstract class BasePointsFormatTestCase extends BaseIndexFileFormatTestCa
}
//System.out.println(" yes");
- hits.set((int) idValues.get(docBase+docID));
+ hits.set(docIDToID[docBase+docID]);
}
@Override
@@ -869,7 +885,7 @@ public abstract class BasePointsFormatTestCase extends BaseIndexFileFormatTestCa
if (failCount != 0) {
for(int docID=0;docID<r.maxDoc();docID++) {
- System.out.println(" docID=" + docID + " id=" + idValues.get(docID));
+ System.out.println(" docID=" + docID + " id=" + docIDToID[docID]);
}
fail(failCount + " docs failed; " + successCount + " docs succeeded");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f7aa200d/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java
index adcb0af..3868b16 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java
@@ -292,7 +292,8 @@ public abstract class BaseStoredFieldsFormatTestCase extends BaseIndexFileFormat
final Document doc = sub.document(docID);
final Field f = (Field) doc.getField("nf");
assertTrue("got f=" + f, f instanceof StoredField);
- assertEquals(answers[(int) ids.get(docID)], f.numericValue());
+ assertEquals(docID, ids.nextDoc());
+ assertEquals(answers[(int) ids.longValue()], f.numericValue());
}
}
r.close();