You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by si...@apache.org on 2012/09/21 19:22:27 UTC
svn commit: r1388574 [21/45] - in /lucene/dev/branches/LUCENE-2878: ./
dev-tools/ dev-tools/eclipse/ dev-tools/eclipse/dot.settings/
dev-tools/idea/ dev-tools/idea/.idea/ dev-tools/idea/.idea/libraries/
dev-tools/idea/lucene/ dev-tools/idea/lucene/anal...
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java Fri Sep 21 17:21:34 2012
@@ -68,7 +68,7 @@ public class TestDeletionPolicy extends
public void onCommit(List<? extends IndexCommit> commits) throws IOException {
IndexCommit lastCommit = commits.get(commits.size()-1);
DirectoryReader r = DirectoryReader.open(dir);
- assertEquals("lastCommit.segmentCount()=" + lastCommit.getSegmentCount() + " vs IndexReader.segmentCount=" + r.getSequentialSubReaders().size(), r.getSequentialSubReaders().size(), lastCommit.getSegmentCount());
+ assertEquals("lastCommit.segmentCount()=" + lastCommit.getSegmentCount() + " vs IndexReader.segmentCount=" + r.leaves().size(), r.leaves().size(), lastCommit.getSegmentCount());
r.close();
verifyCommitOrder(commits);
numOnCommit++;
@@ -318,7 +318,7 @@ public class TestDeletionPolicy extends
final boolean needsMerging;
{
DirectoryReader r = DirectoryReader.open(dir);
- needsMerging = r.getSequentialSubReaders().size() != 1;
+ needsMerging = r.leaves().size() != 1;
r.close();
}
if (needsMerging) {
@@ -435,7 +435,7 @@ public class TestDeletionPolicy extends
DirectoryReader r = DirectoryReader.open(dir);
// Still merged, still 11 docs
- assertEquals(1, r.getSequentialSubReaders().size());
+ assertEquals(1, r.leaves().size());
assertEquals(11, r.numDocs());
r.close();
@@ -451,7 +451,7 @@ public class TestDeletionPolicy extends
r = DirectoryReader.open(dir);
// Not fully merged because we rolled it back, and now only
// 10 docs
- assertTrue(r.getSequentialSubReaders().size() > 1);
+ assertTrue(r.leaves().size() > 1);
assertEquals(10, r.numDocs());
r.close();
@@ -461,7 +461,7 @@ public class TestDeletionPolicy extends
writer.close();
r = DirectoryReader.open(dir);
- assertEquals(1, r.getSequentialSubReaders().size());
+ assertEquals(1, r.leaves().size());
assertEquals(10, r.numDocs());
r.close();
@@ -473,7 +473,7 @@ public class TestDeletionPolicy extends
// Reader still sees fully merged index, because writer
// opened on the prior commit has not yet committed:
r = DirectoryReader.open(dir);
- assertEquals(1, r.getSequentialSubReaders().size());
+ assertEquals(1, r.leaves().size());
assertEquals(10, r.numDocs());
r.close();
@@ -481,7 +481,7 @@ public class TestDeletionPolicy extends
// Now reader sees not-fully-merged index:
r = DirectoryReader.open(dir);
- assertTrue(r.getSequentialSubReaders().size() > 1);
+ assertTrue(r.leaves().size() > 1);
assertEquals(10, r.numDocs());
r.close();
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java Fri Sep 21 17:21:34 2012
@@ -61,10 +61,10 @@ public class TestDirectoryReader extends
assertTrue(reader != null);
assertTrue(reader instanceof StandardDirectoryReader);
- Document newDoc1 = reader.document(0);
+ StoredDocument newDoc1 = reader.document(0);
assertTrue(newDoc1 != null);
assertTrue(DocHelper.numFields(newDoc1) == DocHelper.numFields(doc1) - DocHelper.unstored.size());
- Document newDoc2 = reader.document(1);
+ StoredDocument newDoc2 = reader.document(1);
assertTrue(newDoc2 != null);
assertTrue(DocHelper.numFields(newDoc2) == DocHelper.numFields(doc2) - DocHelper.unstored.size());
Terms vector = reader.getTermVectors(0).terms(DocHelper.TEXT_FIELD_2_KEY);
@@ -386,11 +386,11 @@ void assertTermDocsCount(String msg,
writer.addDocument(doc);
writer.close();
DirectoryReader reader = DirectoryReader.open(dir);
- Document doc2 = reader.document(reader.maxDoc() - 1);
- IndexableField[] fields = doc2.getFields("bin1");
+ StoredDocument doc2 = reader.document(reader.maxDoc() - 1);
+ StorableField[] fields = doc2.getFields("bin1");
assertNotNull(fields);
assertEquals(1, fields.length);
- IndexableField b1 = fields[0];
+ StorableField b1 = fields[0];
assertTrue(b1.binaryValue() != null);
BytesRef bytesRef = b1.binaryValue();
assertEquals(bin.length, bytesRef.length);
@@ -549,7 +549,7 @@ public void testFilesOpenClose() throws
assertEquals("IndexReaders have different values for numDocs.", index1.numDocs(), index2.numDocs());
assertEquals("IndexReaders have different values for maxDoc.", index1.maxDoc(), index2.maxDoc());
assertEquals("Only one IndexReader has deletions.", index1.hasDeletions(), index2.hasDeletions());
- assertEquals("Single segment test differs.", index1.getSequentialSubReaders().size() == 1, index2.getSequentialSubReaders().size() == 1);
+ assertEquals("Single segment test differs.", index1.leaves().size() == 1, index2.leaves().size() == 1);
// check field names
FieldInfos fieldInfos1 = MultiFields.getMergedFieldInfos(index1);
@@ -595,13 +595,13 @@ public void testFilesOpenClose() throws
// check stored fields
for (int i = 0; i < index1.maxDoc(); i++) {
if (liveDocs1 == null || liveDocs1.get(i)) {
- Document doc1 = index1.document(i);
- Document doc2 = index2.document(i);
- List<IndexableField> field1 = doc1.getFields();
- List<IndexableField> field2 = doc2.getFields();
+ StoredDocument doc1 = index1.document(i);
+ StoredDocument doc2 = index2.document(i);
+ List<StorableField> field1 = doc1.getFields();
+ List<StorableField> field2 = doc2.getFields();
assertEquals("Different numbers of fields for doc " + i + ".", field1.size(), field2.size());
- Iterator<IndexableField> itField1 = field1.iterator();
- Iterator<IndexableField> itField2 = field2.iterator();
+ Iterator<StorableField> itField1 = field1.iterator();
+ Iterator<StorableField> itField2 = field2.iterator();
while (itField1.hasNext()) {
Field curField1 = (Field) itField1.next();
Field curField2 = (Field) itField2.next();
@@ -785,7 +785,7 @@ public void testFilesOpenClose() throws
DirectoryReader r2 = DirectoryReader.openIfChanged(r);
assertNotNull(r2);
r.close();
- AtomicReader sub0 = r2.getSequentialSubReaders().get(0);
+ AtomicReader sub0 = r2.leaves().get(0).reader();
final int[] ints2 = FieldCache.DEFAULT.getInts(sub0, "number", false);
r2.close();
assertTrue(ints == ints2);
@@ -807,16 +807,17 @@ public void testFilesOpenClose() throws
DirectoryReader r = DirectoryReader.open(dir);
AtomicReader r1 = getOnlySegmentReader(r);
- assertEquals(36, r1.getUniqueTermCount());
+ assertEquals(26, r1.terms("field").size());
+ assertEquals(10, r1.terms("number").size());
writer.addDocument(doc);
writer.commit();
DirectoryReader r2 = DirectoryReader.openIfChanged(r);
assertNotNull(r2);
r.close();
- List<? extends AtomicReader> subs = r2.getSequentialSubReaders();
- for(AtomicReader s : subs) {
- assertEquals(36, s.getUniqueTermCount());
+ for(AtomicReaderContext s : r2.leaves()) {
+ assertEquals(26, s.reader().terms("field").size());
+ assertEquals(10, s.reader().terms("number").size());
}
r2.close();
writer.close();
@@ -842,7 +843,7 @@ public void testFilesOpenClose() throws
// expected
}
- assertEquals(-1, ((SegmentReader) r.getSequentialSubReaders().get(0)).getTermInfosIndexDivisor());
+ assertEquals(-1, ((SegmentReader) r.leaves().get(0).reader()).getTermInfosIndexDivisor());
writer = new IndexWriter(
dir,
newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random())).
@@ -857,11 +858,11 @@ public void testFilesOpenClose() throws
assertNotNull(r2);
assertNull(DirectoryReader.openIfChanged(r2));
r.close();
- List<? extends AtomicReader> subReaders = r2.getSequentialSubReaders();
- assertEquals(2, subReaders.size());
- for(AtomicReader s : subReaders) {
+ List<AtomicReaderContext> leaves = r2.leaves();
+ assertEquals(2, leaves.size());
+ for(AtomicReaderContext ctx : leaves) {
try {
- s.docFreq(new Term("field", "f"));
+ ctx.reader().docFreq(new Term("field", "f"));
fail("did not hit expected exception");
} catch (IllegalStateException ise) {
// expected
@@ -1081,7 +1082,7 @@ public void testFilesOpenClose() throws
Set<String> fieldsToLoad = new HashSet<String>();
assertEquals(0, r.document(0, fieldsToLoad).getFields().size());
fieldsToLoad.add("field1");
- Document doc2 = r.document(0, fieldsToLoad);
+ StoredDocument doc2 = r.document(0, fieldsToLoad);
assertEquals(1, doc2.getFields().size());
assertEquals("foobar", doc2.get("field1"));
r.close();
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java Fri Sep 21 17:21:34 2012
@@ -122,7 +122,7 @@ public class TestDirectoryReaderReopen e
if (i>0) {
int k = i-1;
int n = j + k*M;
- Document prevItereationDoc = reader.document(n);
+ StoredDocument prevItereationDoc = reader.document(n);
assertNotNull(prevItereationDoc);
String id = prevItereationDoc.get("id");
assertEquals(k+"_"+j, id);
@@ -171,8 +171,8 @@ public class TestDirectoryReaderReopen e
TestDirectoryReader.assertIndexEquals(index1, index2_refreshed);
index2_refreshed.close();
- assertReaderClosed(index2, true, true);
- assertReaderClosed(index2_refreshed, true, true);
+ assertReaderClosed(index2, true);
+ assertReaderClosed(index2_refreshed, true);
index2 = test.openReader();
@@ -190,28 +190,8 @@ public class TestDirectoryReaderReopen e
index1.close();
index2.close();
- assertReaderClosed(index1, true, true);
- assertReaderClosed(index2, true, true);
- }
-
- private void performTestsWithExceptionInReopen(TestReopen test) throws Exception {
- DirectoryReader index1 = test.openReader();
- DirectoryReader index2 = test.openReader();
-
- TestDirectoryReader.assertIndexEquals(index1, index2);
-
- try {
- refreshReader(index1, test, 0, true);
- fail("Expected exception not thrown.");
- } catch (Exception e) {
- // expected exception
- }
-
- // index2 should still be usable and unaffected by the failed reopen() call
- TestDirectoryReader.assertIndexEquals(index1, index2);
-
- index1.close();
- index2.close();
+ assertReaderClosed(index1, true);
+ assertReaderClosed(index2, true);
}
public void testThreadSafety() throws Exception {
@@ -355,11 +335,11 @@ public class TestDirectoryReaderReopen e
reader.close();
for (final DirectoryReader readerToClose : readersToClose) {
- assertReaderClosed(readerToClose, true, true);
+ assertReaderClosed(readerToClose, true);
}
- assertReaderClosed(reader, true, true);
- assertReaderClosed(firstReader, true, true);
+ assertReaderClosed(reader, true);
+ assertReaderClosed(firstReader, true);
dir.close();
}
@@ -374,7 +354,7 @@ public class TestDirectoryReaderReopen e
DirectoryReader refreshedReader;
}
- private abstract static class ReaderThreadTask {
+ abstract static class ReaderThreadTask {
protected volatile boolean stopped;
public void stop() {
this.stopped = true;
@@ -384,8 +364,8 @@ public class TestDirectoryReaderReopen e
}
private static class ReaderThread extends Thread {
- private ReaderThreadTask task;
- private Throwable error;
+ ReaderThreadTask task;
+ Throwable error;
ReaderThread(ReaderThreadTask task) {
@@ -469,9 +449,9 @@ public class TestDirectoryReaderReopen e
DirectoryReader r = DirectoryReader.open(dir);
if (multiSegment) {
- assertTrue(r.getSequentialSubReaders().size() > 1);
+ assertTrue(r.leaves().size() > 1);
} else {
- assertTrue(r.getSequentialSubReaders().size() == 1);
+ assertTrue(r.leaves().size() == 1);
}
r.close();
}
@@ -533,46 +513,25 @@ public class TestDirectoryReaderReopen e
}
}
- static void assertReaderClosed(IndexReader reader, boolean checkSubReaders, boolean checkNormsClosed) {
+ static void assertReaderClosed(IndexReader reader, boolean checkSubReaders) {
assertEquals(0, reader.getRefCount());
- if (checkNormsClosed && reader instanceof AtomicReader) {
- // TODO: should we really assert something here? we check for open files and this is obselete...
- // assertTrue(((SegmentReader) reader).normsClosed());
- }
-
if (checkSubReaders && reader instanceof CompositeReader) {
+ // we cannot use reader context here, as reader is
+ // already closed and calling getTopReaderContext() throws AlreadyClosed!
List<? extends IndexReader> subReaders = ((CompositeReader) reader).getSequentialSubReaders();
- for (IndexReader r : subReaders) {
- assertReaderClosed(r, checkSubReaders, checkNormsClosed);
+ for (final IndexReader r : subReaders) {
+ assertReaderClosed(r, checkSubReaders);
}
}
}
- /*
- private void assertReaderOpen(DirectoryReader reader) {
- reader.ensureOpen();
-
- if (reader instanceof DirectoryReader) {
- DirectoryReader[] subReaders = reader.getSequentialSubReaders();
- for (int i = 0; i < subReaders.length; i++) {
- assertReaderOpen(subReaders[i]);
- }
- }
- }
- */
-
- private void assertRefCountEquals(int refCount, DirectoryReader reader) {
- assertEquals("Reader has wrong refCount value.", refCount, reader.getRefCount());
- }
-
-
- private abstract static class TestReopen {
+ abstract static class TestReopen {
protected abstract DirectoryReader openReader() throws IOException;
protected abstract void modifyIndex(int i) throws IOException;
}
- private static class KeepAllCommits implements IndexDeletionPolicy {
+ static class KeepAllCommits implements IndexDeletionPolicy {
public void onInit(List<? extends IndexCommit> commits) {
}
public void onCommit(List<? extends IndexCommit> commits) {
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDoc.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDoc.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDoc.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDoc.java Fri Sep 21 17:21:34 2012
@@ -204,7 +204,7 @@ public class TestDoc extends LuceneTestC
final SegmentInfo si = new SegmentInfo(si1.info.dir, Constants.LUCENE_MAIN_VERSION, merged, -1, false, codec, null, null);
SegmentMerger merger = new SegmentMerger(si, InfoStream.getDefault(), trackingDir, IndexWriterConfig.DEFAULT_TERM_INDEX_INTERVAL,
- MergeState.CheckAbort.NONE, null, new FieldInfos.FieldNumbers(), context);
+ MergeState.CheckAbort.NONE, new FieldInfos.FieldNumbers(), context);
merger.add(r1);
merger.add(r2);
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocTermOrds.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocTermOrds.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocTermOrds.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocTermOrds.java Fri Sep 21 17:21:34 2012
@@ -122,7 +122,7 @@ public class TestDocTermOrds extends Luc
for(int id=0;id<NUM_DOCS;id++) {
Document doc = new Document();
- doc.add(new IntField("id", id, Field.Store.NO));
+ doc.add(new IntField("id", id, Field.Store.YES));
final int termCount = _TestUtil.nextInt(random(), 0, 20*RANDOM_MULTIPLIER);
while(ordsForDocSet.size() < termCount) {
@@ -154,11 +154,11 @@ public class TestDocTermOrds extends Luc
System.out.println("TEST: reader=" + r);
}
- for(IndexReader subR : r.getSequentialSubReaders()) {
+ for(AtomicReaderContext ctx : r.leaves()) {
if (VERBOSE) {
- System.out.println("\nTEST: sub=" + subR);
+ System.out.println("\nTEST: sub=" + ctx.reader());
}
- verify((AtomicReader) subR, idToOrds, termsArray, null);
+ verify(ctx.reader(), idToOrds, termsArray, null);
}
// Also test top-level reader: its enum does not support
@@ -219,7 +219,7 @@ public class TestDocTermOrds extends Luc
for(int id=0;id<NUM_DOCS;id++) {
Document doc = new Document();
- doc.add(new IntField("id", id, Field.Store.NO));
+ doc.add(new IntField("id", id, Field.Store.YES));
final int termCount = _TestUtil.nextInt(random(), 0, 20*RANDOM_MULTIPLIER);
while(ordsForDocSet.size() < termCount) {
@@ -273,11 +273,11 @@ public class TestDocTermOrds extends Luc
idToOrdsPrefix[id] = newOrdsArray;
}
- for(IndexReader subR : r.getSequentialSubReaders()) {
+ for(AtomicReaderContext ctx : r.leaves()) {
if (VERBOSE) {
- System.out.println("\nTEST: sub=" + subR);
+ System.out.println("\nTEST: sub=" + ctx.reader());
}
- verify((AtomicReader) subR, idToOrdsPrefix, termsArray, prefixRef);
+ verify(ctx.reader(), idToOrdsPrefix, termsArray, prefixRef);
}
// Also test top-level reader: its enum does not support
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java Fri Sep 21 17:21:34 2012
@@ -91,7 +91,7 @@ public class TestDocValuesIndexing exten
writer.close(true);
DirectoryReader reader = DirectoryReader.open(dir, 1);
- assertEquals(1, reader.getSequentialSubReaders().size());
+ assertEquals(1, reader.leaves().size());
IndexSearcher searcher = new IndexSearcher(reader);
@@ -881,7 +881,7 @@ public class TestDocValuesIndexing exten
public int docId(AtomicReader reader, Term term) throws IOException {
int docFreq = reader.docFreq(term);
assertEquals(1, docFreq);
- DocsEnum termDocsEnum = reader.termDocsEnum(null, term.field, term.bytes, 0);
+ DocsEnum termDocsEnum = reader.termDocsEnum(term);
int nextDoc = termDocsEnum.nextDoc();
assertEquals(DocIdSetIterator.NO_MORE_DOCS, termDocsEnum.nextDoc());
return nextDoc;
@@ -1042,4 +1042,34 @@ public class TestDocValuesIndexing exten
w.close();
d.close();
}
+
+ public void testDocValuesUnstored() throws IOException {
+ Directory dir = newDirectory();
+ IndexWriterConfig iwconfig = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
+ iwconfig.setMergePolicy(newLogMergePolicy());
+ IndexWriter writer = new IndexWriter(dir, iwconfig);
+ for (int i = 0; i < 50; i++) {
+ Document doc = new Document();
+ doc.add(new PackedLongDocValuesField("dv", i));
+ doc.add(new TextField("docId", "" + i, Field.Store.YES));
+ writer.addDocument(doc);
+ }
+ DirectoryReader r = writer.getReader();
+ SlowCompositeReaderWrapper slow = new SlowCompositeReaderWrapper(r);
+ FieldInfos fi = slow.getFieldInfos();
+ FieldInfo dvInfo = fi.fieldInfo("dv");
+ assertTrue(dvInfo.hasDocValues());
+ DocValues dv = slow.docValues("dv");
+ Source source = dv.getDirectSource();
+ for (int i = 0; i < 50; i++) {
+ assertEquals(i, source.getInt(i));
+ StoredDocument d = slow.document(i);
+ // cannot use d.get("dv") due to another bug!
+ assertNull(d.getField("dv"));
+ assertEquals(Integer.toString(i), d.get("docId"));
+ }
+ slow.close();
+ writer.close();
+ dir.close();
+ }
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocValuesTypeCompatibility.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocValuesTypeCompatibility.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocValuesTypeCompatibility.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocValuesTypeCompatibility.java Fri Sep 21 17:21:34 2012
@@ -24,6 +24,7 @@ import org.apache.lucene.document.ByteDo
import org.apache.lucene.document.DerefBytesDocValuesField;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.DoubleDocValuesField;
+import org.apache.lucene.document.Field;
import org.apache.lucene.document.FloatDocValuesField;
import org.apache.lucene.document.IntDocValuesField;
import org.apache.lucene.document.LongDocValuesField;
@@ -67,7 +68,7 @@ public class TestDocValuesTypeCompatibil
}
@SuppressWarnings("fallthrough")
- public IndexableField getRandomIntsField(Type maxType, boolean force) {
+ public Field getRandomIntsField(Type maxType, boolean force) {
switch (maxType) {
case VAR_INTS:
@@ -120,7 +121,7 @@ public class TestDocValuesTypeCompatibil
}
@SuppressWarnings("fallthrough")
- public IndexableField getRandomFloatField(Type maxType, boolean force) {
+ public Field getRandomFloatField(Type maxType, boolean force) {
switch (maxType) {
case FLOAT_64:
@@ -161,7 +162,7 @@ public class TestDocValuesTypeCompatibil
iwc.setRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH);
iwc.setRAMPerThreadHardLimitMB(2000);
IndexWriter writer = new IndexWriter(dir, iwc);
- IndexableField[] fields = new IndexableField[] {
+ Field[] fields = new Field[] {
new DoubleDocValuesField("f", 1.0), new IntDocValuesField("f", 1),
new ShortDocValuesField("f", (short) 1),
new ByteDocValuesField("f", (byte) 1)};
@@ -194,7 +195,7 @@ public class TestDocValuesTypeCompatibil
IndexWriter writer = new IndexWriter(dir, iwc);
boolean mustBeFixed = random().nextBoolean();
int maxSize = 2 + random().nextInt(15);
- IndexableField bytesField = getRandomBytesField(mustBeFixed, maxSize,
+ Field bytesField = getRandomBytesField(mustBeFixed, maxSize,
true);
addDoc(writer, bytesField);
for (int j = 0; j < numDocs; j++) {
@@ -207,7 +208,7 @@ public class TestDocValuesTypeCompatibil
}
}
- public IndexableField getRandomBytesField(boolean mustBeFixed, int maxSize,
+ public Field getRandomBytesField(boolean mustBeFixed, int maxSize,
boolean mustBeVariableIfNotFixed) {
int size = mustBeFixed ? maxSize : random().nextInt(maxSize) + 1;
StringBuilder s = new StringBuilder();
@@ -256,16 +257,16 @@ public class TestDocValuesTypeCompatibil
dir.close();
}
- private void addDoc(IndexWriter writer, IndexableField... fields)
+ private void addDoc(IndexWriter writer, Field... fields)
throws IOException {
Document doc = new Document();
- for (IndexableField indexableField : fields) {
+ for (Field indexableField : fields) {
doc.add(indexableField);
}
writer.addDocument(doc);
}
- public IndexableField getRandomIndexableDVField() {
+ public Field getRandomIndexableDVField() {
int size = random().nextInt(100) + 1;
StringBuilder s = new StringBuilder();
for (int i = 0; i < size; i++) {
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocsAndPositions.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocsAndPositions.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocsAndPositions.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocsAndPositions.java Fri Sep 21 17:21:34 2012
@@ -63,7 +63,7 @@ public class TestDocsAndPositions extend
int num = atLeast(13);
for (int i = 0; i < num; i++) {
BytesRef bytes = new BytesRef("1");
- IndexReaderContext topReaderContext = reader.getTopReaderContext();
+ IndexReaderContext topReaderContext = reader.getContext();
for (AtomicReaderContext atomicReaderContext : topReaderContext.leaves()) {
DocsAndPositionsEnum docsAndPosEnum = getDocsAndPositions(
atomicReaderContext.reader(), bytes, null);
@@ -92,7 +92,14 @@ public class TestDocsAndPositions extend
public DocsAndPositionsEnum getDocsAndPositions(AtomicReader reader,
BytesRef bytes, Bits liveDocs) throws IOException {
- return reader.termPositionsEnum(null, fieldName, bytes);
+ Terms terms = reader.terms(fieldName);
+ if (terms != null) {
+ TermsEnum te = terms.iterator(null);
+ if (te.seekExact(bytes, true)) {
+ return te.docsAndPositions(liveDocs, null);
+ }
+ }
+ return null;
}
/**
@@ -138,7 +145,7 @@ public class TestDocsAndPositions extend
int num = atLeast(13);
for (int i = 0; i < num; i++) {
BytesRef bytes = new BytesRef("" + term);
- IndexReaderContext topReaderContext = reader.getTopReaderContext();
+ IndexReaderContext topReaderContext = reader.getContext();
for (AtomicReaderContext atomicReaderContext : topReaderContext.leaves()) {
DocsAndPositionsEnum docsAndPosEnum = getDocsAndPositions(
atomicReaderContext.reader(), bytes, null);
@@ -214,7 +221,7 @@ public class TestDocsAndPositions extend
int num = atLeast(13);
for (int i = 0; i < num; i++) {
BytesRef bytes = new BytesRef("" + term);
- IndexReaderContext topReaderContext = reader.getTopReaderContext();
+ IndexReaderContext topReaderContext = reader.getContext();
for (AtomicReaderContext context : topReaderContext.leaves()) {
int maxDoc = context.reader().maxDoc();
DocsEnum docsEnum = _TestUtil.docs(random(), context.reader(), fieldName, bytes, null, null, DocsEnum.FLAG_FREQS);
@@ -292,7 +299,7 @@ public class TestDocsAndPositions extend
for (int i = 0; i < num; i++) {
BytesRef bytes = new BytesRef("even");
- IndexReaderContext topReaderContext = reader.getTopReaderContext();
+ IndexReaderContext topReaderContext = reader.getContext();
for (AtomicReaderContext atomicReaderContext : topReaderContext.leaves()) {
DocsAndPositionsEnum docsAndPosEnum = getDocsAndPositions(
atomicReaderContext.reader(), bytes, null);
@@ -352,7 +359,7 @@ public class TestDocsAndPositions extend
writer.addDocument(doc);
DirectoryReader reader = writer.getReader();
AtomicReader r = getOnlySegmentReader(reader);
- DocsAndPositionsEnum disi = r.termPositionsEnum(null, "foo", new BytesRef("bar"));
+ DocsAndPositionsEnum disi = r.termPositionsEnum(new Term("foo", "bar"));
int docid = disi.docID();
assertTrue(docid == -1 || docid == DocIdSetIterator.NO_MORE_DOCS);
assertTrue(disi.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocumentWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocumentWriter.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocumentWriter.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDocumentWriter.java Fri Sep 21 17:21:34 2012
@@ -67,11 +67,11 @@ public class TestDocumentWriter extends
//After adding the document, we should be able to read it back in
SegmentReader reader = new SegmentReader(info, DirectoryReader.DEFAULT_TERMS_INDEX_DIVISOR, newIOContext(random()));
assertTrue(reader != null);
- Document doc = reader.document(0);
+ StoredDocument doc = reader.document(0);
assertTrue(doc != null);
//System.out.println("Document: " + doc);
- IndexableField [] fields = doc.getFields("textField2");
+ StorableField[] fields = doc.getFields("textField2");
assertTrue(fields != null && fields.length == 1);
assertTrue(fields[0].stringValue().equals(DocHelper.FIELD_2_TEXT));
assertTrue(fields[0].fieldType().storeTermVectors());
@@ -243,18 +243,18 @@ public class TestDocumentWriter extends
writer.close();
SegmentReader reader = new SegmentReader(info, DirectoryReader.DEFAULT_TERMS_INDEX_DIVISOR, newIOContext(random()));
- DocsAndPositionsEnum termPositions = reader.termPositionsEnum(reader.getLiveDocs(), "preanalyzed", new BytesRef("term1"));
+ DocsAndPositionsEnum termPositions = reader.termPositionsEnum(new Term("preanalyzed", "term1"));
assertTrue(termPositions.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
assertEquals(1, termPositions.freq());
assertEquals(0, termPositions.nextPosition());
- termPositions = reader.termPositionsEnum(reader.getLiveDocs(), "preanalyzed", new BytesRef("term2"));
+ termPositions = reader.termPositionsEnum(new Term("preanalyzed", "term2"));
assertTrue(termPositions.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
assertEquals(2, termPositions.freq());
assertEquals(1, termPositions.nextPosition());
assertEquals(3, termPositions.nextPosition());
- termPositions = reader.termPositionsEnum(reader.getLiveDocs(), "preanalyzed", new BytesRef("term3"));
+ termPositions = reader.termPositionsEnum(new Term("preanalyzed", "term3"));
assertTrue(termPositions.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
assertEquals(1, termPositions.freq());
assertEquals(2, termPositions.nextPosition());
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDuelingCodecs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDuelingCodecs.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDuelingCodecs.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestDuelingCodecs.java Fri Sep 21 17:21:34 2012
@@ -191,10 +191,6 @@ public class TestDuelingCodecs extends L
if (leftFields.size() != -1 && rightFields.size() != -1) {
assertEquals(info, leftFields.size(), rightFields.size());
}
-
- if (leftFields.getUniqueTermCount() != -1 && rightFields.getUniqueTermCount() != -1) {
- assertEquals(info, leftFields.getUniqueTermCount(), rightFields.getUniqueTermCount());
- }
}
/**
@@ -543,25 +539,25 @@ public class TestDuelingCodecs extends L
public void assertStoredFields(IndexReader leftReader, IndexReader rightReader) throws Exception {
assert leftReader.maxDoc() == rightReader.maxDoc();
for (int i = 0; i < leftReader.maxDoc(); i++) {
- Document leftDoc = leftReader.document(i);
- Document rightDoc = rightReader.document(i);
+ StoredDocument leftDoc = leftReader.document(i);
+ StoredDocument rightDoc = rightReader.document(i);
// TODO: I think this is bogus because we don't document what the order should be
// from these iterators, etc. I think the codec/IndexReader should be free to order this stuff
// in whatever way it wants (e.g. maybe it packs related fields together or something)
// To fix this, we sort the fields in both documents by name, but
// we still assume that all instances with same name are in order:
- Comparator<IndexableField> comp = new Comparator<IndexableField>() {
+ Comparator<StorableField> comp = new Comparator<StorableField>() {
@Override
- public int compare(IndexableField arg0, IndexableField arg1) {
+ public int compare(StorableField arg0, StorableField arg1) {
return arg0.name().compareTo(arg1.name());
}
};
Collections.sort(leftDoc.getFields(), comp);
Collections.sort(rightDoc.getFields(), comp);
- Iterator<IndexableField> leftIterator = leftDoc.iterator();
- Iterator<IndexableField> rightIterator = rightDoc.iterator();
+ Iterator<StorableField> leftIterator = leftDoc.iterator();
+ Iterator<StorableField> rightIterator = rightDoc.iterator();
while (leftIterator.hasNext()) {
assertTrue(info, rightIterator.hasNext());
assertStoredField(leftIterator.next(), rightIterator.next());
@@ -573,7 +569,7 @@ public class TestDuelingCodecs extends L
/**
* checks that two stored fields are equivalent
*/
- public void assertStoredField(IndexableField leftField, IndexableField rightField) {
+ public void assertStoredField(StorableField leftField, StorableField rightField) {
assertEquals(info, leftField.name(), rightField.name());
assertEquals(info, leftField.binaryValue(), rightField.binaryValue());
assertEquals(info, leftField.stringValue(), rightField.stringValue());
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestFieldInfos.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestFieldInfos.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestFieldInfos.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestFieldInfos.java Fri Sep 21 17:21:34 2012
@@ -47,7 +47,7 @@ public class TestFieldInfos extends Luce
//Positive test of FieldInfos
assertTrue(testDoc != null);
FieldInfos.Builder builder = new FieldInfos.Builder();
- for (IndexableField field : testDoc) {
+ for (IndexableField field : testDoc.getFields()) {
builder.addOrUpdate(field.name(), field.fieldType());
}
FieldInfos fieldInfos = builder.finish();
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java Fri Sep 21 17:21:34 2012
@@ -55,7 +55,7 @@ public class TestFieldsReader extends Lu
public static void beforeClass() throws Exception {
fieldInfos = new FieldInfos.Builder();
DocHelper.setupDoc(testDoc);
- for (IndexableField field : testDoc) {
+ for (IndexableField field : testDoc.getFields()) {
fieldInfos.addOrUpdate(field.name(), field.fieldType());
}
dir = newDirectory();
@@ -79,7 +79,7 @@ public class TestFieldsReader extends Lu
assertTrue(dir != null);
assertTrue(fieldInfos != null);
IndexReader reader = DirectoryReader.open(dir);
- Document doc = reader.document(0);
+ StoredDocument doc = reader.document(0);
assertTrue(doc != null);
assertTrue(doc.getField(DocHelper.TEXT_FIELD_1_KEY) != null);
@@ -104,7 +104,7 @@ public class TestFieldsReader extends Lu
DocumentStoredFieldVisitor visitor = new DocumentStoredFieldVisitor(DocHelper.TEXT_FIELD_3_KEY);
reader.document(0, visitor);
- final List<IndexableField> fields = visitor.getDocument().getFields();
+ final List<StorableField> fields = visitor.getDocument().getFields();
assertEquals(1, fields.size());
assertEquals(DocHelper.TEXT_FIELD_3_KEY, fields.get(0).name());
reader.close();
@@ -186,7 +186,7 @@ public class TestFieldsReader extends Lu
}
@Override
public FaultyIndexInput clone() {
- return new FaultyIndexInput((IndexInput) delegate.clone());
+ return new FaultyIndexInput(delegate.clone());
}
}
@@ -279,7 +279,7 @@ public class TestFieldsReader extends Lu
doc.add(sf);
answers[id] = answer;
typeAnswers[id] = typeAnswer;
- FieldType ft = new FieldType(IntField.TYPE_NOT_STORED);
+ FieldType ft = new FieldType(IntField.TYPE_STORED);
ft.setNumericPrecisionStep(Integer.MAX_VALUE);
doc.add(new IntField("id", id, ft));
w.addDocument(doc);
@@ -289,10 +289,11 @@ public class TestFieldsReader extends Lu
assertEquals(numDocs, r.numDocs());
- for(IndexReader sub : r.getSequentialSubReaders()) {
- final int[] ids = FieldCache.DEFAULT.getInts((AtomicReader) sub, "id", false);
+ for(AtomicReaderContext ctx : r.leaves()) {
+ final AtomicReader sub = ctx.reader();
+ final int[] ids = FieldCache.DEFAULT.getInts(sub, "id", false);
for(int docID=0;docID<sub.numDocs();docID++) {
- final Document doc = sub.document(docID);
+ final StoredDocument doc = sub.document(docID);
final Field f = (Field) doc.getField("nf");
assertTrue("got f=" + f, f instanceof StoredField);
assertEquals(answers[ids[docID]], f.numericValue());
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexFileDeleter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexFileDeleter.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexFileDeleter.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexFileDeleter.java Fri Sep 21 17:21:34 2012
@@ -45,7 +45,10 @@ public class TestIndexFileDeleter extend
}
LogMergePolicy mergePolicy = newLogMergePolicy(true, 10);
- mergePolicy.setNoCFSRatio(1); // This test expects all of its segments to be in CFS
+
+ // This test expects all of its segments to be in CFS
+ mergePolicy.setNoCFSRatio(1.0);
+ mergePolicy.setMaxCFSSegmentSizeMB(Double.POSITIVE_INFINITY);
IndexWriter writer = new IndexWriter(
dir,
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java Fri Sep 21 17:21:34 2012
@@ -908,8 +908,8 @@ public class TestIndexWriter extends Luc
w.close();
IndexReader ir = DirectoryReader.open(dir);
- Document doc2 = ir.document(0);
- IndexableField f2 = doc2.getField("binary");
+ StoredDocument doc2 = ir.document(0);
+ StorableField f2 = doc2.getField("binary");
b = f2.binaryValue().bytes;
assertTrue(b != null);
assertEquals(17, b.length, 17);
@@ -1165,8 +1165,8 @@ public class TestIndexWriter extends Luc
w.close();
IndexReader ir = DirectoryReader.open(dir);
- Document doc2 = ir.document(0);
- IndexableField f3 = doc2.getField("binary");
+ StoredDocument doc2 = ir.document(0);
+ StorableField f3 = doc2.getField("binary");
b = f3.binaryValue().bytes;
assertTrue(b != null);
assertEquals(17, b.length, 17);
@@ -1207,8 +1207,8 @@ public class TestIndexWriter extends Luc
doc.add(newField("zzz", "1 2 3", customType));
w.addDocument(doc);
IndexReader r = w.getReader();
- Document doc2 = r.document(0);
- Iterator<IndexableField> it = doc2.getFields().iterator();
+ StoredDocument doc2 = r.document(0);
+ Iterator<StorableField> it = doc2.getFields().iterator();
assertTrue(it.hasNext());
Field f = (Field) it.next();
assertEquals(f.name(), "zzz");
@@ -1275,7 +1275,10 @@ public class TestIndexWriter extends Luc
Directory dir = newMockDirectory(); // relies on windows semantics
LogMergePolicy mergePolicy = newLogMergePolicy(true);
- mergePolicy.setNoCFSRatio(1); // This test expects all of its segments to be in CFS
+
+ // This test expects all of its segments to be in CFS
+ mergePolicy.setNoCFSRatio(1.0);
+ mergePolicy.setMaxCFSSegmentSizeMB(Double.POSITIVE_INFINITY);
IndexWriter w = new IndexWriter(
dir,
@@ -1498,9 +1501,9 @@ public class TestIndexWriter extends Luc
assertNoUnreferencedFiles(dir, "no tv files");
DirectoryReader r0 = DirectoryReader.open(dir);
- for (IndexReader r : r0.getSequentialSubReaders()) {
- SegmentInfoPerCommit s = ((SegmentReader) r).getSegmentInfo();
- assertFalse(((SegmentReader) r).getFieldInfos().hasVectors());
+ for (AtomicReaderContext ctx : r0.leaves()) {
+ SegmentReader sr = (SegmentReader) ctx.reader();
+ assertFalse(sr.getFieldInfos().hasVectors());
}
r0.close();
@@ -1542,7 +1545,7 @@ public class TestIndexWriter extends Luc
}
@Override
- public void setReader(Reader input) throws IOException {
+ public void reset() throws IOException {
this.upto = 0;
final StringBuilder b = new StringBuilder();
final char[] buffer = new char[1024];
@@ -1886,4 +1889,50 @@ public class TestIndexWriter extends Luc
dir.close();
}
}
+
+ // LUCENE-4398
+ public void testRotatingFieldNames() throws Exception {
+ Directory dir = newFSDirectory(_TestUtil.getTempDir("TestIndexWriter.testChangingFields"));
+ IndexWriterConfig iwc = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
+ iwc.setRAMBufferSizeMB(0.2);
+ iwc.setMaxBufferedDocs(-1);
+ IndexWriter w = new IndexWriter(dir, iwc);
+ int upto = 0;
+
+ FieldType ft = new FieldType(TextField.TYPE_NOT_STORED);
+ ft.setOmitNorms(true);
+
+ int firstDocCount = -1;
+ for(int iter=0;iter<10;iter++) {
+ final int startFlushCount = w.getFlushCount();
+ int docCount = 0;
+ while(w.getFlushCount() == startFlushCount) {
+ Document doc = new Document();
+ for(int i=0;i<10;i++) {
+ doc.add(new Field("field" + (upto++), "content", ft));
+ }
+ w.addDocument(doc);
+ docCount++;
+ }
+
+ if (VERBOSE) {
+ System.out.println("TEST: iter=" + iter + " flushed after docCount=" + docCount);
+ }
+
+ if (iter == 0) {
+ firstDocCount = docCount;
+ }
+
+ assertTrue("flushed after too few docs: first segment flushed at docCount=" + firstDocCount + ", but current segment flushed after docCount=" + docCount + "; iter=" + iter, ((float) docCount) / firstDocCount > 0.9);
+
+ if (upto > 5000) {
+ // Start re-using field names after a while
+ // ... important because otherwise we can OOME due
+ // to too many FieldInfo instances.
+ upto = 0;
+ }
+ }
+ w.close();
+ dir.close();
+ }
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java Fri Sep 21 17:21:34 2012
@@ -286,7 +286,7 @@ public class TestIndexWriterCommit exten
// Reader should see index as multi-seg at this
// point:
- assertTrue("Reader incorrectly sees one segment", reader.getSequentialSubReaders().size() > 1);
+ assertTrue("Reader incorrectly sees one segment", reader.leaves().size() > 1);
reader.close();
// Abort the writer:
@@ -297,7 +297,7 @@ public class TestIndexWriterCommit exten
reader = DirectoryReader.open(dir);
// Reader should still see index as multi-segment
- assertTrue("Reader incorrectly sees one segment", reader.getSequentialSubReaders().size() > 1);
+ assertTrue("Reader incorrectly sees one segment", reader.leaves().size() > 1);
reader.close();
if (VERBOSE) {
@@ -316,7 +316,7 @@ public class TestIndexWriterCommit exten
reader = DirectoryReader.open(dir);
// Reader should see index as one segment
- assertEquals("Reader incorrectly sees more than one segment", 1, reader.getSequentialSubReaders().size());
+ assertEquals("Reader incorrectly sees more than one segment", 1, reader.leaves().size());
reader.close();
dir.close();
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java Fri Sep 21 17:21:34 2012
@@ -331,15 +331,17 @@ public class TestIndexWriterConfig exten
public void testLiveChangeToCFS() throws Exception {
Directory dir = newDirectory();
IndexWriterConfig iwc = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
- iwc.setMergePolicy(newLogMergePolicy());
+ iwc.setMergePolicy(newLogMergePolicy(true));
// Start false:
((LogMergePolicy) iwc.getMergePolicy()).setUseCompoundFile(false);
IndexWriter w = new IndexWriter(dir, iwc);
// Change to true:
- ((LogMergePolicy) w.getConfig().getMergePolicy()).setNoCFSRatio(1.0);
- ((LogMergePolicy) w.getConfig().getMergePolicy()).setUseCompoundFile(true);
+ LogMergePolicy lmp = ((LogMergePolicy) w.getConfig().getMergePolicy());
+ lmp.setNoCFSRatio(1.0);
+ lmp.setMaxCFSSegmentSizeMB(Double.POSITIVE_INFINITY);
+ lmp.setUseCompoundFile(true);
Document doc = new Document();
doc.add(newStringField("field", "foo", Store.NO));
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java Fri Sep 21 17:21:34 2012
@@ -1134,7 +1134,10 @@ public class TestIndexWriterExceptions e
newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random())).
setMergePolicy(newLogMergePolicy(true))
);
- ((LogMergePolicy) writer.getConfig().getMergePolicy()).setNoCFSRatio(1.0);
+ LogMergePolicy lmp = (LogMergePolicy) writer.getConfig().getMergePolicy();
+ // Force creation of CFS:
+ lmp.setNoCFSRatio(1.0);
+ lmp.setMaxCFSSegmentSizeMB(Double.POSITIVE_INFINITY);
// add 100 documents
for (int i = 0; i < 100; i++) {
@@ -1293,7 +1296,7 @@ public class TestIndexWriterExceptions e
assertTrue(reader.numDocs() > 0);
SegmentInfos sis = new SegmentInfos();
sis.read(dir);
- for(AtomicReaderContext context : reader.getTopReaderContext().leaves()) {
+ for(AtomicReaderContext context : reader.leaves()) {
assertFalse(context.reader().getFieldInfos().hasVectors());
}
reader.close();
@@ -1556,50 +1559,46 @@ public class TestIndexWriterExceptions e
try {
doc = new Document();
// try to boost with norms omitted
- List<IndexableField> list = new ArrayList<IndexableField>();
- list.add(new IndexableField() {
-
- @Override
- public String name() {
- return "foo";
- }
-
- @Override
- public IndexableFieldType fieldType() {
- return StringField.TYPE_NOT_STORED;
- }
-
- @Override
- public float boost() {
- return 5f;
- }
-
+ IndexDocument docList = new IndexDocument() {
+
+ List<IndexableField> list = new ArrayList<IndexableField>();
+ List<StorableField> storedList = new ArrayList<StorableField>();
+
@Override
- public BytesRef binaryValue() {
- return null;
- }
-
- @Override
- public String stringValue() {
- return "baz";
- }
-
- @Override
- public Reader readerValue() {
- return null;
- }
-
- @Override
- public Number numericValue() {
- return null;
+ public Iterable<? extends IndexableField> indexableFields() {
+ if (list.size() == 0) {
+ list.add(new IndexableField() {
+ @Override
+ public String name() {
+ return "foo";
+ }
+
+ @Override
+ public IndexableFieldType fieldType() {
+ return StringField.TYPE_NOT_STORED;
+ }
+
+ @Override
+ public float boost() {
+ return 5f;
+ }
+
+ @Override
+ public TokenStream tokenStream(Analyzer analyzer) throws IOException {
+ return null;
+ }
+ });
+ }
+ return list;
}
@Override
- public TokenStream tokenStream(Analyzer analyzer) throws IOException {
- return null;
+ public Iterable<? extends StorableField> storableFields() {
+ return storedList;
}
- });
- iw.addDocument(list);
+
+ };
+ iw.addDocument(docList);
fail("didn't get any exception, boost silently discarded");
} catch (UnsupportedOperationException expected) {
// expected
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java Fri Sep 21 17:21:34 2012
@@ -187,7 +187,7 @@ public class TestIndexWriterForceMerge e
if (0 == pass) {
writer.close();
DirectoryReader reader = DirectoryReader.open(dir);
- assertEquals(1, reader.getSequentialSubReaders().size());
+ assertEquals(1, reader.leaves().size());
reader.close();
} else {
// Get another segment to flush so we can verify it is
@@ -197,7 +197,7 @@ public class TestIndexWriterForceMerge e
writer.close();
DirectoryReader reader = DirectoryReader.open(dir);
- assertTrue(reader.getSequentialSubReaders().size() > 1);
+ assertTrue(reader.leaves().size() > 1);
reader.close();
SegmentInfos infos = new SegmentInfos();
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMergePolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMergePolicy.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMergePolicy.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMergePolicy.java Fri Sep 21 17:21:34 2012
@@ -263,4 +263,31 @@ public class TestIndexWriterMergePolicy
assertTrue(numSegments < mergeFactor);
}
}
+
+ private static final double EPSILON = 1E-14;
+
+ public void testSetters() {
+ assertSetters(new LogByteSizeMergePolicy());
+ assertSetters(new LogDocMergePolicy());
+ }
+
+ private void assertSetters(LogMergePolicy lmp) {
+ lmp.setMaxCFSSegmentSizeMB(2.0);
+ assertEquals(2.0, lmp.getMaxCFSSegmentSizeMB(), EPSILON);
+
+ lmp.setMaxCFSSegmentSizeMB(Double.POSITIVE_INFINITY);
+ assertEquals(Long.MAX_VALUE/1024/1024., lmp.getMaxCFSSegmentSizeMB(), EPSILON*Long.MAX_VALUE);
+
+ lmp.setMaxCFSSegmentSizeMB(Long.MAX_VALUE/1024/1024.);
+ assertEquals(Long.MAX_VALUE/1024/1024., lmp.getMaxCFSSegmentSizeMB(), EPSILON*Long.MAX_VALUE);
+
+ try {
+ lmp.setMaxCFSSegmentSizeMB(-2.0);
+ fail("Didn't throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // pass
+ }
+
+ // TODO: Add more checks for other non-double setters!
+ }
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMerging.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMerging.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMerging.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMerging.java Fri Sep 21 17:21:34 2012
@@ -84,7 +84,7 @@ public class TestIndexWriterMerging exte
int max = reader.maxDoc();
for (int i = 0; i < max; i++)
{
- Document temp = reader.document(i);
+ StoredDocument temp = reader.document(i);
//System.out.println("doc "+i+"="+temp.getField("count").stringValue());
//compare the index doc number to the value that it should be
if (!temp.getField("count").stringValue().equals((i + startAt) + ""))
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java Fri Sep 21 17:21:34 2012
@@ -249,7 +249,7 @@ public class TestIndexWriterOnDiskFull e
// Make a new dir that will enforce disk usage:
MockDirectoryWrapper dir = new MockDirectoryWrapper(random(), new RAMDirectory(startDir, newIOContext(random())));
- writer = new IndexWriter(dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random())).setOpenMode(OpenMode.APPEND).setMergePolicy(newLogMergePolicy()));
+ writer = new IndexWriter(dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random())).setOpenMode(OpenMode.APPEND).setMergePolicy(newLogMergePolicy(false)));
IOException err = null;
MergeScheduler ms = writer.getConfig().getMergeScheduler();
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterReader.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterReader.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterReader.java Fri Sep 21 17:21:34 2012
@@ -141,7 +141,7 @@ public class TestIndexWriterReader exten
String id10 = r1.document(10).getField("id").stringValue();
- Document newDoc = r1.document(10);
+ Document newDoc = new Document(r1.document(10));
newDoc.removeField("id");
newDoc.add(newStringField("id", Integer.toString(8000), Field.Store.YES));
writer.updateDocument(new Term("id", id10), newDoc);
@@ -271,9 +271,9 @@ public class TestIndexWriterReader exten
assertEquals(100, index2df);
// verify the docs are from different indexes
- Document doc5 = r1.document(5);
+ StoredDocument doc5 = r1.document(5);
assertEquals("index1", doc5.get("indexname"));
- Document doc150 = r1.document(150);
+ StoredDocument doc150 = r1.document(150);
assertEquals("index2", doc150.get("indexname"));
r1.close();
writer.close();
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java Fri Sep 21 17:21:34 2012
@@ -259,7 +259,7 @@ public class TestIndexWriterUnicode exte
w.close();
IndexReader ir = DirectoryReader.open(dir);
- Document doc2 = ir.document(0);
+ StoredDocument doc2 = ir.document(0);
for(int i=0;i<count;i++) {
assertEquals("field " + i + " was not indexed correctly", 1, ir.docFreq(new Term("f"+i, utf8Data[2*i+1])));
assertEquals("field " + i + " is incorrect", utf8Data[2*i+1], doc2.getField("f"+i).stringValue());
@@ -315,7 +315,7 @@ public class TestIndexWriterUnicode exte
IndexReader r = writer.getReader();
// Test each sub-segment
- for (AtomicReaderContext ctx : r.getTopReaderContext().leaves()) {
+ for (AtomicReaderContext ctx : r.leaves()) {
checkTermsOrder(ctx.reader(), allTerms, false);
}
checkTermsOrder(r, allTerms, true);
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java Fri Sep 21 17:21:34 2012
@@ -33,6 +33,7 @@ import org.apache.lucene.search.DocIdSet
import org.apache.lucene.store.AlreadyClosedException;
import org.apache.lucene.store.BaseDirectoryWrapper;
import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.store.MockDirectoryWrapper;
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.BytesRef;
@@ -453,15 +454,23 @@ public class TestIndexWriterWithThreads
thread1.join();
thread2.join();
- assertFalse("Failed due to: " + thread1.failure, thread1.failed);
- assertFalse("Failed due to: " + thread2.failure, thread2.failed);
- // now verify that we have two documents in the index
- IndexReader reader = DirectoryReader.open(dir);
- assertEquals("IndexReader should have one document per thread running", 2,
+ // ensure the directory is closed if we hit the timeout and throw assume
+ // TODO: can we improve this in LuceneTestCase? I dont know what the logic would be...
+ try {
+ assumeFalse("aborting test: timeout obtaining lock", thread1.failure instanceof LockObtainFailedException);
+ assumeFalse("aborting test: timeout obtaining lock", thread2.failure instanceof LockObtainFailedException);
+
+ assertFalse("Failed due to: " + thread1.failure, thread1.failed);
+ assertFalse("Failed due to: " + thread2.failure, thread2.failed);
+ // now verify that we have two documents in the index
+ IndexReader reader = DirectoryReader.open(dir);
+ assertEquals("IndexReader should have one document per thread running", 2,
reader.numDocs());
- reader.close();
- dir.close();
+ reader.close();
+ } finally {
+ dir.close();
+ }
}
static class DelayedIndexAndCloseRunnable extends Thread {
@@ -504,7 +513,7 @@ public class TestIndexWriterWithThreads
// LUCENE-4147
public void testRollbackAndCommitWithThreads() throws Exception {
- final BaseDirectoryWrapper d = newFSDirectory(_TestUtil.getTempDir("RollbackAndCommitWithThreads"));
+ final BaseDirectoryWrapper d = newDirectory();
if (d instanceof MockDirectoryWrapper) {
((MockDirectoryWrapper)d).setPreventDoubleWrite(false);
}
@@ -515,7 +524,7 @@ public class TestIndexWriterWithThreads
writerRef.set(new IndexWriter(d, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()))));
final LineFileDocs docs = new LineFileDocs(random());
final Thread[] threads = new Thread[threadCount];
- final int iters = atLeast(1000);
+ final int iters = atLeast(100);
final AtomicBoolean failed = new AtomicBoolean();
final Lock rollbackLock = new ReentrantLock();
final Lock commitLock = new ReentrantLock();
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexableField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexableField.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexableField.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestIndexableField.java Fri Sep 21 17:21:34 2012
@@ -24,8 +24,8 @@ import java.util.Iterator;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
+import org.apache.lucene.index.DocValues.Type;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.DocIdSetIterator;
@@ -39,7 +39,7 @@ import org.apache.lucene.util._TestUtil;
public class TestIndexableField extends LuceneTestCase {
- private class MyField implements IndexableField {
+ private class MyField implements IndexableField, StorableField {
private final int counter;
private final IndexableFieldType fieldType = new IndexableFieldType() {
@@ -89,7 +89,7 @@ public class TestIndexableField extends
}
@Override
- public DocValues.Type docValueType() {
+ public Type docValueType() {
return null;
}
};
@@ -183,35 +183,100 @@ public class TestIndexableField extends
final int finalBaseCount = baseCount;
baseCount += fieldCount-1;
- w.addDocument(new Iterable<IndexableField>() {
+ IndexDocument d = new IndexDocument() {
@Override
- public Iterator<IndexableField> iterator() {
- return new Iterator<IndexableField>() {
- int fieldUpto;
-
+ public Iterable<? extends IndexableField> indexableFields() {
+ return new Iterable<IndexableField>() {
@Override
- public boolean hasNext() {
- return fieldUpto < fieldCount;
- }
-
- @Override
- public IndexableField next() {
- assert fieldUpto < fieldCount;
- if (fieldUpto == 0) {
- fieldUpto = 1;
- return newStringField("id", ""+finalDocCount, Field.Store.YES);
- } else {
- return new MyField(finalBaseCount + (fieldUpto++-1));
- }
+ public Iterator<IndexableField> iterator() {
+ return new Iterator<IndexableField>() {
+ int fieldUpto = 0;
+ private IndexableField next;
+
+ @Override
+ public boolean hasNext() {
+ if (fieldUpto >= fieldCount) return false;
+
+ next = null;
+ if (fieldUpto == 0) {
+ fieldUpto = 1;
+ next = newStringField("id", ""+finalDocCount, Field.Store.YES);
+ } else {
+ next = new MyField(finalBaseCount + (fieldUpto++-1));
+ }
+
+ if (next != null && next.fieldType().indexed()) return true;
+ else return this.hasNext();
+ }
+
+ @Override
+ public IndexableField next() {
+ assert fieldUpto <= fieldCount;
+ if (next == null && !hasNext()) {
+ return null;
+ }
+ else {
+ return next;
+ }
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+ };
}
+ };
+ }
+ @Override
+ public Iterable<? extends StorableField> storableFields() {
+ return new Iterable<StorableField>() {
@Override
- public void remove() {
- throw new UnsupportedOperationException();
+ public Iterator<StorableField> iterator() {
+ return new Iterator<StorableField>() {
+ int fieldUpto = 0;
+ private StorableField next = null;
+
+ @Override
+ public boolean hasNext() {
+
+ if (fieldUpto == fieldCount) return false;
+
+ next = null;
+ if (fieldUpto == 0) {
+ fieldUpto = 1;
+ next = newStringField("id", ""+finalDocCount, Field.Store.YES);
+ } else {
+ next = new MyField(finalBaseCount + (fieldUpto++-1));
+ }
+
+ if (next != null && next.fieldType().stored()) return true;
+ else return this.hasNext();
+ }
+
+ @Override
+ public StorableField next() {
+ assert fieldUpto <= fieldCount;
+ if (next == null && !hasNext()) {
+ return null;
+ }
+ else {
+ return next;
+ }
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+ };
}
};
}
- });
+ };
+
+ w.addDocument(d);
}
final IndexReader r = w.getReader();
@@ -223,10 +288,11 @@ public class TestIndexableField extends
if (VERBOSE) {
System.out.println("TEST: verify doc id=" + id + " (" + fieldsPerDoc[id] + " fields) counter=" + counter);
}
+
final TopDocs hits = s.search(new TermQuery(new Term("id", ""+id)), 1);
assertEquals(1, hits.totalHits);
final int docID = hits.scoreDocs[0].doc;
- final Document doc = s.doc(docID);
+ final StoredDocument doc = s.doc(docID);
final int endCounter = counter + fieldsPerDoc[id];
while(counter < endCounter) {
final String name = "f" + counter;
@@ -245,7 +311,7 @@ public class TestIndexableField extends
// stored:
if (stored) {
- IndexableField f = doc.getField(name);
+ StorableField f = doc.getField(name);
assertNotNull("doc " + id + " doesn't have field f" + counter, f);
if (binary) {
assertNotNull("doc " + id + " doesn't have field f" + counter, f);
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestLazyProxSkipping.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestLazyProxSkipping.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestLazyProxSkipping.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestLazyProxSkipping.java Fri Sep 21 17:21:34 2012
@@ -226,7 +226,7 @@ public class TestLazyProxSkipping extend
@Override
public SeeksCountingStream clone() {
- return new SeeksCountingStream((IndexInput) this.input.clone());
+ return new SeeksCountingStream(this.input.clone());
}
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestLongPostings.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestLongPostings.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestLongPostings.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestLongPostings.java Fri Sep 21 17:21:34 2012
@@ -111,26 +111,26 @@ public class TestLongPostings extends Lu
}
final IndexReader r;
- final IndexWriterConfig iwc = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()))
- .setOpenMode(IndexWriterConfig.OpenMode.CREATE)
- .setMergePolicy(newLogMergePolicy());
- iwc.setRAMBufferSizeMB(16.0 + 16.0 * random().nextDouble());
- iwc.setMaxBufferedDocs(-1);
- final RandomIndexWriter riw = new RandomIndexWriter(random(), dir, iwc);
-
- for(int idx=0;idx<NUM_DOCS;idx++) {
- final Document doc = new Document();
- String s = isS1.get(idx) ? s1 : s2;
- final Field f = newTextField("field", s, Field.Store.NO);
- final int count = _TestUtil.nextInt(random(), 1, 4);
- for(int ct=0;ct<count;ct++) {
- doc.add(f);
- }
- riw.addDocument(doc);
- }
-
- r = riw.getReader();
- riw.close();
+ final IndexWriterConfig iwc = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()))
+ .setOpenMode(IndexWriterConfig.OpenMode.CREATE)
+ .setMergePolicy(newLogMergePolicy());
+ iwc.setRAMBufferSizeMB(16.0 + 16.0 * random().nextDouble());
+ iwc.setMaxBufferedDocs(-1);
+ final RandomIndexWriter riw = new RandomIndexWriter(random(), dir, iwc);
+
+ for(int idx=0;idx<NUM_DOCS;idx++) {
+ final Document doc = new Document();
+ String s = isS1.get(idx) ? s1 : s2;
+ final Field f = newTextField("field", s, Field.Store.NO);
+ final int count = _TestUtil.nextInt(random(), 1, 4);
+ for(int ct=0;ct<count;ct++) {
+ doc.add(f);
+ }
+ riw.addDocument(doc);
+ }
+
+ r = riw.getReader();
+ riw.close();
/*
if (VERBOSE) {
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestMultiLevelSkipList.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestMultiLevelSkipList.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestMultiLevelSkipList.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestMultiLevelSkipList.java Fri Sep 21 17:21:34 2012
@@ -84,10 +84,7 @@ public class TestMultiLevelSkipList exte
for (int i = 0; i < 2; i++) {
counter = 0;
- DocsAndPositionsEnum tp = reader.termPositionsEnum(reader.getLiveDocs(),
- term.field(),
- new BytesRef(term.text()));
-
+ DocsAndPositionsEnum tp = reader.termPositionsEnum(term);
checkSkipTo(tp, 14, 185); // no skips
checkSkipTo(tp, 17, 190); // one skip on level 0
checkSkipTo(tp, 287, 200); // one skip on level 1, two on level 0
@@ -190,7 +187,7 @@ public class TestMultiLevelSkipList exte
@Override
public CountingStream clone() {
- return new CountingStream((IndexInput) this.input.clone());
+ return new CountingStream(this.input.clone());
}
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestNorms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestNorms.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestNorms.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestNorms.java Fri Sep 21 17:21:34 2012
@@ -105,7 +105,7 @@ public class TestNorms extends LuceneTes
assertEquals(Type.FIXED_INTS_8, normValues.getType());
byte[] norms = (byte[]) source.getArray();
for (int i = 0; i < open.maxDoc(); i++) {
- Document document = open.document(i);
+ StoredDocument document = open.document(i);
int expected = Integer.parseInt(document.get(byteTestField));
assertEquals((byte)expected, norms[i]);
}
@@ -164,7 +164,7 @@ public class TestNorms extends LuceneTes
assertEquals(Type.FIXED_INTS_8, normValues.getType());
byte[] norms = (byte[]) source.getArray();
for (int i = 0; i < mergedReader.maxDoc(); i++) {
- Document document = mergedReader.document(i);
+ StoredDocument document = mergedReader.document(i);
int expected = Integer.parseInt(document.get(byteTestField));
assertEquals((byte) expected, norms[i]);
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java Fri Sep 21 17:21:34 2012
@@ -225,4 +225,41 @@ public class TestOmitPositions extends L
assertNoPrx(ram);
ram.close();
}
+
+ /** make sure we downgrade positions and payloads correctly */
+ public void testMixing() throws Exception {
+ // no positions
+ FieldType ft = new FieldType(TextField.TYPE_NOT_STORED);
+ ft.setIndexOptions(IndexOptions.DOCS_AND_FREQS);
+
+ Directory dir = newDirectory();
+ RandomIndexWriter iw = new RandomIndexWriter(random(), dir);
+
+ for (int i = 0; i < 20; i++) {
+ Document doc = new Document();
+ if (i < 19 && random().nextBoolean()) {
+ for (int j = 0; j < 50; j++) {
+ doc.add(new TextField("foo", "i have positions", Field.Store.NO));
+ }
+ } else {
+ for (int j = 0; j < 50; j++) {
+ doc.add(new Field("foo", "i have no positions", ft));
+ }
+ }
+ iw.addDocument(doc);
+ iw.commit();
+ }
+
+ if (random().nextBoolean()) {
+ iw.forceMerge(1);
+ }
+
+ DirectoryReader ir = iw.getReader();
+ FieldInfos fis = MultiFields.getMergedFieldInfos(ir);
+ assertEquals(IndexOptions.DOCS_AND_FREQS, fis.fieldInfo("foo").getIndexOptions());
+ assertFalse(fis.fieldInfo("foo").hasPayloads());
+ iw.close();
+ ir.close();
+ dir.close(); // checkindex
+ }
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestParallelAtomicReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestParallelAtomicReader.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestParallelAtomicReader.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestParallelAtomicReader.java Fri Sep 21 17:21:34 2012
@@ -224,8 +224,8 @@ public class TestParallelAtomicReader ex
assertEquals(parallelHits.length, singleHits.length);
for(int i = 0; i < parallelHits.length; i++) {
assertEquals(parallelHits[i].score, singleHits[i].score, 0.001f);
- Document docParallel = parallel.doc(parallelHits[i].doc);
- Document docSingle = single.doc(singleHits[i].doc);
+ StoredDocument docParallel = parallel.doc(parallelHits[i].doc);
+ StoredDocument docSingle = single.doc(singleHits[i].doc);
assertEquals(docParallel.get("f1"), docSingle.get("f1"));
assertEquals(docParallel.get("f2"), docSingle.get("f2"));
assertEquals(docParallel.get("f3"), docSingle.get("f3"));
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestParallelCompositeReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestParallelCompositeReader.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestParallelCompositeReader.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestParallelCompositeReader.java Fri Sep 21 17:21:34 2012
@@ -283,8 +283,8 @@ public class TestParallelCompositeReader
assertEquals(parallelHits.length, singleHits.length);
for(int i = 0; i < parallelHits.length; i++) {
assertEquals(parallelHits[i].score, singleHits[i].score, 0.001f);
- Document docParallel = parallel.doc(parallelHits[i].doc);
- Document docSingle = single.doc(singleHits[i].doc);
+ StoredDocument docParallel = parallel.doc(parallelHits[i].doc);
+ StoredDocument docSingle = single.doc(singleHits[i].doc);
assertEquals(docParallel.get("f1"), docSingle.get("f1"));
assertEquals(docParallel.get("f2"), docSingle.get("f2"));
assertEquals(docParallel.get("f3"), docSingle.get("f3"));
@@ -339,13 +339,13 @@ public class TestParallelCompositeReader
if (compositeComposite) {
rd1 = new MultiReader(DirectoryReader.open(dir1), DirectoryReader.open(dir1));
rd2 = new MultiReader(DirectoryReader.open(dir2), DirectoryReader.open(dir2));
- assertEquals(2, rd1.getSequentialSubReaders().size());
- assertEquals(2, rd2.getSequentialSubReaders().size());
+ assertEquals(2, rd1.getContext().children().size());
+ assertEquals(2, rd2.getContext().children().size());
} else {
rd1 = DirectoryReader.open(dir1);
rd2 = DirectoryReader.open(dir2);
- assertEquals(3, rd1.getSequentialSubReaders().size());
- assertEquals(3, rd2.getSequentialSubReaders().size());
+ assertEquals(3, rd1.getContext().children().size());
+ assertEquals(3, rd2.getContext().children().size());
}
ParallelCompositeReader pr = new ParallelCompositeReader(rd1, rd2);
return newSearcher(pr);
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestParallelReaderEmptyIndex.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestParallelReaderEmptyIndex.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestParallelReaderEmptyIndex.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestParallelReaderEmptyIndex.java Fri Sep 21 17:21:34 2012
@@ -152,7 +152,7 @@ public class TestParallelReaderEmptyInde
rd1.close();
rd2.close();
-
+
iwOut.forceMerge(1);
iwOut.close();
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java?rev=1388574&r1=1388573&r2=1388574&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java Fri Sep 21 17:21:34 2012
@@ -604,8 +604,8 @@ public class TestPayloads extends Lucene
field.setTokenStream(ts);
writer.addDocument(doc);
DirectoryReader reader = writer.getReader();
- AtomicReader sr = reader.getSequentialSubReaders().get(0);
- DocsAndPositionsEnum de = sr.termPositionsEnum(null, "field", new BytesRef("withPayload"));
+ AtomicReader sr = SlowCompositeReaderWrapper.wrap(reader);
+ DocsAndPositionsEnum de = sr.termPositionsEnum(new Term("field", "withPayload"));
de.nextDoc();
de.nextPosition();
assertEquals(new BytesRef("test"), de.getPayload());
@@ -639,7 +639,7 @@ public class TestPayloads extends Lucene
writer.addDocument(doc);
DirectoryReader reader = writer.getReader();
SegmentReader sr = getOnlySegmentReader(reader);
- DocsAndPositionsEnum de = sr.termPositionsEnum(null, "field", new BytesRef("withPayload"));
+ DocsAndPositionsEnum de = sr.termPositionsEnum(new Term("field", "withPayload"));
de.nextDoc();
de.nextPosition();
assertEquals(new BytesRef("test"), de.getPayload());