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/10 16:24:39 UTC
svn commit: r1702263 - in
/lucene/dev/branches/branch_5x/lucene/highlighter/src:
java/org/apache/lucene/search/vectorhighlight/FieldQuery.java
test/org/apache/lucene/search/vectorhighlight/FieldQueryTest.java
Author: jpountz
Date: Thu Sep 10 14:24:38 2015
New Revision: 1702263
URL: http://svn.apache.org/r1702263
Log:
LUCENE-6590: Make sure the fast-vector-highlighter also handles boosts set via Query.setBoost.
Modified:
lucene/dev/branches/branch_5x/lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldQuery.java
lucene/dev/branches/branch_5x/lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/FieldQueryTest.java
Modified: lucene/dev/branches/branch_5x/lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldQuery.java?rev=1702263&r1=1702262&r2=1702263&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldQuery.java (original)
+++ lucene/dev/branches/branch_5x/lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldQuery.java Thu Sep 10 14:24:38 2015
@@ -96,10 +96,18 @@ public class FieldQuery {
}
void flatten( Query sourceQuery, IndexReader reader, Collection<Query> flatQueries, float boost ) throws IOException{
- while (sourceQuery instanceof BoostQuery) {
- BoostQuery bq = (BoostQuery) sourceQuery;
- sourceQuery = bq.getQuery();
- boost *= bq.getBoost();
+ while (true) {
+ if (sourceQuery.getBoost() != 1f) {
+ boost *= sourceQuery.getBoost();
+ sourceQuery = sourceQuery.clone();
+ sourceQuery.setBoost(1f);
+ } else if (sourceQuery instanceof BoostQuery) {
+ BoostQuery bq = (BoostQuery) sourceQuery;
+ sourceQuery = bq.getQuery();
+ boost *= bq.getBoost();
+ } else {
+ break;
+ }
}
if( sourceQuery instanceof BooleanQuery ){
BooleanQuery bq = (BooleanQuery)sourceQuery;
Modified: lucene/dev/branches/branch_5x/lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/FieldQueryTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/FieldQueryTest.java?rev=1702263&r1=1702262&r2=1702263&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/FieldQueryTest.java (original)
+++ lucene/dev/branches/branch_5x/lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/FieldQueryTest.java Thu Sep 10 14:24:38 2015
@@ -53,6 +53,20 @@ public class FieldQueryTest extends Abst
boost = usually() ? 1F : random().nextFloat() * 10000;
}
+ public void testHandlesDeprecatedBoosts() throws Exception {
+ Query q1 = new TermQuery(new Term("foo", "bar"));
+ q1.setBoost(5);
+ Query q2 = new BoostQuery(new TermQuery(new Term("foo", "bar")), 5);
+
+ FieldQuery fq1 = new FieldQuery(q1, true, true);
+ FieldQuery fq2 = new FieldQuery(q2, true, true);
+ Set<Query> flatQueries1 = new HashSet<>();
+ Set<Query> flatQueries2 = new HashSet<>();
+ fq1.flatten(q1, reader, flatQueries1, 1f);
+ fq1.flatten(q2, reader, flatQueries2, 1f);
+ assertEquals(flatQueries1, flatQueries2);
+ }
+
public void testFlattenBoolean() throws Exception {
initBoost();
BooleanQuery.Builder booleanQueryB = new BooleanQuery.Builder();