Index: src/java/org/apache/lucene/index/IndexWriter.java =================================================================== --- src/java/org/apache/lucene/index/IndexWriter.java (revision 178062) +++ src/java/org/apache/lucene/index/IndexWriter.java (working copy) @@ -121,6 +121,7 @@ private SegmentInfos segmentInfos = new SegmentInfos(); // the segments private final Directory ramDirectory = new RAMDirectory(); // for temp segs + private long bufferedDocCount = 0; private Lock writeLock; private int termIndexInterval = DEFAULT_TERM_INDEX_INTERVAL; @@ -462,6 +463,7 @@ dw.addDocument(segmentName, doc); synchronized (this) { segmentInfos.addElement(new SegmentInfo(segmentName, 1, ramDirectory)); + bufferedDocCount++; maybeMergeSegments(); } } @@ -629,6 +631,15 @@ /** Incremental segment merger. */ private final void maybeMergeSegments() throws IOException { + /** + * do not bother checking the segment details to determine + * if we should merge, but instead honour the maxBufferedDocs(minMergeDocs) + * property to ensure we do not spend time checking for merge conditions + * + */ + if(bufferedDocCount