[ 
https://issues.apache.org/jira/browse/LUCENE-1614?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael McCandless updated LUCENE-1614:
---------------------------------------

    Attachment: LUCENE-1614.patch

OK I think we're getting close... I attached patch w/ these
changes/questions:

  * I think we should require that nextDoc/advance not be called again
    once NO_MORE_DOCS has already been returned?  This would save
    checks, eg in ConjunctionScorer & DisjunctionMaxScorer &
    ReqExclScorer at least, for "did I already return NO_MORE_DOCS" on
    every nextDoc call.  Some things already seem to require this (eg
    DocIdBitSet's DISI).

  * I think the new code for applying a filter during searching (~line
    282 of IndexSearcher) can be made more efficient in the "if
    (scorerDoc == filterDoc)" case.  Inside there, we ask
    filterDocIter to do nextDoc(), at which point we know scorerDoc is
    < filterDoc, and so it'd be better to call scorer.advance, there,
    instead of wrapping around the loop and having to do the if at the
    top?

  * Fixed bug in how "more" is computed in BooleanScorer (we were
    directly assigning to more instead of or'ing in the new value)

  * Various cosmetic changes -- removed unused vars, imports; made
    some attrs final.

  * [As a separate issue, it seems like NonMatchingScorer should be
    removed, and we should fix BooleanQuery.scorer to instead return
    null in such cases]


> 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, 
> 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: java-dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-dev-h...@lucene.apache.org

Reply via email to