Index: java/org/apache/lucene/search/DisjunctionSumScorer.java =================================================================== --- java/org/apache/lucene/search/DisjunctionSumScorer.java (revision 614534) +++ java/org/apache/lucene/search/DisjunctionSumScorer.java (working copy) @@ -50,7 +50,6 @@ * and all scorers are after the matching doc, or are exhausted. */ private ScorerDocQueue scorerDocQueue = null; - private int queueSize = -1; // used to avoid size() method calls on scorerDocQueue /** The document number of the current match. */ private int currentDoc = -1; @@ -99,13 +98,10 @@ private void initScorerDocQueue() throws IOException { Iterator si = subScorers.iterator(); scorerDocQueue = new ScorerDocQueue(nrScorers); - queueSize = 0; while (si.hasNext()) { Scorer se = (Scorer) si.next(); if (se.next()) { // doc() method will be used in scorerDocQueue. - if (scorerDocQueue.insert(se)) { - queueSize++; - } + scorerDocQueue.insert(se); } } } @@ -173,7 +169,7 @@ nrMatchers = 1; do { // Until all subscorers are after currentDoc if (! scorerDocQueue.topNextAndAdjustElsePop()) { - if (--queueSize == 0) { + if (scorerDocQueue.size() == 0) { break; // nothing more to advance, check for last match. } } @@ -186,7 +182,7 @@ if (nrMatchers >= minimumNrMatchers) { return true; - } else if (queueSize < minimumNrMatchers) { + } else if (scorerDocQueue.size() < minimumNrMatchers) { return false; } } while (true); @@ -217,7 +213,7 @@ if (scorerDocQueue == null) { initScorerDocQueue(); } - if (queueSize < minimumNrMatchers) { + if (scorerDocQueue.size() < minimumNrMatchers) { return false; } if (target <= currentDoc) { @@ -227,7 +223,7 @@ if (scorerDocQueue.topDoc() >= target) { return advanceAfterCurrent(); } else if (! scorerDocQueue.topSkipToAndAdjustElsePop(target)) { - if (--queueSize < minimumNrMatchers) { + if (scorerDocQueue.size() < minimumNrMatchers) { return false; } }