You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2015/09/08 10:24:16 UTC
svn commit: r1701742 - in /lucene/dev/trunk/lucene/core/src:
java/org/apache/lucene/search/BooleanWeight.java
java/org/apache/lucene/search/DisjunctionMaxQuery.java
test/org/apache/lucene/search/TestSimpleSearchEquivalence.java
Author: jpountz
Date: Tue Sep 8 08:24:16 2015
New Revision: 1701742
URL: http://svn.apache.org/r1701742
Log:
LUCENE-6590: Fix BooleanQuery to not propagate query boosts twice.
Modified:
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanWeight.java
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxQuery.java
lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSimpleSearchEquivalence.java
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanWeight.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanWeight.java?rev=1701742&r1=1701741&r2=1701742&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanWeight.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanWeight.java Tue Sep 8 08:24:16 2015
@@ -43,7 +43,6 @@ final class BooleanWeight extends Weight
final boolean disableCoord;
final boolean needsScores;
final float coords[];
- float boost = 1f;
BooleanWeight(BooleanQuery query, IndexSearcher searcher, boolean needsScores, boolean disableCoord) throws IOException {
super(query);
@@ -106,8 +105,6 @@ final class BooleanWeight extends Weight
i += 1;
}
- sum *= boost * boost; // boost each sub-weight
-
return sum ;
}
@@ -129,7 +126,6 @@ final class BooleanWeight extends Weight
@Override
public void normalize(float norm, float boost) {
- this.boost = boost;
for (Weight w : weights) {
// normalize all clauses, (even if non-scoring in case of side affects)
w.normalize(norm, boost);
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxQuery.java?rev=1701742&r1=1701741&r2=1701742&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxQuery.java Tue Sep 8 08:24:16 2015
@@ -118,7 +118,6 @@ public final class DisjunctionMaxQuery e
/** The Weights for our subqueries, in 1-1 correspondence with disjuncts */
protected final ArrayList<Weight> weights = new ArrayList<>(); // The Weight's for our subqueries, in 1-1 correspondence with disjuncts
private final boolean needsScores;
- private float boost;
/** Construct the Weight for this Query searched by searcher. Recursively construct subquery weights. */
public DisjunctionMaxWeight(IndexSearcher searcher, boolean needsScores) throws IOException {
@@ -127,7 +126,6 @@ public final class DisjunctionMaxQuery e
weights.add(searcher.createWeight(disjunctQuery, needsScores));
}
this.needsScores = needsScores;
- this.boost = 1f;
}
@Override
@@ -147,13 +145,12 @@ public final class DisjunctionMaxQuery e
max = Math.max(max, sub);
}
- return (((sum - max) * tieBreakerMultiplier * tieBreakerMultiplier) + max) * boost * boost;
+ return (((sum - max) * tieBreakerMultiplier * tieBreakerMultiplier) + max);
}
/** Apply the computed normalization factor to our subqueries */
@Override
public void normalize(float norm, float boost) {
- this.boost = boost;
for (Weight wt : weights) {
wt.normalize(norm, boost);
}
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSimpleSearchEquivalence.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSimpleSearchEquivalence.java?rev=1701742&r1=1701741&r2=1701742&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSimpleSearchEquivalence.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSimpleSearchEquivalence.java Tue Sep 8 08:24:16 2015
@@ -214,4 +214,20 @@ public class TestSimpleSearchEquivalence
assertSameScores(q1, q2);
}
+
+ public void testBooleanBoostPropagation() throws Exception {
+ float boost1 = random().nextFloat();
+ Query tq = new BoostQuery(new TermQuery(randomTerm()), boost1);
+
+ float boost2 = random().nextFloat();
+ // Applying boost2 over the term or boolean query should have the same effect
+ Query q1 = new BoostQuery(tq, boost2);
+ Query q2 = new BooleanQuery.Builder()
+ .add(tq, Occur.MUST)
+ .add(tq, Occur.FILTER)
+ .build();
+ q2 = new BoostQuery(q2, boost2);
+
+ assertSameScores(q1, q2);
+ }
}