[ https://issues.apache.org/jira/browse/LUCENE-3328?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Simon Willnauer updated LUCENE-3328: ------------------------------------ Attachment: LUCENE-3328.patch next iteration. I added two util methods to get a TermsEnum and a ExactDocScorer from a TermWeight which allowed to make all the members private again. This looks little cleaner now and eventually if we cut over PhraseQuery to use BQ + PosIterators it can simply get all it needs from the TermsEnum like DocsAndPosEnum & totalTermFreq. I also tried to optimize the doNext() loop even further to save one more comparison to hopefully help hotspot even further. I need to benchmark this patch one more time but overall this looks close. I also added a CHANGES.TXT entry. > Specialize BooleanQuery if all clauses are TermQueries > ------------------------------------------------------ > > Key: LUCENE-3328 > URL: https://issues.apache.org/jira/browse/LUCENE-3328 > Project: Lucene - Java > Issue Type: Improvement > Components: core/search > Affects Versions: 3.4, 4.0 > Reporter: Simon Willnauer > Fix For: 4.0 > > Attachments: LUCENE-3328.patch, LUCENE-3328.patch, LUCENE-3328.patch > > > During work on LUCENE-3319 I ran into issues with BooleanQuery compared to > PhraseQuery in the exact case. If I disable scoring on PhraseQuery and bypass > the position matching, essentially doing a conjunction match, > ExactPhraseScorer beats plain boolean scorer by 40% which is a sizeable gain. > I converted a ConjunctionScorer to use DocsEnum directly but still didn't get > all the 40% from PhraseQuery. Yet, it turned out with further optimizations > this gets very close to PhraseQuery. The biggest gain here came from > converting the hand crafted loop in ConjunctionScorer#doNext to a for loop > which seems to be less confusing to hotspot. In this particular case I think > code specialization makes lots of sense since BQ with TQ is by far one of the > most common queries. > I will upload a patch shortly -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org