off by one: DisjunctionSumScorer::advance -----------------------------------------
Key: LUCENE-2336 URL: https://issues.apache.org/jira/browse/LUCENE-2336 Project: Lucene - Java Issue Type: Bug Components: Search Reporter: Gary Yngve Priority: Minor The bug is: if (target <= currentDoc) { should be if (target < currentDoc) { based on the comments for the method as well as the contract for DocIdSetIterator: "Advances to the first beyond the current" It can be demonstrated by: assertEquals("advance(1) first match failed", 1, scorer.advance(1)); assertEquals("advance(1) second match failed", n, scorer.advance(1)); if docId: 1 is a hit and n is the next hit. (Tests all pass if this code change is made.) I'm not labeling it as major because the class is package-protected and currently passes spec. Relevant excerpt: /** * Advances to the first match beyond the current whose document number is * greater than or equal to a given target. <br> * When this method is used the {...@link #explain(int)} method should not be * used. <br> * The implementation uses the skipTo() method on the subscorers. * * @param target * The target document number. * @return the document whose number is greater than or equal to the given * target, or -1 if none exist. */ public int advance(int target) throws IOException { if (scorerDocQueue.size() < minimumNrMatchers) { return currentDoc = NO_MORE_DOCS; } if (target <= currentDoc) { return currentDoc; } do { if (scorerDocQueue.topDoc() >= target) { boolean b = advanceAfterCurrent(); return b ? currentDoc : (currentDoc = NO_MORE_DOCS); } else if (!scorerDocQueue.topSkipToAndAdjustElsePop(target)) { if (scorerDocQueue.size() < minimumNrMatchers) { return currentDoc = NO_MORE_DOCS; } } } while (true); } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org For additional commands, e-mail: java-dev-h...@lucene.apache.org