Index: lucene/contrib/misc/src/java/org/apache/lucene/index/IndexSorter.java =================================================================== --- lucene/contrib/misc/src/java/org/apache/lucene/index/IndexSorter.java (revision 1036920) +++ lucene/contrib/misc/src/java/org/apache/lucene/index/IndexSorter.java (working copy) @@ -183,6 +183,11 @@ } } + @Override + public IndexReader[] getSequentialSubReaders() { + return null; + } + public Document document(int n) throws IOException { return document(n, null); } Index: lucene/contrib/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java =================================================================== --- lucene/contrib/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java (revision 1036920) +++ lucene/contrib/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java (working copy) @@ -221,6 +221,11 @@ } @Override + public IndexReader[] getSequentialSubReaders() { + return null; + } + + @Override public TermPositions termPositions() throws IOException { return new FilterTermPositions(in.termPositions()) { Index: lucene/src/java/org/apache/lucene/index/SegmentMerger.java =================================================================== --- lucene/src/java/org/apache/lucene/index/SegmentMerger.java (revision 1036920) +++ lucene/src/java/org/apache/lucene/index/SegmentMerger.java (working copy) @@ -30,6 +30,7 @@ import org.apache.lucene.store.Directory; import org.apache.lucene.store.IndexInput; import org.apache.lucene.store.IndexOutput; +import org.apache.lucene.util.ReaderUtil; /** * The SegmentMerger class combines two or more Segments, represented by an IndexReader ({@link #add}, @@ -113,19 +114,10 @@ * @param reader */ final void add(IndexReader reader) { - readers.add(reader); + ReaderUtil.gatherSubReaders(readers, reader); } /** - * - * @param i The index of the reader to return - * @return The ith reader to be merged - */ - final IndexReader segmentReader(int i) { - return readers.get(i); - } - - /** * Merges the readers specified by the {@link #add} method into the directory passed to the constructor * @return The number of documents that were merged * @throws CorruptIndexException if the index is corrupt @@ -456,7 +448,7 @@ final SegmentReader matchingSegmentReader = matchingSegmentReaders[idx++]; TermVectorsReader matchingVectorsReader = null; if (matchingSegmentReader != null) { - TermVectorsReader vectorsReader = matchingSegmentReader.getTermVectorsReaderOrig(); + TermVectorsReader vectorsReader = matchingSegmentReader.getTermVectorsReader(); // If the TV* files are an older format then they cannot read raw docs: if (vectorsReader != null && vectorsReader.canReadRawDocs()) { @@ -731,7 +723,7 @@ output = directory.createOutput(IndexFileNames.segmentFileName(segment, IndexFileNames.NORMS_EXTENSION)); output.writeBytes(NORMS_HEADER,NORMS_HEADER.length); } - for ( IndexReader reader : readers) { + for (IndexReader reader : readers) { int maxDoc = reader.maxDoc(); if (normBuffer == null || normBuffer.length < maxDoc) { // the buffer is too small for the current segment