[ https://issues.apache.org/jira/browse/LUCENE-914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12629130#action_12629130 ]
[EMAIL PROTECTED] edited comment on LUCENE-914 at 9/8/08 4:20 AM: ------------------------------------------------------------- I had another look at these lines in DisjunctionScorer.skipTo() from LUCENE-413: {code} if (target <= currentDoc) { // CHECKME: skipTo() semantics? return true; } {code} I think these lines can simply be dropped. The bug at LUCENE-413 was probably fixed by the changes to SpanScorer then. Dropping these lines also makes DisjunctionSumScorer advance (effectively use next()) when skipTo(target) is called, even when target <= doc(). Also, I'm changing my opinion on what to do when target <= doc(). I think a DocIdSetIterator (and any Scorer) should always advance in that case, just like the javadocs of TermDocs. When Scorers/DocIdSetIterators are combined, for example in disjunctions or conjunctions or in the more complex cases of BooleanScorer2, the test for target <= doc() can simply be done before calling skipTo() on any of the combined Scorers/DocIdSetIterators. Now, if such a change surfaces some bugs like LUCENE-413, so be it. It's better to have clearly defined semantics than to have lingering bugs due to explicitly undefined semantics in the case of target <= doc(). Btw. there is a small bug in SpanScorer, the (freq != 0) test there should be replaced by a boolean check for actual matches. See SpanScorer.setFreqCurrentDoc(). The bug would only surface when the Similarity used in SpanScorer returns 0 for sloppyFreq(). was (Author: [EMAIL PROTECTED]): I had another look at these lines in DisjunctionScorer.skipTo() from LUCENE-413: {code} if (target <= currentDoc) { // CHECKME: skipTo() semantics? return true; } {code} I think these lines can simply be dropped. The bug at LUCENE-413 was probably fixed by the changes to SpanScorer then. Dropping these lines also makes DisjunctionSumScorer advance (effectively use next()) when skipTo(target) is called, even when target <= doc(). Also, I'm changing my opinion on what to do when target <= doc(). I think a DocIdSetIterator (and any Scorer) should always advance in that case, just like the javadocs of TermDocs. When Scorers/DocIdSetIterators are combined, for example in disjunctions or conjunctions or in the more complex cases of BooleanScorer2, the test for target <= doc() can simply be done before calling skipTo() on any of the combined Scorers/DocIdSetIterators. Now, if such a change surfaces some bugs like LUCENE-413, so be it. It's better to have clearly defined semantics than to have lingering bugs due to explicitly undefined semantics in the case of target <= doc(). Btw. such a change would leave a small bug in SpanScorer, the (freq != 0) test there should be replaced by a boolean check for actual matches. See SpanScorer.setFreqCurrentDoc(). The bug would only surface when the Similarity used in SpanScorer returns 0 for sloppyFreq(). > Scorer.skipTo(current) remains on current for some scorers > ---------------------------------------------------------- > > Key: LUCENE-914 > URL: https://issues.apache.org/jira/browse/LUCENE-914 > Project: Lucene - Java > Issue Type: Bug > Components: Search > Reporter: Doron Cohen > Priority: Minor > Attachments: lucene-914.patch > > > Background in http://www.nabble.com/scorer.skipTo%28%29-contr-tf3880986.html > It appears that several scorers do not strictly follow the spec of > Scorer.skipTo(n), and skip to current location remain in current location > whereas the spec says: "beyond current". > We should (probably) either relax the spec or fix the implementations. -- 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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]