lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Uwe Schindler (JIRA)" <>
Subject [jira] [Commented] (LUCENE-3208) Move Query.weight() to IndexSearcher as protected method
Date Thu, 16 Jun 2011 09:41:47 GMT


Uwe Schindler commented on LUCENE-3208:

I started to rewrite some stuff, very straightforward.

- BufferedDeletesStream has to be changed as it was also calling Query.weight, but I replaced
the usage here by QueryWrapperFilter and getting the DocIdSet. Code gets much easier here.
- QueryWrapperFilter's hack was rewritten, easy
- in TestFrameWork, QueryUtils were also rewritten, they often use weight, but thats internal

The main issue:
In IndexSearcher is already a method called createWeight(Query) (which currently delegates
to the Query). I moved the code over here. I have to still complain about the name, it creates
a Weight yes, but it should also note that it rewrites and normalizes the weight. So I would
like to rename that method, too and deprecate the old one.

For now I leave the name unchanged. Patch comes soon (core only).

> Move Query.weight() to IndexSearcher as protected method
> --------------------------------------------------------
>                 Key: LUCENE-3208
>                 URL:
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: core/search
>            Reporter: Uwe Schindler
>            Assignee: Uwe Schindler
>             Fix For: 3.3, 4.0
> We had this issue several times, latest in LUCENE-3207.
> The method Query.weight() was left in Query for backwards reasons in Lucene 2.9 when
we changed Weight class. This method is only to be called on top-level queries - and this
is done by IndexSearcher. This method is just a utility method, that has nothing to do with
the query itsself (it just combines the createWeight method and calls the normalization afterwards).

> The problem we have is that any query that wraps other queries (like CustomScore, ConstantScore,
Boolean) calls Query.weight() instead of Query.createWeight(), it will do normalization two
times, leading to strange bugs.
> For 3.3 I will make Query.weight() simply delegate to IndexSearcher's replacement method
with a big deprecation warning, so user sees this. In IndexSearcher itsself the method will
be protected to only be called by itsself or subclasses of IndexSearcher. Delegation for backwards
is no problem, as protected is accessible by classes in same package.
> I would suggest the method name to be IndexSearcher.createNormalizedWeight(Query q)

This message is automatically generated by JIRA.
For more information on JIRA, see:


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message