Index: src/java/org/apache/lucene/index/SegmentReader.java =================================================================== --- src/java/org/apache/lucene/index/SegmentReader.java (revision 786482) +++ src/java/org/apache/lucene/index/SegmentReader.java (working copy) @@ -475,6 +475,17 @@ return instance; } + synchronized void openDocStores(SegmentReader orig) throws IOException { + if (fieldsReaderOrig == null) { + orig.openDocStores(); + + fieldsReaderOrig = orig.fieldsReaderOrig; + termVectorsReaderOrig = orig.termVectorsReaderOrig; + storeCFSReader = orig.storeCFSReader; + cfsReader = orig.cfsReader; + } + } + synchronized void openDocStores() throws IOException { if (fieldsReaderOrig == null) { final Directory storeDir; Index: src/java/org/apache/lucene/index/MergePolicy.java =================================================================== --- src/java/org/apache/lucene/index/MergePolicy.java (revision 786482) +++ src/java/org/apache/lucene/index/MergePolicy.java (working copy) @@ -133,6 +133,9 @@ b.append(" into ").append(info.name); if (optimize) b.append(" [optimize]"); + if (mergeDocStores) { + b.append(" [mergeDocStores]"); + } return b.toString(); } } Index: src/java/org/apache/lucene/index/IndexWriter.java =================================================================== --- src/java/org/apache/lucene/index/IndexWriter.java (revision 786482) +++ src/java/org/apache/lucene/index/IndexWriter.java (working copy) @@ -4829,7 +4829,7 @@ } for(int i=0;i