From 44a38e98375ce47d707a728f8438bb63aba7369d Mon Sep 17 00:00:00 2001 From: Yonik Seeley Date: Thu, 18 Feb 2010 20:25:48 +0000 Subject: [PATCH] LUCENE-2270: fix query normalization when boosts of all clauses==0 git-svn-id: https://svn.apache.org/repos/asf/lucene/java/trunk@911554 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES.txt | 5 +++++ src/java/org/apache/lucene/search/Query.java | 2 ++ 2 files changed, 7 insertions(+) diff --git a/CHANGES.txt b/CHANGES.txt index 85c40590081..a7a64acd917 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -81,6 +81,11 @@ Bug fixes * LUCENE-2249: ParallelMultiSearcher should shut down thread pool on close. (Martin Traverso via Uwe Schindler) + + * LUCENE-2770: Queries consisting of all zero-boost clauses + (for example, text:foo^0) sorted incorrectly and produced + invalid docids. (yonik) + New features diff --git a/src/java/org/apache/lucene/search/Query.java b/src/java/org/apache/lucene/search/Query.java index cff67dbf5af..9250c1fa091 100644 --- a/src/java/org/apache/lucene/search/Query.java +++ b/src/java/org/apache/lucene/search/Query.java @@ -101,6 +101,8 @@ public abstract class Query implements java.io.Serializable, Cloneable { Weight weight = query.createWeight(searcher); float sum = weight.sumOfSquaredWeights(); float norm = getSimilarity(searcher).queryNorm(sum); + if (Float.isInfinite(norm) || Float.isNaN(norm)) + norm = 1.0f; weight.normalize(norm); return weight; }