[
https://issues.apache.org/jira/browse/LUCENE-1614?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12714366#action_12714366
]
Michael McCandless commented on LUCENE-1614:
--------------------------------------------
bq. Consider the code in BS2 which checks if it should call nextDoc() before
the while loop (the score(Collector, int) method). If a DISI decided to return
'2' simply because the first doc available is '3', then we may incorrectly
collect '2'.
Actually, I'm not liking that particular added code anyway ;)
Ie the contract of that method (I believe) is that nextDoc must already have
been called. I don't like adding ambiguity into the API, and so instead of the
check I'd rather switch it to an "assert docID != -1", ie, assert that nextDoc
was in fact called. And then if that assert trips up, we need to go understand
the root cause for that.
bq. So I say we relax the policy in this way: "an implementation can return -1
if it knows the iterator is not exhausted, or NO_MORE_DOCS otherwise".
OK, let's do that. Though: it need not return NO_MORE_DOCS up front, right?
Ie, if it is able to determine up front it has no docs to iterate, great, else,
it can return -1 until nextDoc() is called at which point it returns
NO_MORE_DOCS?
> Add next() and skipTo() variants to DocIdSetIterator that return the current
> doc, instead of boolean
> ----------------------------------------------------------------------------------------------------
>
> Key: LUCENE-1614
> URL: https://issues.apache.org/jira/browse/LUCENE-1614
> Project: Lucene - Java
> Issue Type: Improvement
> Components: Search
> Reporter: Shai Erera
> Fix For: 2.9
>
> Attachments: LUCENE-1614.patch, LUCENE-1614.patch, LUCENE-1614.patch,
> LUCENE-1614.patch, LUCENE-1614.patch, LUCENE-1614.patch, LUCENE-1614.patch
>
>
> See
> http://www.nabble.com/Another-possible-optimization---now-in-DocIdSetIterator-p23223319.html
> for the full discussion. The basic idea is to add variants to those two
> methods that return the current doc they are at, to save successive calls to
> doc(). If there are no more docs, return -1. A summary of what was discussed
> so far:
> # Deprecate those two methods.
> # Add nextDoc() and skipToDoc(int) that return doc, with default impl in DISI
> (calls next() and skipTo() respectively, and will be changed to abstract in
> 3.0).
> #* I actually would like to propose an alternative to the names: advance()
> and advance(int) - the first advances by one, the second advances to target.
> # Wherever these are used, do something like '(doc = advance()) >= 0' instead
> of comparing to -1 for improved performance.
> I will post a patch shortly
--
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]