diff --git a/lucene/core/src/java/org/apache/lucene/search/BlockMaxConjunctionBulkScorer.java b/lucene/core/src/java/org/apache/lucene/search/BlockMaxConjunctionBulkScorer.java index 0ea42029787f..e440e386d65e 100644 --- a/lucene/core/src/java/org/apache/lucene/search/BlockMaxConjunctionBulkScorer.java +++ b/lucene/core/src/java/org/apache/lucene/search/BlockMaxConjunctionBulkScorer.java @@ -84,7 +84,10 @@ private float computeMaxScore(int windowMin, int windowMax) throws IOException { public int score(LeafCollector collector, Bits acceptDocs, int min, int max) throws IOException { collector.setScorer(scorable); - int windowMin = scoreDocFirstUntilDynamicPruning(collector, acceptDocs, min, max); + int windowMin = Math.max(lead.docID(), min); + if (scorable.minCompetitiveScore == 0) { + windowMin = scoreDocFirstUntilDynamicPruning(collector, acceptDocs, min, max); + } while (windowMin < max) { // Use impacts of the least costly scorer to compute windows