[
https://issues.apache.org/jira/browse/LUCENE-4236?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Robert Muir updated LUCENE-4236:
--------------------------------
Attachment: LUCENE-4236.patch
The previous patch had a bug: coord was computed for the conjunction as
scorers.length/scorers.length but it should be scorers.length/maxCoord (in the
case of optional clauses that happened to not exist in the segment).
Random testing is great.
This patch removes the specialized TermConjunctionScorer, making the
TermConjunctionScorer algorithm ConjunctionScorer. I added a method to Scorer
so that any scorer can return an estimated cost of how many postings it will
read:
* term: docFreq()
* disjunction: sum(cost)
* conjunction/phrase: min(cost) * numSubs
and so on, which ConjunctionScorer uses.
No perf degradation... refactoring continues
> clean up booleanquery conjunction optimizations a bit
> -----------------------------------------------------
>
> Key: LUCENE-4236
> URL: https://issues.apache.org/jira/browse/LUCENE-4236
> Project: Lucene - Java
> Issue Type: Improvement
> Reporter: Robert Muir
> Fix For: 4.0, 5.0
>
> Attachments: LUCENE-4236.patch, LUCENE-4236.patch, LUCENE-4236.patch
>
>
> After LUCENE-3505, I want to do a slight cleanup:
> * compute the term conjunctions optimization in scorer(), so its applied even
> if we have optional and prohibited clauses that dont exist in the segment
> (e.g. return null)
> * use the term conjunctions optimization when optional.size() ==
> minShouldMatch, as that means they are all mandatory, too.
> * don't return booleanscorer1 when optional.size() == minShouldMatch, because
> it means we have required clauses and in general BS2 should do a much better
> job (e.g. use advance).
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]