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

Michael McCandless commented on LUCENE-4396:
--------------------------------------------

Thanks Da!

bq. Now, I'm just using BAS and BLS for cases with MUST, as BS's perfermance is 
not very competitive.

OK, that's nice to see.

bq. If we still need to give up one scorer, I think it would be better to give 
up BLS, as it looks that BAS to have more positive value than BLS.

I think it makes sense to drop BLS?  Looking at your performance charts 
(thanks!) it looks like BAS is typically ahead of BLS.

bq. TestBooleanQueryVisitSubscorers.testConjunction will fail, when these 
scorers have only MUST clauses.  This is because these three scorers do not 
have .getChildren() implemented.

OK.  Today, the caller can force DAAT scoring by returning false from 
Collector.acceptDocsOutOfOrder; I think it's important we keep that capability, 
for expert apps that want .getChildren to work.

bq. I think we should throw exception when people try to take them as 
ConjunctionScorer. Do you agree?

I agree.  In this case it's not so different from BS2 right?  They will both 
just use the same ConjunctionScorer?

> BooleanScorer should sometimes be used for MUST clauses
> -------------------------------------------------------
>
>                 Key: LUCENE-4396
>                 URL: https://issues.apache.org/jira/browse/LUCENE-4396
>             Project: Lucene - Core
>          Issue Type: Improvement
>            Reporter: Michael McCandless
>         Attachments: And.tasks, And.tasks, AndOr.tasks, AndOr.tasks, 
> LUCENE-4396.patch, LUCENE-4396.patch, LUCENE-4396.patch, LUCENE-4396.patch, 
> LUCENE-4396.patch, LUCENE-4396.patch, LUCENE-4396.patch, LUCENE-4396.patch, 
> LUCENE-4396.patch, LUCENE-4396.patch, LUCENE-4396.patch, LUCENE-4396.patch, 
> LUCENE-4396.patch, SIZE.perf, all.perf, luceneutil-score-equal.patch, 
> luceneutil-score-equal.patch, perf.png, stat.cpp, stat.cpp, tasks.cpp
>
>
> Today we only use BooleanScorer if the query consists of SHOULD and MUST_NOT.
> If there is one or more MUST clauses we always use BooleanScorer2.
> But I suspect that unless the MUST clauses have very low hit count compared 
> to the other clauses, that BooleanScorer would perform better than 
> BooleanScorer2.  BooleanScorer still has some vestiges from when it used to 
> handle MUST so it shouldn't be hard to bring back this capability ... I think 
> the challenging part might be the heuristics on when to use which (likely we 
> would have to use firstDocID as proxy for total hit count).
> Likely we should also have BooleanScorer sometimes use .advance() on the subs 
> in this case, eg if suddenly the MUST clause skips 1000000 docs then you want 
> to .advance() all the SHOULD clauses.
> I won't have near term time to work on this so feel free to take it if you 
> are inspired!



--
This message was sent by Atlassian JIRA
(v6.2#6252)

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

Reply via email to