You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2012/06/19 09:24:32 UTC
svn commit: r1351590 [2/2] - in /lucene/dev/trunk: lucene/
lucene/core/src/java/org/apache/lucene/index/
lucene/core/src/java/org/apache/lucene/search/
lucene/core/src/java/org/apache/lucene/search/payloads/
lucene/core/src/java/org/apache/lucene/util/...
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestReuseDocsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestReuseDocsEnum.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestReuseDocsEnum.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestReuseDocsEnum.java Tue Jun 19 07:24:29 2012
@@ -17,6 +17,7 @@ package org.apache.lucene.codecs.lucene4
*/
import java.io.IOException;
import java.util.IdentityHashMap;
+import java.util.List;
import java.util.Random;
import org.apache.lucene.analysis.MockAnalyzer;
@@ -35,7 +36,6 @@ import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.IOUtils;
import org.apache.lucene.util.LineFileDocs;
import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.ReaderUtil;
import org.apache.lucene.util._TestUtil;
public class TestReuseDocsEnum extends LuceneTestCase {
@@ -50,21 +50,18 @@ public class TestReuseDocsEnum extends L
writer.commit();
DirectoryReader open = DirectoryReader.open(dir);
- new ReaderUtil.Gather(open) {
- @Override
- protected void add(int base, AtomicReader r) throws IOException {
- Terms terms = r.terms("body");
- TermsEnum iterator = terms.iterator(null);
- IdentityHashMap<DocsEnum, Boolean> enums = new IdentityHashMap<DocsEnum, Boolean>();
- MatchNoBits bits = new Bits.MatchNoBits(r.maxDoc());
- while ((iterator.next()) != null) {
- DocsEnum docs = iterator.docs(random().nextBoolean() ? bits : new Bits.MatchNoBits(r.maxDoc()), null, random().nextBoolean());
- enums.put(docs, true);
- }
-
- assertEquals(terms.size(), enums.size());
+ for (AtomicReader indexReader : open.getSequentialSubReaders()) {
+ Terms terms = indexReader.terms("body");
+ TermsEnum iterator = terms.iterator(null);
+ IdentityHashMap<DocsEnum, Boolean> enums = new IdentityHashMap<DocsEnum, Boolean>();
+ MatchNoBits bits = new Bits.MatchNoBits(indexReader.maxDoc());
+ while ((iterator.next()) != null) {
+ DocsEnum docs = iterator.docs(random().nextBoolean() ? bits : new Bits.MatchNoBits(indexReader.maxDoc()), null, random().nextBoolean());
+ enums.put(docs, true);
}
- }.run();
+
+ assertEquals(terms.size(), enums.size());
+ }
IOUtils.close(writer, open, dir);
}
@@ -79,9 +76,8 @@ public class TestReuseDocsEnum extends L
writer.commit();
DirectoryReader open = DirectoryReader.open(dir);
- IndexReader[] sequentialSubReaders = open.getSequentialSubReaders();
- for (IndexReader indexReader : sequentialSubReaders) {
- Terms terms = ((AtomicReader) indexReader).terms("body");
+ for (AtomicReader indexReader : open.getSequentialSubReaders()) {
+ Terms terms = indexReader.terms("body");
TermsEnum iterator = terms.iterator(null);
IdentityHashMap<DocsEnum, Boolean> enums = new IdentityHashMap<DocsEnum, Boolean>();
MatchNoBits bits = new Bits.MatchNoBits(open.maxDoc());
@@ -125,8 +121,8 @@ public class TestReuseDocsEnum extends L
DirectoryReader firstReader = DirectoryReader.open(dir);
DirectoryReader secondReader = DirectoryReader.open(dir);
- IndexReader[] sequentialSubReaders = firstReader.getSequentialSubReaders();
- IndexReader[] sequentialSubReaders2 = secondReader.getSequentialSubReaders();
+ List<? extends AtomicReader> sequentialSubReaders = firstReader.getSequentialSubReaders();
+ List<? extends AtomicReader> sequentialSubReaders2 = secondReader.getSequentialSubReaders();
for (IndexReader indexReader : sequentialSubReaders) {
Terms terms = ((AtomicReader) indexReader).terms("body");
@@ -154,11 +150,11 @@ public class TestReuseDocsEnum extends L
IOUtils.close(writer, firstReader, secondReader, dir);
}
- public DocsEnum randomDocsEnum(String field, BytesRef term, IndexReader[] readers, Bits bits) throws IOException {
+ public DocsEnum randomDocsEnum(String field, BytesRef term, List<? extends AtomicReader> readers, Bits bits) throws IOException {
if (random().nextInt(10) == 0) {
return null;
}
- AtomicReader indexReader = (AtomicReader) readers[random().nextInt(readers.length)];
+ AtomicReader indexReader = (AtomicReader) readers.get(random().nextInt(readers.size()));
return indexReader.termDocsEnum(bits, field, term, random().nextBoolean());
}
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestCustomNorms.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestCustomNorms.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestCustomNorms.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestCustomNorms.java Tue Jun 19 07:24:29 2012
@@ -145,25 +145,24 @@ public class TestCustomNorms extends Luc
writer.close();
assertEquals(numAdded, reader.numDocs());
IndexReaderContext topReaderContext = reader.getTopReaderContext();
- AtomicReaderContext[] leaves = topReaderContext.leaves();
- for (int j = 0; j < leaves.length; j++) {
- AtomicReader atomicReader = leaves[j].reader();
- Source source = random().nextBoolean() ? atomicReader.normValues("foo").getSource() : atomicReader.normValues("foo").getDirectSource();
- Bits liveDocs = atomicReader.getLiveDocs();
- Type t = source.getType();
- for (int i = 0; i < atomicReader.maxDoc(); i++) {
- assertEquals(0, source.getFloat(i), 0.000f);
- }
-
-
- source = random().nextBoolean() ? atomicReader.normValues("bar").getSource() : atomicReader.normValues("bar").getDirectSource();
- for (int i = 0; i < atomicReader.maxDoc(); i++) {
- if (liveDocs == null || liveDocs.get(i)) {
- assertEquals("type: " + t, 1, source.getFloat(i), 0.000f);
- } else {
- assertEquals("type: " + t, 0, source.getFloat(i), 0.000f);
+ for (final AtomicReaderContext ctx : topReaderContext.leaves()) {
+ AtomicReader atomicReader = ctx.reader();
+ Source source = random().nextBoolean() ? atomicReader.normValues("foo").getSource() : atomicReader.normValues("foo").getDirectSource();
+ Bits liveDocs = atomicReader.getLiveDocs();
+ Type t = source.getType();
+ for (int i = 0; i < atomicReader.maxDoc(); i++) {
+ assertEquals(0, source.getFloat(i), 0.000f);
+ }
+
+
+ source = random().nextBoolean() ? atomicReader.normValues("bar").getSource() : atomicReader.normValues("bar").getDirectSource();
+ for (int i = 0; i < atomicReader.maxDoc(); i++) {
+ if (liveDocs == null || liveDocs.get(i)) {
+ assertEquals("type: " + t, 1, source.getFloat(i), 0.000f);
+ } else {
+ assertEquals("type: " + t, 0, source.getFloat(i), 0.000f);
+ }
}
- }
}
reader.close();
dir.close();
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java Tue Jun 19 07:24:29 2012
@@ -67,7 +67,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().length, r.getSequentialSubReaders().length, lastCommit.getSegmentCount());
+ assertEquals("lastCommit.segmentCount()=" + lastCommit.getSegmentCount() + " vs IndexReader.segmentCount=" + r.getSequentialSubReaders().size(), r.getSequentialSubReaders().size(), lastCommit.getSegmentCount());
r.close();
verifyCommitOrder(commits);
numOnCommit++;
@@ -325,7 +325,7 @@ public class TestDeletionPolicy extends
final boolean needsMerging;
{
DirectoryReader r = DirectoryReader.open(dir);
- needsMerging = r.getSequentialSubReaders().length != 1;
+ needsMerging = r.getSequentialSubReaders().size() != 1;
r.close();
}
if (needsMerging) {
@@ -442,7 +442,7 @@ public class TestDeletionPolicy extends
DirectoryReader r = DirectoryReader.open(dir);
// Still merged, still 11 docs
- assertEquals(1, r.getSequentialSubReaders().length);
+ assertEquals(1, r.getSequentialSubReaders().size());
assertEquals(11, r.numDocs());
r.close();
@@ -458,7 +458,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().length > 1);
+ assertTrue(r.getSequentialSubReaders().size() > 1);
assertEquals(10, r.numDocs());
r.close();
@@ -468,7 +468,7 @@ public class TestDeletionPolicy extends
writer.close();
r = DirectoryReader.open(dir);
- assertEquals(1, r.getSequentialSubReaders().length);
+ assertEquals(1, r.getSequentialSubReaders().size());
assertEquals(10, r.numDocs());
r.close();
@@ -480,7 +480,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().length);
+ assertEquals(1, r.getSequentialSubReaders().size());
assertEquals(10, r.numDocs());
r.close();
@@ -488,7 +488,7 @@ public class TestDeletionPolicy extends
// Now reader sees not-fully-merged index:
r = DirectoryReader.open(dir);
- assertTrue(r.getSequentialSubReaders().length > 1);
+ assertTrue(r.getSequentialSubReaders().size() > 1);
assertEquals(10, r.numDocs());
r.close();
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java Tue Jun 19 07:24:29 2012
@@ -550,7 +550,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().length == 1, index2.getSequentialSubReaders().length == 1);
+ assertEquals("Single segment test differs.", index1.getSequentialSubReaders().size() == 1, index2.getSequentialSubReaders().size() == 1);
// check field names
FieldInfos fieldInfos1 = MultiFields.getMergedFieldInfos(index1);
@@ -785,7 +785,7 @@ public void testFilesOpenClose() throws
DirectoryReader r2 = DirectoryReader.openIfChanged(r);
assertNotNull(r2);
r.close();
- AtomicReader sub0 = r2.getSequentialSubReaders()[0];
+ AtomicReader sub0 = r2.getSequentialSubReaders().get(0);
final int[] ints2 = FieldCache.DEFAULT.getInts(sub0, "number", false);
r2.close();
assertTrue(ints == ints2);
@@ -814,9 +814,9 @@ public void testFilesOpenClose() throws
assertNotNull(r2);
r.close();
- IndexReader[] subs = r2.getSequentialSubReaders();
- for(int i=0;i<subs.length;i++) {
- assertEquals(36, ((AtomicReader) subs[i]).getUniqueTermCount());
+ List<? extends AtomicReader> subs = r2.getSequentialSubReaders();
+ for(AtomicReader s : subs) {
+ assertEquals(36, s.getUniqueTermCount());
}
r2.close();
writer.close();
@@ -842,7 +842,7 @@ public void testFilesOpenClose() throws
// expected
}
- assertEquals(-1, ((SegmentReader) r.getSequentialSubReaders()[0]).getTermInfosIndexDivisor());
+ assertEquals(-1, ((SegmentReader) r.getSequentialSubReaders().get(0)).getTermInfosIndexDivisor());
writer = new IndexWriter(
dir,
newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random())).
@@ -857,11 +857,11 @@ public void testFilesOpenClose() throws
assertNotNull(r2);
assertNull(DirectoryReader.openIfChanged(r2));
r.close();
- IndexReader[] subReaders = r2.getSequentialSubReaders();
- assertEquals(2, subReaders.length);
- for(int i=0;i<2;i++) {
+ List<? extends AtomicReader> subReaders = r2.getSequentialSubReaders();
+ assertEquals(2, subReaders.size());
+ for(AtomicReader s : subReaders) {
try {
- subReaders[i].docFreq(new Term("field", "f"));
+ s.docFreq(new Term("field", "f"));
fail("did not hit expected exception");
} catch (IllegalStateException ise) {
// expected
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java Tue Jun 19 07:24:29 2012
@@ -469,9 +469,9 @@ public class TestDirectoryReaderReopen e
DirectoryReader r = DirectoryReader.open(dir);
if (multiSegment) {
- assertTrue(r.getSequentialSubReaders().length > 1);
+ assertTrue(r.getSequentialSubReaders().size() > 1);
} else {
- assertTrue(r.getSequentialSubReaders().length == 1);
+ assertTrue(r.getSequentialSubReaders().size() == 1);
}
r.close();
}
@@ -542,9 +542,9 @@ public class TestDirectoryReaderReopen e
}
if (checkSubReaders && reader instanceof CompositeReader) {
- IndexReader[] subReaders = ((CompositeReader) reader).getSequentialSubReaders();
- for (int i = 0; i < subReaders.length; i++) {
- assertReaderClosed(subReaders[i], checkSubReaders, checkNormsClosed);
+ List<? extends IndexReader> subReaders = ((CompositeReader) reader).getSequentialSubReaders();
+ for (IndexReader r : subReaders) {
+ assertReaderClosed(r, checkSubReaders, checkNormsClosed);
}
}
}
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java Tue Jun 19 07:24:29 2012
@@ -77,7 +77,7 @@ public class TestDocValuesIndexing exten
writer.close(true);
DirectoryReader reader = DirectoryReader.open(dir, 1);
- assertEquals(1, reader.getSequentialSubReaders().length);
+ assertEquals(1, reader.getSequentialSubReaders().size());
IndexSearcher searcher = new IndexSearcher(reader);
@@ -750,7 +750,7 @@ public class TestDocValuesIndexing exten
w.forceMerge(1);
DirectoryReader r = w.getReader();
w.close();
- assertEquals(17, r.getSequentialSubReaders()[0].docValues("field").load().getInt(0));
+ assertEquals(17, getOnlySegmentReader(r).docValues("field").load().getInt(0));
r.close();
d.close();
}
@@ -994,8 +994,9 @@ public class TestDocValuesIndexing exten
w.addDocument(doc);
bytes[0] = 1;
w.addDocument(doc);
+ w.forceMerge(1);
DirectoryReader r = w.getReader();
- Source s = r.getSequentialSubReaders()[0].docValues("field").getSource();
+ Source s = getOnlySegmentReader(r).docValues("field").getSource();
BytesRef bytes1 = s.getBytes(0, new BytesRef());
assertEquals(bytes.length, bytes1.length);
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDocsAndPositions.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDocsAndPositions.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDocsAndPositions.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDocsAndPositions.java Tue Jun 19 07:24:29 2012
@@ -64,8 +64,7 @@ public class TestDocsAndPositions extend
for (int i = 0; i < num; i++) {
BytesRef bytes = new BytesRef("1");
IndexReaderContext topReaderContext = reader.getTopReaderContext();
- AtomicReaderContext[] leaves = topReaderContext.leaves();
- for (AtomicReaderContext atomicReaderContext : leaves) {
+ for (AtomicReaderContext atomicReaderContext : topReaderContext.leaves()) {
DocsAndPositionsEnum docsAndPosEnum = getDocsAndPositions(
atomicReaderContext.reader(), bytes, null);
assertNotNull(docsAndPosEnum);
@@ -140,8 +139,7 @@ public class TestDocsAndPositions extend
for (int i = 0; i < num; i++) {
BytesRef bytes = new BytesRef("" + term);
IndexReaderContext topReaderContext = reader.getTopReaderContext();
- AtomicReaderContext[] leaves = topReaderContext.leaves();
- for (AtomicReaderContext atomicReaderContext : leaves) {
+ for (AtomicReaderContext atomicReaderContext : topReaderContext.leaves()) {
DocsAndPositionsEnum docsAndPosEnum = getDocsAndPositions(
atomicReaderContext.reader(), bytes, null);
assertNotNull(docsAndPosEnum);
@@ -216,8 +214,7 @@ public class TestDocsAndPositions extend
for (int i = 0; i < num; i++) {
BytesRef bytes = new BytesRef("" + term);
IndexReaderContext topReaderContext = reader.getTopReaderContext();
- AtomicReaderContext[] leaves = topReaderContext.leaves();
- for (AtomicReaderContext context : leaves) {
+ for (AtomicReaderContext context : topReaderContext.leaves()) {
int maxDoc = context.reader().maxDoc();
DocsEnum docsEnum = _TestUtil.docs(random(), context.reader(), fieldName, bytes, null, null, true);
if (findNext(freqInDoc, context.docBase, context.docBase + maxDoc) == Integer.MAX_VALUE) {
@@ -295,8 +292,7 @@ public class TestDocsAndPositions extend
BytesRef bytes = new BytesRef("even");
IndexReaderContext topReaderContext = reader.getTopReaderContext();
- AtomicReaderContext[] leaves = topReaderContext.leaves();
- for (AtomicReaderContext atomicReaderContext : leaves) {
+ for (AtomicReaderContext atomicReaderContext : topReaderContext.leaves()) {
DocsAndPositionsEnum docsAndPosEnum = getDocsAndPositions(
atomicReaderContext.reader(), bytes, null);
assertNotNull(docsAndPosEnum);
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java Tue Jun 19 07:24:29 2012
@@ -282,7 +282,7 @@ public class TestIndexWriterCommit exten
// Reader should see index as multi-seg at this
// point:
- assertTrue("Reader incorrectly sees one segment", reader.getSequentialSubReaders().length > 1);
+ assertTrue("Reader incorrectly sees one segment", reader.getSequentialSubReaders().size() > 1);
reader.close();
// Abort the writer:
@@ -293,7 +293,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().length > 1);
+ assertTrue("Reader incorrectly sees one segment", reader.getSequentialSubReaders().size() > 1);
reader.close();
if (VERBOSE) {
@@ -312,7 +312,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().length);
+ assertEquals("Reader incorrectly sees more than one segment", 1, reader.getSequentialSubReaders().size());
reader.close();
dir.close();
}
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java Tue Jun 19 07:24:29 2012
@@ -187,7 +187,7 @@ public class TestIndexWriterForceMerge e
if (0 == pass) {
writer.close();
DirectoryReader reader = DirectoryReader.open(dir);
- assertEquals(1, reader.getSequentialSubReaders().length);
+ assertEquals(1, reader.getSequentialSubReaders().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().length > 1);
+ assertTrue(reader.getSequentialSubReaders().size() > 1);
reader.close();
SegmentInfos infos = new SegmentInfos();
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterReader.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterReader.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterReader.java Tue Jun 19 07:24:29 2012
@@ -982,7 +982,7 @@ public class TestIndexWriterReader exten
Document doc = new Document();
doc.add(new TextField("f", "val", Field.Store.NO));
w.addDocument(doc);
- IndexReader r = DirectoryReader.open(w, true).getSequentialSubReaders()[0];
+ SegmentReader r = getOnlySegmentReader(DirectoryReader.open(w, true));
try {
_TestUtil.docs(random(), r, "f", new BytesRef("val"), null, null, false);
fail("should have failed to seek since terms index was not loaded.");
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java Tue Jun 19 07:24:29 2012
@@ -30,7 +30,6 @@ import org.apache.lucene.store.Directory
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.CharsRef;
import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.ReaderUtil;
import org.apache.lucene.util.UnicodeUtil;
public class TestIndexWriterUnicode extends LuceneTestCase {
@@ -316,12 +315,9 @@ public class TestIndexWriterUnicode exte
IndexReader r = writer.getReader();
// Test each sub-segment
- new ReaderUtil.Gather(r) {
- @Override
- protected void add(int base, AtomicReader r) throws IOException {
- checkTermsOrder(r, allTerms, false);
- }
- }.run();
+ for (AtomicReaderContext ctx : r.getTopReaderContext().leaves()) {
+ checkTermsOrder(ctx.reader(), allTerms, false);
+ }
checkTermsOrder(r, allTerms, true);
// Test multi segment
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestParallelCompositeReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestParallelCompositeReader.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestParallelCompositeReader.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestParallelCompositeReader.java Tue Jun 19 07:24:29 2012
@@ -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().length);
- assertEquals(2, rd2.getSequentialSubReaders().length);
+ assertEquals(2, rd1.getSequentialSubReaders().size());
+ assertEquals(2, rd2.getSequentialSubReaders().size());
} else {
rd1 = DirectoryReader.open(dir1);
rd2 = DirectoryReader.open(dir2);
- assertEquals(3, rd1.getSequentialSubReaders().length);
- assertEquals(3, rd2.getSequentialSubReaders().length);
+ assertEquals(3, rd1.getSequentialSubReaders().size());
+ assertEquals(3, rd2.getSequentialSubReaders().size());
}
ParallelCompositeReader pr = new ParallelCompositeReader(rd1, rd2);
return newSearcher(pr);
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java Tue Jun 19 07:24:29 2012
@@ -281,7 +281,7 @@ public class TestStressIndexing2 extends
}
private static void printDocs(DirectoryReader r) throws Throwable {
- IndexReader[] subs = r.getSequentialSubReaders();
+ List<? extends AtomicReader> subs = r.getSequentialSubReaders();
for(IndexReader sub : subs) {
// TODO: improve this
Bits liveDocs = ((AtomicReader)sub).getLiveDocs();
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java Tue Jun 19 07:24:29 2012
@@ -742,7 +742,7 @@ public class TestTermsEnum extends Lucen
w.forceMerge(1);
DirectoryReader r = w.getReader();
w.close();
- AtomicReader sub = r.getSequentialSubReaders()[0];
+ AtomicReader sub = getOnlySegmentReader(r);
Terms terms = sub.fields().terms("field");
Automaton automaton = new RegExp(".*", RegExp.NONE).toAutomaton();
CompiledAutomaton ca = new CompiledAutomaton(automaton, false, false);
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestThreadedForceMerge.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestThreadedForceMerge.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestThreadedForceMerge.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestThreadedForceMerge.java Tue Jun 19 07:24:29 2012
@@ -130,7 +130,7 @@ public class TestThreadedForceMerge exte
OpenMode.APPEND).setMaxBufferedDocs(2));
DirectoryReader reader = DirectoryReader.open(directory);
- assertEquals("reader=" + reader, 1, reader.getSequentialSubReaders().length);
+ assertEquals("reader=" + reader, 1, reader.getSequentialSubReaders().size());
assertEquals(expectedDocCount, reader.numDocs());
reader.close();
}
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestTypePromotion.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestTypePromotion.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestTypePromotion.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestTypePromotion.java Tue Jun 19 07:24:29 2012
@@ -19,6 +19,7 @@ package org.apache.lucene.index;
import java.io.IOException;
import java.util.EnumSet;
+import java.util.List;
import java.util.Random;
import org.apache.lucene.analysis.MockAnalyzer;
@@ -120,11 +121,11 @@ public class TestTypePromotion extends L
private void assertValues(TestType type, Directory dir, long[] values, Type[] sourceType)
throws CorruptIndexException, IOException {
DirectoryReader reader = DirectoryReader.open(dir);
- assertEquals(1, reader.getSequentialSubReaders().length);
+ assertEquals(1, reader.getSequentialSubReaders().size());
IndexReaderContext topReaderContext = reader.getTopReaderContext();
- AtomicReaderContext[] children = topReaderContext.leaves();
- assertEquals(1, children.length);
- DocValues docValues = children[0].reader().docValues("promote");
+ List<AtomicReaderContext> leaves = topReaderContext.leaves();
+ assertEquals(1, leaves.size());
+ DocValues docValues = leaves.get(0).reader().docValues("promote");
Source directSource = docValues.getDirectSource();
for (int i = 0; i < values.length; i++) {
int id = Integer.parseInt(reader.document(i).get("id"));
@@ -372,10 +373,10 @@ public class TestTypePromotion extends L
writer.forceMerge(1);
writer.close();
DirectoryReader reader = DirectoryReader.open(dir);
- assertEquals(1, reader.getSequentialSubReaders().length);
+ assertEquals(1, reader.getSequentialSubReaders().size());
IndexReaderContext topReaderContext = reader.getTopReaderContext();
- AtomicReaderContext[] children = topReaderContext.leaves();
- DocValues docValues = children[0].reader().docValues("promote");
+ List<AtomicReaderContext> leaves = topReaderContext.leaves();
+ DocValues docValues = leaves.get(0).reader().docValues("promote");
assertNotNull(docValues);
assertValues(TestType.Byte, dir, values, sourceType);
assertEquals(Type.BYTES_VAR_STRAIGHT, docValues.getType());
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBooleanQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBooleanQuery.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBooleanQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBooleanQuery.java Tue Jun 19 07:24:29 2012
@@ -226,7 +226,7 @@ public class TestBooleanQuery extends Lu
Weight weight = s.createNormalizedWeight(q);
- Scorer scorer = weight.scorer(s.leafContexts[0],
+ Scorer scorer = weight.scorer(s.leafContexts.get(0),
true, false, null);
// First pass: just use .nextDoc() to gather all hits
@@ -244,7 +244,7 @@ public class TestBooleanQuery extends Lu
for(int iter2=0;iter2<10;iter2++) {
weight = s.createNormalizedWeight(q);
- scorer = weight.scorer(s.leafContexts[0],
+ scorer = weight.scorer(s.leafContexts.get(0),
true, false, null);
if (VERBOSE) {
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestMatchAllDocsQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestMatchAllDocsQuery.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestMatchAllDocsQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestMatchAllDocsQuery.java Tue Jun 19 07:24:29 2012
@@ -54,7 +54,7 @@ public class TestMatchAllDocsQuery exten
IndexSearcher is = newSearcher(ir);
ScoreDoc[] hits;
-
+
hits = is.search(new MatchAllDocsQuery(), null, 1000).scoreDocs;
assertEquals(3, hits.length);
assertEquals("one", is.doc(hits[0].doc).get("key"));
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestShardSearching.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestShardSearching.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestShardSearching.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestShardSearching.java Tue Jun 19 07:24:29 2012
@@ -311,13 +311,13 @@ public class TestShardSearching extends
final int numNodes = shardSearcher.nodeVersions.length;
int[] base = new int[numNodes];
- final IndexReader[] subs = ((CompositeReader) mockSearcher.getIndexReader()).getSequentialSubReaders();
- assertEquals(numNodes, subs.length);
+ final List<? extends IndexReader> subs = ((CompositeReader) mockSearcher.getIndexReader()).getSequentialSubReaders();
+ assertEquals(numNodes, subs.size());
int docCount = 0;
for(int nodeID=0;nodeID<numNodes;nodeID++) {
base[nodeID] = docCount;
- docCount += subs[nodeID].maxDoc();
+ docCount += subs.get(nodeID).maxDoc();
}
if (VERBOSE) {
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTopDocsMerge.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTopDocsMerge.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTopDocsMerge.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTopDocsMerge.java Tue Jun 19 07:24:29 2012
@@ -19,6 +19,7 @@ package org.apache.lucene.search;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.apache.lucene.document.Document;
@@ -39,11 +40,11 @@ import org.apache.lucene.util._TestUtil;
public class TestTopDocsMerge extends LuceneTestCase {
private static class ShardSearcher extends IndexSearcher {
- private final AtomicReaderContext[] ctx;
+ private final List<AtomicReaderContext> ctx;
public ShardSearcher(AtomicReaderContext ctx, IndexReaderContext parent) {
super(parent);
- this.ctx = new AtomicReaderContext[] {ctx};
+ this.ctx = Collections.singletonList(ctx);
}
public void search(Weight weight, Collector collector) throws IOException {
@@ -56,7 +57,7 @@ public class TestTopDocsMerge extends Lu
@Override
public String toString() {
- return "ShardSearcher(" + ctx[0] + ")";
+ return "ShardSearcher(" + ctx.get(0) + ")";
}
}
@@ -131,13 +132,15 @@ public class TestTopDocsMerge extends Lu
docStarts[0] = 0;
} else {
final CompositeReaderContext compCTX = (CompositeReaderContext) ctx;
- subSearchers = new ShardSearcher[compCTX.leaves().length];
- docStarts = new int[compCTX.leaves().length];
+ final int size = compCTX.leaves().size();
+ subSearchers = new ShardSearcher[size];
+ docStarts = new int[size];
int docBase = 0;
- for(int searcherIDX=0;searcherIDX<subSearchers.length;searcherIDX++) {
- subSearchers[searcherIDX] = new ShardSearcher(compCTX.leaves()[searcherIDX], compCTX);
+ for(int searcherIDX=0;searcherIDX<subSearchers.length;searcherIDX++) {
+ final AtomicReaderContext leave = compCTX.leaves().get(searcherIDX);
+ subSearchers[searcherIDX] = new ShardSearcher(leave, compCTX);
docStarts[searcherIDX] = docBase;
- docBase += compCTX.leaves()[searcherIDX].reader().maxDoc();
+ docBase += leave.reader().maxDoc();
}
}
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/MultiSpansWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/MultiSpansWrapper.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/MultiSpansWrapper.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/MultiSpansWrapper.java Tue Jun 19 07:24:29 2012
@@ -21,11 +21,11 @@ import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.TreeSet;
import org.apache.lucene.index.AtomicReaderContext;
-import org.apache.lucene.index.DocsEnum;
import org.apache.lucene.index.IndexReaderContext;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.DocIdSetIterator;
@@ -42,14 +42,16 @@ import org.apache.lucene.util.TermContex
public class MultiSpansWrapper extends Spans { // can't be package private due to payloads
private SpanQuery query;
- private AtomicReaderContext[] leaves;
+ private List<AtomicReaderContext> leaves;
private int leafOrd = 0;
private Spans current;
private Map<Term,TermContext> termContexts;
+ private final int numLeaves;
- private MultiSpansWrapper(AtomicReaderContext[] leaves, SpanQuery query, Map<Term,TermContext> termContexts) {
+ private MultiSpansWrapper(List<AtomicReaderContext> leaves, SpanQuery query, Map<Term,TermContext> termContexts) {
this.query = query;
this.leaves = leaves;
+ this.numLeaves = leaves.size();
this.termContexts = termContexts;
}
@@ -61,27 +63,30 @@ public class MultiSpansWrapper extends S
for (Term term : terms) {
termContexts.put(term, TermContext.build(topLevelReaderContext, term, true));
}
- AtomicReaderContext[] leaves = topLevelReaderContext.leaves();
- if(leaves.length == 1) {
- return query.getSpans(leaves[0], leaves[0].reader().getLiveDocs(), termContexts);
+ final List<AtomicReaderContext> leaves = topLevelReaderContext.leaves();
+ if(leaves.size() == 1) {
+ final AtomicReaderContext ctx = leaves.get(0);
+ return query.getSpans(ctx, ctx.reader().getLiveDocs(), termContexts);
}
return new MultiSpansWrapper(leaves, query, termContexts);
}
@Override
public boolean next() throws IOException {
- if (leafOrd >= leaves.length) {
+ if (leafOrd >= numLeaves) {
return false;
}
if (current == null) {
- current = query.getSpans(leaves[leafOrd], leaves[leafOrd].reader().getLiveDocs(), termContexts);
+ final AtomicReaderContext ctx = leaves.get(leafOrd);
+ current = query.getSpans(ctx, ctx.reader().getLiveDocs(), termContexts);
}
while(true) {
if (current.next()) {
return true;
}
- if (++leafOrd < leaves.length) {
- current = query.getSpans(leaves[leafOrd], leaves[leafOrd].reader().getLiveDocs(), termContexts);
+ if (++leafOrd < numLeaves) {
+ final AtomicReaderContext ctx = leaves.get(leafOrd);
+ current = query.getSpans(ctx, ctx.reader().getLiveDocs(), termContexts);
} else {
current = null;
break;
@@ -92,27 +97,30 @@ public class MultiSpansWrapper extends S
@Override
public boolean skipTo(int target) throws IOException {
- if (leafOrd >= leaves.length) {
+ if (leafOrd >= numLeaves) {
return false;
}
int subIndex = ReaderUtil.subIndex(target, leaves);
assert subIndex >= leafOrd;
if (subIndex != leafOrd) {
- current = query.getSpans(leaves[subIndex], leaves[subIndex].reader().getLiveDocs(), termContexts);
+ final AtomicReaderContext ctx = leaves.get(subIndex);
+ current = query.getSpans(ctx, ctx.reader().getLiveDocs(), termContexts);
leafOrd = subIndex;
} else if (current == null) {
- current = query.getSpans(leaves[leafOrd], leaves[leafOrd].reader().getLiveDocs(), termContexts);
+ final AtomicReaderContext ctx = leaves.get(leafOrd);
+ current = query.getSpans(ctx, ctx.reader().getLiveDocs(), termContexts);
}
while (true) {
- if (current.skipTo(target - leaves[leafOrd].docBase)) {
+ if (current.skipTo(target - leaves.get(leafOrd).docBase)) {
return true;
}
- if (++leafOrd < leaves.length) {
- current = query.getSpans(leaves[leafOrd], leaves[leafOrd].reader().getLiveDocs(), termContexts);
+ if (++leafOrd < numLeaves) {
+ final AtomicReaderContext ctx = leaves.get(leafOrd);
+ current = query.getSpans(ctx, ctx.reader().getLiveDocs(), termContexts);
} else {
- current = null;
- break;
+ current = null;
+ break;
}
}
@@ -124,7 +132,7 @@ public class MultiSpansWrapper extends S
if (current == null) {
return DocIdSetIterator.NO_MORE_DOCS;
}
- return current.doc() + leaves[leafOrd].docBase;
+ return current.doc() + leaves.get(leafOrd).docBase;
}
@Override
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java Tue Jun 19 07:24:29 2012
@@ -166,8 +166,8 @@ public class TestNearSpansOrdered extend
SpanNearQuery q = makeQuery();
Weight w = searcher.createNormalizedWeight(q);
IndexReaderContext topReaderContext = searcher.getTopReaderContext();
- AtomicReaderContext[] leaves = topReaderContext.leaves();
- Scorer s = w.scorer(leaves[0], true, false, leaves[0].reader().getLiveDocs());
+ AtomicReaderContext leave = topReaderContext.leaves().get(0);
+ Scorer s = w.scorer(leave, true, false, leave.reader().getLiveDocs());
assertEquals(1, s.advance(1));
}
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java Tue Jun 19 07:24:29 2012
@@ -18,6 +18,7 @@ package org.apache.lucene.search.spans;
*/
import java.io.IOException;
+import java.util.List;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
@@ -404,10 +405,10 @@ public class TestSpans extends LuceneTes
boolean ordered = true;
int slop = 1;
IndexReaderContext topReaderContext = searcher.getTopReaderContext();
- AtomicReaderContext[] leaves = topReaderContext.leaves();
+ List<AtomicReaderContext> leaves = topReaderContext.leaves();
int subIndex = ReaderUtil.subIndex(11, leaves);
- for (int i = 0; i < leaves.length; i++) {
-
+ for (int i = 0, c = leaves.size(); i < c; i++) {
+ final AtomicReaderContext ctx = leaves.get(i);
final Similarity sim = new DefaultSimilarity() {
@Override
@@ -427,13 +428,13 @@ public class TestSpans extends LuceneTes
slop,
ordered);
- spanScorer = searcher.createNormalizedWeight(snq).scorer(leaves[i], true, false, leaves[i].reader().getLiveDocs());
+ spanScorer = searcher.createNormalizedWeight(snq).scorer(ctx, true, false, ctx.reader().getLiveDocs());
} finally {
searcher.setSimilarity(oldSim);
}
if (i == subIndex) {
assertTrue("first doc", spanScorer.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
- assertEquals("first doc number", spanScorer.docID() + leaves[i].docBase, 11);
+ assertEquals("first doc number", spanScorer.docID() + ctx.docBase, 11);
float score = spanScorer.score();
assertTrue("first doc score should be zero, " + score, score == 0.0f);
} else {
Modified: lucene/dev/trunk/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java (original)
+++ lucene/dev/trunk/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java Tue Jun 19 07:24:29 2012
@@ -629,25 +629,16 @@ public class TestGrouping extends Lucene
public final int[] docStarts;
public ShardState(IndexSearcher s) {
- List<AtomicReader> subReaders = new ArrayList<AtomicReader>();
- ReaderUtil.gatherSubReaders(subReaders, s.getIndexReader());
- subSearchers = new ShardSearcher[subReaders.size()];
final IndexReaderContext ctx = s.getTopReaderContext();
- if (ctx instanceof AtomicReaderContext) {
- assert subSearchers.length == 1;
- subSearchers[0] = new ShardSearcher((AtomicReaderContext) ctx, ctx);
- } else {
- final CompositeReaderContext compCTX = (CompositeReaderContext) ctx;
- for(int searcherIDX=0;searcherIDX<subSearchers.length;searcherIDX++) {
- subSearchers[searcherIDX] = new ShardSearcher(compCTX.leaves()[searcherIDX], compCTX);
- }
+ final List<AtomicReaderContext> leaves = ctx.leaves();
+ subSearchers = new ShardSearcher[leaves.size()];
+ for(int searcherIDX=0;searcherIDX<subSearchers.length;searcherIDX++) {
+ subSearchers[searcherIDX] = new ShardSearcher(leaves.get(searcherIDX), ctx);
}
docStarts = new int[subSearchers.length];
- int docBase = 0;
for(int subIDX=0;subIDX<docStarts.length;subIDX++) {
- docStarts[subIDX] = docBase;
- docBase += subReaders.get(subIDX).maxDoc();
+ docStarts[subIDX] = leaves.get(subIDX).docBase;
//System.out.println("docStarts[" + subIDX + "]=" + docStarts[subIDX]);
}
}
@@ -1315,24 +1306,20 @@ public class TestGrouping extends Lucene
}
private static class ShardSearcher extends IndexSearcher {
- private final AtomicReaderContext[] ctx;
+ private final List<AtomicReaderContext> ctx;
public ShardSearcher(AtomicReaderContext ctx, IndexReaderContext parent) {
super(parent);
- this.ctx = new AtomicReaderContext[] {ctx};
+ this.ctx = Collections.singletonList(ctx);
}
public void search(Weight weight, Collector collector) throws IOException {
search(ctx, weight, collector);
}
- public TopDocs search(Weight weight, int topN) throws IOException {
- return search(ctx, weight, null, topN);
- }
-
@Override
public String toString() {
- return "ShardSearcher(" + ctx[0].reader() + ")";
+ return "ShardSearcher(" + ctx.get(0).reader() + ")";
}
}
Modified: lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java (original)
+++ lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java Tue Jun 19 07:24:29 2012
@@ -247,9 +247,9 @@ public class TestBlockJoin extends Lucen
}
private Document getParentDoc(IndexReader reader, Filter parents, int childDocID) throws IOException {
- final AtomicReaderContext[] leaves = reader.getTopReaderContext().leaves();
+ final List<AtomicReaderContext> leaves = reader.getTopReaderContext().leaves();
final int subIndex = ReaderUtil.subIndex(childDocID, leaves);
- final AtomicReaderContext leaf = leaves[subIndex];
+ final AtomicReaderContext leaf = leaves.get(subIndex);
final FixedBitSet bits = (FixedBitSet) parents.getDocIdSet(leaf, null);
return leaf.reader().document(bits.nextSetBit(childDocID - leaf.docBase));
}
@@ -961,7 +961,7 @@ public class TestBlockJoin extends Lucen
ToParentBlockJoinQuery q = new ToParentBlockJoinQuery(tq, parentFilter, ScoreMode.Avg);
Weight weight = s.createNormalizedWeight(q);
- DocIdSetIterator disi = weight.scorer(s.getIndexReader().getTopReaderContext().leaves()[0], true, true, null);
+ DocIdSetIterator disi = weight.scorer(s.getIndexReader().getTopReaderContext().leaves().get(0), true, true, null);
assertEquals(1, disi.advance(1));
r.close();
dir.close();
@@ -995,7 +995,7 @@ public class TestBlockJoin extends Lucen
ToParentBlockJoinQuery q = new ToParentBlockJoinQuery(tq, parentFilter, ScoreMode.Avg);
Weight weight = s.createNormalizedWeight(q);
- DocIdSetIterator disi = weight.scorer(s.getIndexReader().getTopReaderContext().leaves()[0], true, true, null);
+ DocIdSetIterator disi = weight.scorer(s.getIndexReader().getTopReaderContext().leaves().get(0), true, true, null);
assertEquals(2, disi.advance(0));
r.close();
dir.close();
Modified: lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java (original)
+++ lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java Tue Jun 19 07:24:29 2012
@@ -20,13 +20,13 @@ package org.apache.lucene.index;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.List;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.FixedBitSet;
import org.apache.lucene.util.Bits;
-import org.apache.lucene.util.ReaderUtil;
import org.apache.lucene.util.Version;
/**
@@ -101,7 +101,8 @@ public class MultiPassIndexSplitter {
.setOpenMode(OpenMode.CREATE));
System.err.println("Writing part " + (i + 1) + " ...");
// pass the subreaders directly, as our wrapper's numDocs/hasDeletetions are not up-to-date
- w.addIndexes(input.getSequentialSubReaders());
+ final List<? extends FakeDeleteAtomicIndexReader> sr = input.getSequentialSubReaders();
+ w.addIndexes(sr.toArray(new IndexReader[sr.size()])); // TODO: maybe take List<IR> here?
w.close();
}
System.err.println("Done.");
@@ -177,34 +178,36 @@ public class MultiPassIndexSplitter {
/**
* This class emulates deletions on the underlying index.
*/
- private static final class FakeDeleteIndexReader extends MultiReader {
+ private static final class FakeDeleteIndexReader extends BaseCompositeReader<FakeDeleteAtomicIndexReader> {
public FakeDeleteIndexReader(IndexReader reader) throws IOException {
super(initSubReaders(reader));
}
- private static AtomicReader[] initSubReaders(IndexReader reader) throws IOException {
- final ArrayList<AtomicReader> subs = new ArrayList<AtomicReader>();
- new ReaderUtil.Gather(reader) {
- @Override
- protected void add(int base, AtomicReader r) {
- subs.add(new FakeDeleteAtomicIndexReader(r));
- }
- }.run();
- return subs.toArray(new AtomicReader[subs.size()]);
+ private static FakeDeleteAtomicIndexReader[] initSubReaders(IndexReader reader) throws IOException {
+ final List<AtomicReaderContext> leaves = reader.getTopReaderContext().leaves();
+ final FakeDeleteAtomicIndexReader[] subs = new FakeDeleteAtomicIndexReader[leaves.size()];
+ int i = 0;
+ for (final AtomicReaderContext ctx : leaves) {
+ subs[i++] = new FakeDeleteAtomicIndexReader(ctx.reader());
+ }
+ return subs;
}
public void deleteDocument(int docID) {
final int i = readerIndex(docID);
- ((FakeDeleteAtomicIndexReader) subReaders[i]).deleteDocument(docID - starts[i]);
+ getSequentialSubReaders().get(i).deleteDocument(docID - readerBase(i));
}
public void undeleteAll() {
- for (IndexReader r : subReaders) {
- ((FakeDeleteAtomicIndexReader) r).undeleteAll();
+ for (FakeDeleteAtomicIndexReader r : getSequentialSubReaders()) {
+ r.undeleteAll();
}
}
+ @Override
+ protected void doClose() throws IOException {}
+
// no need to override numDocs/hasDeletions,
// as we pass the subreaders directly to IW.addIndexes().
}
Modified: lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/index/PKIndexSplitter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/index/PKIndexSplitter.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/index/PKIndexSplitter.java (original)
+++ lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/index/PKIndexSplitter.java Tue Jun 19 07:24:29 2012
@@ -18,6 +18,7 @@ package org.apache.lucene.index;
*/
import java.io.IOException;
+import java.util.List;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.search.DocIdSet;
@@ -101,10 +102,11 @@ public class PKIndexSplitter {
boolean success = false;
final IndexWriter w = new IndexWriter(target, config);
try {
- final AtomicReaderContext[] leaves = reader.getTopReaderContext().leaves();
- final IndexReader[] subReaders = new IndexReader[leaves.length];
- for (int i = 0; i < leaves.length; i++) {
- subReaders[i] = new DocumentFilteredAtomicIndexReader(leaves[i], preserveFilter, negateFilter);
+ final List<AtomicReaderContext> leaves = reader.getTopReaderContext().leaves();
+ final IndexReader[] subReaders = new IndexReader[leaves.size()];
+ int i = 0;
+ for (final AtomicReaderContext ctx : leaves) {
+ subReaders[i++] = new DocumentFilteredAtomicIndexReader(ctx, preserveFilter, negateFilter);
}
w.addIndexes(subReaders);
success = true;
Modified: lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/misc/HighFreqTerms.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/misc/HighFreqTerms.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/misc/HighFreqTerms.java (original)
+++ lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/misc/HighFreqTerms.java Tue Jun 19 07:24:29 2012
@@ -18,6 +18,7 @@ package org.apache.lucene.misc;
*/
import org.apache.lucene.index.AtomicReader;
+import org.apache.lucene.index.AtomicReaderContext;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.MultiFields;
@@ -184,33 +185,29 @@ public class HighFreqTerms {
}
public static long getTotalTermFreq(IndexReader reader, final String field, final BytesRef termText) throws Exception {
- final long totalTF[] = new long[1];
-
- new ReaderUtil.Gather(reader) {
-
- @Override
- protected void add(int base, AtomicReader r) throws IOException {
- Bits liveDocs = r.getLiveDocs();
- if (liveDocs == null) {
- // TODO: we could do this up front, during the scan
- // (next()), instead of after-the-fact here w/ seek,
- // if the codec supports it and there are no del
- // docs...
- final long totTF = r.totalTermFreq(field, termText);
- if (totTF != -1) {
- totalTF[0] += totTF;
- return;
- }
- }
- DocsEnum de = r.termDocsEnum(liveDocs, field, termText, true);
- if (de != null) {
- while (de.nextDoc() != DocIdSetIterator.NO_MORE_DOCS)
- totalTF[0] += de.freq();
- }
+ long totalTF = 0L;
+ for (final AtomicReaderContext ctx : reader.getTopReaderContext().leaves()) {
+ AtomicReader r = ctx.reader();
+ Bits liveDocs = r.getLiveDocs();
+ if (liveDocs == null) {
+ // TODO: we could do this up front, during the scan
+ // (next()), instead of after-the-fact here w/ seek,
+ // if the codec supports it and there are no del
+ // docs...
+ final long totTF = r.totalTermFreq(field, termText);
+ if (totTF != -1) {
+ totalTF += totTF;
+ continue;
+ } // otherwise we fall-through
+ }
+ DocsEnum de = r.termDocsEnum(liveDocs, field, termText, true);
+ if (de != null) {
+ while (de.nextDoc() != DocIdSetIterator.NO_MORE_DOCS)
+ totalTF += de.freq();
}
- }.run();
+ }
- return totalTF[0];
+ return totalTF;
}
}
Modified: lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/index/TestBalancedSegmentMergePolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/index/TestBalancedSegmentMergePolicy.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/index/TestBalancedSegmentMergePolicy.java (original)
+++ lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/index/TestBalancedSegmentMergePolicy.java Tue Jun 19 07:24:29 2012
@@ -67,7 +67,7 @@ public class TestBalancedSegmentMergePol
int numSegments = _TestUtil.nextInt(random(), 1, 4);
iw.forceMerge(numSegments);
DirectoryReader ir = iw.getReader();
- assertTrue(ir.getSequentialSubReaders().length <= numSegments);
+ assertTrue(ir.getSequentialSubReaders().size() <= numSegments);
ir.close();
}
Modified: lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/index/TestIndexSplitter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/index/TestIndexSplitter.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/index/TestIndexSplitter.java (original)
+++ lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/index/TestIndexSplitter.java Tue Jun 19 07:24:29 2012
@@ -59,7 +59,7 @@ public class TestIndexSplitter extends L
}
iw.commit();
DirectoryReader iwReader = iw.getReader();
- assertEquals(3, iwReader.getSequentialSubReaders().length);
+ assertEquals(3, iwReader.getSequentialSubReaders().size());
iwReader.close();
iw.close();
// we should have 2 segments now
@@ -87,7 +87,7 @@ public class TestIndexSplitter extends L
// now remove the copied segment from src
IndexSplitter.main(new String[] {dir.getAbsolutePath(), "-d", splitSegName});
r = DirectoryReader.open(fsDir);
- assertEquals(2, r.getSequentialSubReaders().length);
+ assertEquals(2, r.getSequentialSubReaders().size());
r.close();
fsDir.close();
}
Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/ScaleFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/ScaleFloatFunction.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/ScaleFloatFunction.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/ScaleFloatFunction.java Tue Jun 19 07:24:29 2012
@@ -25,6 +25,7 @@ import org.apache.lucene.search.IndexSea
import org.apache.lucene.util.ReaderUtil;
import java.io.IOException;
+import java.util.List;
import java.util.Map;
/**
@@ -60,7 +61,7 @@ public class ScaleFloatFunction extends
}
private ScaleInfo createScaleInfo(Map context, AtomicReaderContext readerContext) throws IOException {
- final AtomicReaderContext[] leaves = ReaderUtil.getTopLevelContext(readerContext).leaves();
+ final List<AtomicReaderContext> leaves = ReaderUtil.getTopLevelContext(readerContext).leaves();
float minVal = Float.POSITIVE_INFINITY;
float maxVal = Float.NEGATIVE_INFINITY;
Modified: lucene/dev/trunk/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/TestParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/TestParser.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/TestParser.java (original)
+++ lucene/dev/trunk/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/TestParser.java Tue Jun 19 07:24:29 2012
@@ -44,6 +44,7 @@ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.util.List;
public class TestParser extends LuceneTestCase {
@@ -194,8 +195,8 @@ public class TestParser extends LuceneTe
}
public void testDuplicateFilterQueryXML() throws ParserException, IOException {
- AtomicReaderContext leaves[] = searcher.getTopReaderContext().leaves();
- Assume.assumeTrue(leaves == null || leaves.length == 1);
+ List<AtomicReaderContext> leaves = searcher.getTopReaderContext().leaves();
+ Assume.assumeTrue(leaves.size() == 1);
Query q = parse("DuplicateFilterQuery.xml");
int h = searcher.search(q, null, 1000).totalHits;
assertEquals("DuplicateFilterQuery should produce 1 result ", 1, h);
Modified: lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/spell/SpellChecker.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/spell/SpellChecker.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/spell/SpellChecker.java (original)
+++ lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/spell/SpellChecker.java Tue Jun 19 07:24:29 2012
@@ -28,6 +28,7 @@ import org.apache.lucene.document.FieldT
import org.apache.lucene.index.FieldInfo.IndexOptions;
import org.apache.lucene.document.StringField;
import org.apache.lucene.index.AtomicReader;
+import org.apache.lucene.index.AtomicReaderContext;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
@@ -497,14 +498,11 @@ public class SpellChecker implements jav
final IndexReader reader = searcher.getIndexReader();
if (reader.maxDoc() > 0) {
- new ReaderUtil.Gather(reader) {
- @Override
- protected void add(int base, AtomicReader r) throws IOException {
- Terms terms = r.terms(F_WORD);
- if (terms != null)
- termsEnums.add(terms.iterator(null));
- }
- }.run();
+ for (final AtomicReaderContext ctx : reader.getTopReaderContext().leaves()) {
+ Terms terms = ctx.reader().terms(F_WORD);
+ if (terms != null)
+ termsEnums.add(terms.iterator(null));
+ }
}
boolean isEmpty = termsEnums.isEmpty();
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java Tue Jun 19 07:24:29 2012
@@ -18,6 +18,7 @@ package org.apache.lucene.search;
*/
import java.io.IOException;
+import java.util.List;
import java.util.Random;
import junit.framework.Assert;
@@ -233,7 +234,7 @@ public class QueryUtils {
*/
public static void checkSkipTo(final Query q, final IndexSearcher s) throws IOException {
//System.out.println("Checking "+q);
- final AtomicReaderContext[] readerContextArray = s.getTopReaderContext().leaves();
+ final List<AtomicReaderContext> readerContextArray = s.getTopReaderContext().leaves();
if (s.createNormalizedWeight(q).scoresDocsOutOfOrder()) return; // in this case order of skipTo() might differ from that of next().
final int skip_op = 0;
@@ -278,7 +279,7 @@ public class QueryUtils {
try {
if (scorer == null) {
Weight w = s.createNormalizedWeight(q);
- AtomicReaderContext context = readerContextArray[leafPtr];
+ AtomicReaderContext context = readerContextArray.get(leafPtr);
scorer = w.scorer(context, true, false, context.reader().getLiveDocs());
}
@@ -334,7 +335,7 @@ public class QueryUtils {
leafPtr++;
}
lastReader[0] = context.reader();
- assert readerContextArray[leafPtr].reader() == context.reader();
+ assert readerContextArray.get(leafPtr).reader() == context.reader();
this.scorer = null;
lastDoc[0] = -1;
}
@@ -368,7 +369,7 @@ public class QueryUtils {
final float maxDiff = 1e-3f;
final int lastDoc[] = {-1};
final AtomicReader lastReader[] = {null};
- final AtomicReaderContext[] context = s.getTopReaderContext().leaves();
+ final List<AtomicReaderContext> context = s.getTopReaderContext().leaves();
s.search(q,new Collector() {
private Scorer scorer;
private int leafPtr;
@@ -384,7 +385,7 @@ public class QueryUtils {
long startMS = System.currentTimeMillis();
for (int i=lastDoc[0]+1; i<=doc; i++) {
Weight w = s.createNormalizedWeight(q);
- Scorer scorer = w.scorer(context[leafPtr], true, false, liveDocs);
+ Scorer scorer = w.scorer(context.get(leafPtr), true, false, liveDocs);
Assert.assertTrue("query collected "+doc+" but skipTo("+i+") says no more docs!",scorer.advance(i) != DocIdSetIterator.NO_MORE_DOCS);
Assert.assertEquals("query collected "+doc+" but skipTo("+i+") got to "+scorer.docID(),doc,scorer.docID());
float skipToScore = scorer.score();
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java Tue Jun 19 07:24:29 2012
@@ -435,11 +435,12 @@ public abstract class LuceneTestCase ext
* do tests on that segment's reader. This is an utility method to help them.
*/
public static SegmentReader getOnlySegmentReader(DirectoryReader reader) {
- IndexReader[] subReaders = reader.getSequentialSubReaders();
- if (subReaders.length != 1)
- throw new IllegalArgumentException(reader + " has " + subReaders.length + " segments instead of exactly one");
- assertTrue(subReaders[0] instanceof SegmentReader);
- return (SegmentReader) subReaders[0];
+ List<? extends IndexReader> subReaders = reader.getSequentialSubReaders();
+ if (subReaders.size() != 1)
+ throw new IllegalArgumentException(reader + " has " + subReaders.size() + " segments instead of exactly one");
+ final IndexReader r = subReaders.get(0);
+ assertTrue(r instanceof SegmentReader);
+ return (SegmentReader) r;
}
/**
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java Tue Jun 19 07:24:29 2012
@@ -544,7 +544,7 @@ public class LukeRequestHandler extends
indexInfo.add("maxDoc", reader.maxDoc());
indexInfo.add("version", reader.getVersion()); // TODO? Is this different then: IndexReader.getCurrentVersion( dir )?
- indexInfo.add("segmentCount", reader.getSequentialSubReaders().length);
+ indexInfo.add("segmentCount", reader.getTopReaderContext().leaves().size());
indexInfo.add("current", reader.isCurrent() );
indexInfo.add("hasDeletions", reader.hasDeletions() );
indexInfo.add("directory", dir );
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java Tue Jun 19 07:24:29 2012
@@ -437,11 +437,11 @@ public class QueryComponent extends Sear
NamedList<Object[]> sortVals = new NamedList<Object[]>(); // order is important for the sort fields
Field field = new StringField("dummy", "", Field.Store.NO); // a dummy Field
IndexReaderContext topReaderContext = searcher.getTopReaderContext();
- AtomicReaderContext[] leaves = topReaderContext.leaves();
+ List<AtomicReaderContext> leaves = topReaderContext.leaves();
AtomicReaderContext currentLeaf = null;
- if (leaves.length==1) {
+ if (leaves.size()==1) {
// if there is a single segment, use that subReader and avoid looking up each time
- currentLeaf = leaves[0];
+ currentLeaf = leaves.get(0);
leaves=null;
}
@@ -478,7 +478,7 @@ public class QueryComponent extends Sear
if (leaves != null) {
idx = ReaderUtil.subIndex(doc, leaves);
- currentLeaf = leaves[idx];
+ currentLeaf = leaves.get(idx);
if (idx != lastIdx) {
// we switched segments. invalidate comparator.
comparator = null;
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java Tue Jun 19 07:24:29 2012
@@ -679,7 +679,7 @@ public class SpellCheckComponent extends
if (buildOnCommit) {
buildSpellIndex(newSearcher);
} else if (buildOnOptimize) {
- if (newSearcher.getIndexReader().getSequentialSubReaders().length == 1) {
+ if (newSearcher.getIndexReader().getSequentialSubReaders().size() == 1) {
buildSpellIndex(newSearcher);
} else {
LOG.info("Index is not optimized therefore skipping building spell check index for: " + checker.getDictionaryName());
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java Tue Jun 19 07:24:29 2012
@@ -82,7 +82,7 @@ class PerSegmentSingleValuedFaceting {
// reuse the translation logic to go from top level set to per-segment set
baseSet = docs.getTopFilter();
- final AtomicReaderContext[] leaves = searcher.getTopReaderContext().leaves();
+ final List<AtomicReaderContext> leaves = searcher.getTopReaderContext().leaves();
// The list of pending tasks that aren't immediately submitted
// TODO: Is there a completion service, or a delegating executor that can
// limit the number of concurrent tasks submitted to a bigger executor?
@@ -90,8 +90,8 @@ class PerSegmentSingleValuedFaceting {
int threads = nThreads <= 0 ? Integer.MAX_VALUE : nThreads;
- for (int i=0; i<leaves.length; i++) {
- final SegFacet segFacet = new SegFacet(leaves[i]);
+ for (final AtomicReaderContext leave : leaves) {
+ final SegFacet segFacet = new SegFacet(leave);
Callable<SegFacet> task = new Callable<SegFacet>() {
public SegFacet call() throws Exception {
@@ -111,7 +111,7 @@ class PerSegmentSingleValuedFaceting {
// now merge the per-segment results
- PriorityQueue<SegFacet> queue = new PriorityQueue<SegFacet>(leaves.length) {
+ PriorityQueue<SegFacet> queue = new PriorityQueue<SegFacet>(leaves.size()) {
@Override
protected boolean lessThan(SegFacet a, SegFacet b) {
return a.tempBR.compareTo(b.tempBR) < 0;
@@ -121,7 +121,7 @@ class PerSegmentSingleValuedFaceting {
boolean hasMissingCount=false;
int missingCount=0;
- for (int i=0; i<leaves.length; i++) {
+ for (int i=0, c=leaves.size(); i<c; i++) {
SegFacet seg = null;
try {
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java Tue Jun 19 07:24:29 2012
@@ -17,6 +17,7 @@
package org.apache.solr.response.transform;
import java.io.IOException;
+import java.util.List;
import java.util.Map;
import org.apache.lucene.index.AtomicReaderContext;
@@ -26,7 +27,6 @@ import org.apache.lucene.queries.functio
import org.apache.lucene.util.ReaderUtil;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrException;
-import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.search.QParser;
import org.apache.solr.search.SolrIndexSearcher;
@@ -64,7 +64,7 @@ public class ValueSourceAugmenter extend
try {
IndexReader reader = qparser.getReq().getSearcher().getIndexReader();
readerContexts = reader.getTopReaderContext().leaves();
- docValuesArr = new FunctionValues[readerContexts.length];
+ docValuesArr = new FunctionValues[readerContexts.size()];
searcher = qparser.getReq().getSearcher();
fcontext = ValueSource.newContext(searcher);
@@ -77,7 +77,7 @@ public class ValueSourceAugmenter extend
Map fcontext;
SolrIndexSearcher searcher;
- AtomicReaderContext[] readerContexts;
+ List<AtomicReaderContext> readerContexts;
FunctionValues docValuesArr[];
@@ -89,7 +89,7 @@ public class ValueSourceAugmenter extend
// TODO: calculate this stuff just once across diff functions
int idx = ReaderUtil.subIndex(docid, readerContexts);
- AtomicReaderContext rcontext = readerContexts[idx];
+ AtomicReaderContext rcontext = readerContexts.get(idx);
FunctionValues values = docValuesArr[idx];
if (values == null) {
docValuesArr[idx] = values = valueSource.getValues(fcontext, rcontext);
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java Tue Jun 19 07:24:29 2012
@@ -602,11 +602,9 @@ public class SolrIndexSearcher extends I
*/
public long lookupId(BytesRef idBytes) throws IOException {
String field = schema.getUniqueKeyField().getName();
- final AtomicReaderContext[] leaves = leafContexts;
-
- for (int i=0; i<leaves.length; i++) {
- final AtomicReaderContext leaf = leaves[i];
+ for (int i=0, c=leafContexts.size(); i<c; i++) {
+ final AtomicReaderContext leaf = leafContexts.get(i);
final AtomicReader reader = leaf.reader();
final Fields fields = reader.fields();
@@ -756,11 +754,7 @@ public class SolrIndexSearcher extends I
collector = pf.postFilter;
}
- final AtomicReaderContext[] leaves = leafContexts;
-
-
- for (int i=0; i<leaves.length; i++) {
- final AtomicReaderContext leaf = leaves[i];
+ for (final AtomicReaderContext leaf : leafContexts) {
final AtomicReader reader = leaf.reader();
final Bits liveDocs = reader.getLiveDocs(); // TODO: the filter may already only have liveDocs...
DocIdSet idSet = null;
@@ -989,10 +983,7 @@ public class SolrIndexSearcher extends I
if (filter==null) {
if (query instanceof TermQuery) {
Term t = ((TermQuery)query).getTerm();
- final AtomicReaderContext[] leaves = leafContexts;
-
- for (int i=0; i<leaves.length; i++) {
- final AtomicReaderContext leaf = leaves[i];
+ for (final AtomicReaderContext leaf : leafContexts) {
final AtomicReader reader = leaf.reader();
collector.setNextReader(leaf);
Fields fields = reader.fields();
@@ -1799,7 +1790,7 @@ public class SolrIndexSearcher extends I
while (iter.hasNext()) {
int doc = iter.nextDoc();
while (doc>=end) {
- AtomicReaderContext leaf = leafContexts[readerIndex++];
+ AtomicReaderContext leaf = leafContexts.get(readerIndex++);
base = leaf.docBase;
end = base + leaf.reader().maxDoc();
topCollector.setNextReader(leaf);
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/VersionInfo.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/VersionInfo.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/VersionInfo.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/VersionInfo.java Tue Jun 19 07:24:29 2012
@@ -159,7 +159,7 @@ public class VersionInfo {
ValueSource vs = versionField.getType().getValueSource(versionField, null);
Map context = ValueSource.newContext(searcher);
vs.createWeight(context, searcher);
- FunctionValues fv = vs.getValues(context, searcher.getTopReaderContext().leaves()[(int)(lookup>>32)]);
+ FunctionValues fv = vs.getValues(context, searcher.getTopReaderContext().leaves().get((int)(lookup>>32)));
long ver = fv.longVal((int)lookup);
return ver;
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestDocSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestDocSet.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestDocSet.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestDocSet.java Tue Jun 19 07:24:29 2012
@@ -19,6 +19,7 @@ package org.apache.solr.search;
import java.io.IOException;
import java.util.Arrays;
+import java.util.List;
import java.util.Random;
import org.apache.lucene.index.FieldInfo;
@@ -471,7 +472,7 @@ public class TestDocSet extends LuceneTe
DocIdSet da;
DocIdSet db;
- AtomicReaderContext[] leaves = topLevelContext.leaves();
+ List<AtomicReaderContext> leaves = topLevelContext.leaves();
// first test in-sequence sub readers
for (AtomicReaderContext readerContext : leaves) {
@@ -480,10 +481,10 @@ public class TestDocSet extends LuceneTe
doTestIteratorEqual(da, db);
}
- int nReaders = leaves.length;
+ int nReaders = leaves.size();
// now test out-of-sequence sub readers
for (int i=0; i<nReaders; i++) {
- AtomicReaderContext readerContext = leaves[rand.nextInt(nReaders)];
+ AtomicReaderContext readerContext = leaves.get(rand.nextInt(nReaders));
da = fa.getDocIdSet(readerContext, null);
db = fb.getDocIdSet(readerContext, null);
doTestIteratorEqual(da, db);
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestIndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestIndexSearcher.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestIndexSearcher.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestIndexSearcher.java Tue Jun 19 07:24:29 2012
@@ -26,6 +26,7 @@ import org.apache.solr.request.SolrQuery
import org.apache.solr.schema.SchemaField;
import org.junit.BeforeClass;
+import java.util.List;
import java.util.Map;
import java.io.IOException;
@@ -50,9 +51,9 @@ public class TestIndexSearcher extends S
Map context = ValueSource.newContext(sqr.getSearcher());
vs.createWeight(context, sqr.getSearcher());
IndexReaderContext topReaderContext = sqr.getSearcher().getTopReaderContext();
- AtomicReaderContext[] leaves = topReaderContext.leaves();
+ List<AtomicReaderContext> leaves = topReaderContext.leaves();
int idx = ReaderUtil.subIndex(doc, leaves);
- AtomicReaderContext leaf = leaves[idx];
+ AtomicReaderContext leaf = leaves.get(idx);
FunctionValues vals = vs.getValues(context, leaf);
return vals.strVal(doc-leaf.docBase);
}
@@ -78,7 +79,7 @@ public class TestIndexSearcher extends S
// make sure the readers share the first segment
// Didn't work w/ older versions of lucene2.9 going from segment -> multi
- assertEquals(rCtx1.leaves()[0].reader(), rCtx2.leaves()[0].reader());
+ assertEquals(rCtx1.leaves().get(0).reader(), rCtx2.leaves().get(0).reader());
assertU(adoc("id","5", "v_f","3.14159"));
assertU(adoc("id","6", "v_f","8983", "v_s1","string6"));
@@ -88,8 +89,8 @@ public class TestIndexSearcher extends S
IndexReaderContext rCtx3 = sr3.getSearcher().getTopReaderContext();
// make sure the readers share segments
// assertEquals(r1.getLeafReaders()[0], r3.getLeafReaders()[0]);
- assertEquals(rCtx2.leaves()[0].reader(), rCtx3.leaves()[0].reader());
- assertEquals(rCtx2.leaves()[1].reader(), rCtx3.leaves()[1].reader());
+ assertEquals(rCtx2.leaves().get(0).reader(), rCtx3.leaves().get(0).reader());
+ assertEquals(rCtx2.leaves().get(1).reader(), rCtx3.leaves().get(1).reader());
sr1.close();
sr2.close();
@@ -123,8 +124,8 @@ public class TestIndexSearcher extends S
assertU(commit());
SolrQueryRequest sr6 = req("q","foo");
IndexReaderContext rCtx6 = sr6.getSearcher().getTopReaderContext();
- assertEquals(1, rCtx6.leaves()[0].reader().numDocs()); // only a single doc left in the first segment
- assertTrue( !rCtx5.leaves()[0].reader().equals(rCtx6.leaves()[0].reader()) ); // readers now different
+ assertEquals(1, rCtx6.leaves().get(0).reader().numDocs()); // only a single doc left in the first segment
+ assertTrue( !rCtx5.leaves().get(0).reader().equals(rCtx6.leaves().get(0).reader()) ); // readers now different
sr5.close();
sr6.close();
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestSort.java?rev=1351590&r1=1351589&r2=1351590&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestSort.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestSort.java Tue Jun 19 07:24:29 2012
@@ -198,7 +198,7 @@ public class TestSort extends SolrTestCa
DirectoryReader reader = DirectoryReader.open(dir);
IndexSearcher searcher = new IndexSearcher(reader);
// System.out.println("segments="+searcher.getIndexReader().getSequentialSubReaders().length);
- assertTrue(reader.getSequentialSubReaders().length > 1);
+ assertTrue(reader.getSequentialSubReaders().size() > 1);
for (int i=0; i<qiter; i++) {
Filter filt = new Filter() {