On Thursday 11 May 2006 01:39, Chris Hostetter wrote:
>
> I'm looking into some of the issues with LUCENE-557 and it seems that a
> lot of them are triggered by the way BooleanWeight.normalize is
> implimented...
>
> public void normalize(float norm) {
> norm *= getBoost(); // incorporate boost
> for (int i = 0 ; i < weights.size(); i++) {
> BooleanClause c = (BooleanClause)clauses.elementAt(i);
> Weight w = (Weight)weights.elementAt(i);
> if (!c.isProhibited())
> w.normalize(norm);
> }
> }
>
> ...since prohibited clauses aren't normalized, they sub-weights don't get
> their weights set properly, which means that when the Explanation is
> claculated, they tend to result in an Explanation with a value of "0" ...
> and since they are prohibited, the Explanation for BooleanQuery thinks
> that is a good thing.
>
> Does anyone know why normalize ignores the prohibited clauses? was that
> just intended to be an optimization (save time calculating stuff for
> clauses we don't care about scoring in depth) ... ?
A prohibited clause will never occur in any matching document, so it
will never need to take part in any score value calculation.
Regards,
Paul Elschot
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]