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

Uwe Schindler updated LUCENE-2838:
----------------------------------

    Attachment: LUCENE-2838.patch

Cleaned up patch:
- removed a useless testcase, no longer needed
- added test for CSQ, that checks equals and hashCode
- code cleanup
- javadocs

I will commit this if nobody objects to 3.x and trunk. About deprecating QWF we 
should discuss in separate issues, maybe we can merge Filter and Query before 
4.0!

> ConstantScoreQuery should directly support wrapping Query and simply strip 
> off scores
> -------------------------------------------------------------------------------------
>
>                 Key: LUCENE-2838
>                 URL: https://issues.apache.org/jira/browse/LUCENE-2838
>             Project: Lucene - Java
>          Issue Type: Improvement
>          Components: Search
>            Reporter: Uwe Schindler
>            Assignee: Uwe Schindler
>             Fix For: 3.1, 4.0
>
>         Attachments: LUCENE-2838.patch, LUCENE-2838.patch
>
>
> Especially in MultiTermQuery rewrite modes we often simply need to strip off 
> scores from Queries and make them constant score. Currently the code to do 
> this looks quite ugly: new ConstantScoreQuery(new QueryWrapperFilter(query))
> As the name says, QueryWrapperFilter should make any other Query constant 
> score, so why does it not take a Query as ctor param? This question was aldso 
> asked quite often by my customers and is simply correct, if you think about 
> it.
> Looking closer into the code, it is clear that this would also speed up MTQs:
> - One additional wrapping and method calls can be removed
> - Maybe we can even deprecate QueryWrapperFilter in 3.1 now (it's now only 
> used in tests and the use-case for this class is not really available) and 
> LUCENE-2831 does not need the stupid hack to make Simon's assertions pass
> - CSQ now supports out-of-order scoring and topLevel scoring, so a CSQ on 
> top-level now directly feeds the Collector. For that a small trick is used: 
> The score(Collector) calls are directly delegated and the scores are stripped 
> by wrapping the setScorer() method in Collector
> During that I found a visibility bug in Scorer (LUCENE-2839): The method 
> "boolean score(Collector collector, int max, int firstDocID)" should be 
> public not protected, as its not solely intended to be overridden by 
> subclasses and is called from other classes, too! This leads to no compiler 
> bugs as the other classes that calls it is mainly BooleanScorer(2) and thats 
> in same package, but visibility is wrong. I will open an issue for that and 
> fix it at least in trunk where we have no backwards-requirement.

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

Reply via email to