[ 
https://issues.apache.org/jira/browse/LUCENE-6276?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14953571#comment-14953571
 ] 

Adrien Grand commented on LUCENE-6276:
--------------------------------------

bq. change the matchCost() method to return a float instead of a long

I liked having it as a long, like DISI.cost(). Maybe we could just round?

bq. I'd like to have it reflect an avarage cost to process a single document, 
once the two phase iterator is at the document. That would exclude the cost for 
next() and advance(), which would be better in the DISI.cost() method for now.

Indeed this is what it should do! Sorry I introduced some confusion, the reason 
why I brought these methods is ReqExclScorer, whose TwoPhaseIterator calls 
DocIdSetIterator.advance() on the excluded iterator in oder to validate a 
match. So we need to decide how costly calling advance() is.

> Add matchCost() api to TwoPhaseDocIdSetIterator
> -----------------------------------------------
>
>                 Key: LUCENE-6276
>                 URL: https://issues.apache.org/jira/browse/LUCENE-6276
>             Project: Lucene - Core
>          Issue Type: Improvement
>            Reporter: Robert Muir
>         Attachments: LUCENE-6276-ExactPhraseOnly.patch
>
>
> We could add a method like TwoPhaseDISI.matchCost() defined as something like 
> estimate of nanoseconds or similar. 
> ConjunctionScorer could use this method to sort its 'twoPhaseIterators' array 
> so that cheaper ones are called first. Today it has no idea if one scorer is 
> a simple phrase scorer on a short field vs another that might do some geo 
> calculation or more expensive stuff.
> PhraseScorers could implement this based on index statistics (e.g. 
> totalTermFreq/maxDoc)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to