diff --git a/src/java/org/apache/lucene/index/IndexWriter.java b/src/java/org/apache/lucene/index/IndexWriter.java index 4f205a375a1..ed8aac91574 100644 --- a/src/java/org/apache/lucene/index/IndexWriter.java +++ b/src/java/org/apache/lucene/index/IndexWriter.java @@ -711,12 +711,10 @@ public class IndexWriter { mergeDocs += si.docCount; } - if (mergeDocs >= targetMergeDocs) { // found a merge to do + if (mergeDocs >= targetMergeDocs) // found a merge to do mergeSegments(minSegment+1); - singleDocSegmentsCount = 0; - } else { + else break; - } targetMergeDocs *= mergeFactor; // increase target size } @@ -749,6 +747,11 @@ public class IndexWriter { segmentsToDelete.addElement(reader); // queue segment for deletion } + // update 1-doc segments counter accordin to range of merged segments + if (singleDocSegmentsCount>0) { + singleDocSegmentsCount = Math.min(singleDocSegmentsCount, segmentInfos.size()-end); + } + int mergedDocCount = merger.merge(); if (infoStream != null) {