lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thomas Matthijs <li...@selckin.be>
Subject Re: lucene-4.0: QueryWrapperFilter & docBase
Date Mon, 08 Oct 2012 12:52:20 GMT
On Mon, Oct 8, 2012 at 2:29 PM, Thomas Matthijs <lists@selckin.be> wrote:
> On Mon, Oct 8, 2012 at 11:28 AM, Uwe Schindler <uwe@thetaphi.de> wrote:
>> Hi,
>>
>> This is a known problem currently. I think there is already an issue open, so this
was not solved for 4.0 (I don't have the issue no available at the moment).
>>
>> My plan to fix this is to make Filters behave like queries (with a rewrite() method),
so the correct context can be passed to a "rewritten" filter (when QueryWrapperFilter rewrites,
it rewrites also the query). The current approach is for performance reasons, because without
rewrite, you would have no persistent "state" information between index segments, so the Query
has to be rewritten on the top-level index for every segment again. By the current approach,
the query is only rewritten against the current segment with a private IndexSearcher. By that
process the docBase gets lost. So currently this does not work.
>>
>> I would recommend to *not* use QueryWrapperFilter and instead wrap with ConstantScoreQuery
and add it to the query as a Boolean MUST clause. In that case it should work fine. There
is no performance increase by using QueryWrapperFilter, so no reason to use it.
>
> It's important for me that the score does not change from what it was
> before, and i'm unable to construct a booleanquery w/ CSQ that
> basically ignores the filter score.
>
> So i made a quick attempt at a basic FilteredQuery
> (http://pastie.org/4932671) Just returning a ConjunctionScorer with
> both the query & filter query, and overriding score() to return the
> query score should do the trick i think?
>
> This seems to work correctly in most cases but a test where i just
> have a MUST_NOT clause in a (boolean)filter does not work this way,
> because BooleanQuery with a single MUST_NOT clause just shortcircuits
> this case and returns null from scorer(). A single MUST_NOT clause
> worked correct in a BooleanFilter.
>
> I can't wrap my head around it yet why its ok for BooleanQuery to
> ignore these clauses ? Anyway i'm now attempting to make a scorer for
> only prohibited clauses.
>

Guess I can/should not
https://issues.apache.org/jira/browse/LUCENE-3451

Why are pure negative queries such a problem?

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Mime
View raw message