You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ja...@apache.org on 2013/05/28 14:15:37 UTC

svn commit: r1486901 - in /lucene/dev/branches/branch_4x: ./ solr/ solr/core/ solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java

Author: janhoy
Date: Tue May 28 12:15:37 2013
New Revision: 1486901

URL: http://svn.apache.org/r1486901
Log:
SOLR-4785: Fixed bug with missing boost on toplevel query (merge from trunk)

Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/solr/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java?rev=1486901&r1=1486900&r2=1486901&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java Tue May 28 12:15:37 2013
@@ -78,6 +78,7 @@ public class MaxScoreQParser extends Luc
     for(BooleanClause c : prohibOrReq) {
       newq.add(c);
     }
+    newq.setBoost(obq.getBoost());
     return newq;
   }
 }
\ No newline at end of file

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java?rev=1486901&r1=1486900&r2=1486901&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java Tue May 28 12:15:37 2013
@@ -26,6 +26,7 @@ import org.junit.Test;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
 
 public class TestMaxScoreQueryParser extends AbstractSolrTestCase {
   Query q;
@@ -41,6 +42,9 @@ public class TestMaxScoreQueryParser ext
     q = parse("foo");
     assertTrue(q instanceof TermQuery);
 
+    q = parse("foo^3.0");
+    assertTrue(q instanceof TermQuery);
+
     q = parse("price:[0 TO 10]");
     assertTrue(q instanceof NumericRangeQuery);
   }
@@ -92,6 +96,38 @@ public class TestMaxScoreQueryParser ext
     assertEquals(0.5, ((DisjunctionMaxQuery) clauses[0].getQuery()).getTieBreakerMultiplier(), 1e-15);
   }
 
+  @Test
+  public void testBoost() {
+    // Simple term query
+    q = parse("foo^3.0");
+    assertEquals(3.0, q.getBoost(), 1e-15);
+
+    // Some DMQ and one plain required
+    q = parse("foo^5.0 bar^6.0 +baz^7");
+    clauses = clauses(q);
+    assertEquals(2, clauses.length);
+    assertTrue(clauses[0].getQuery() instanceof DisjunctionMaxQuery);
+    DisjunctionMaxQuery dmq = ((DisjunctionMaxQuery) clauses[0].getQuery());
+    float fooClause = ((BooleanQuery)dmq.getDisjuncts().get(0)).clauses().get(0).getQuery().getBoost();
+    assertEquals(5.0, fooClause, 1e-15);
+    float barClause = ((BooleanQuery)dmq.getDisjuncts().get(1)).clauses().get(0).getQuery().getBoost();
+    assertEquals(6.0, barClause, 1e-15);
+    assertEquals(7.0, clauses[1].getQuery().getBoost(), 1e-15);
+    assertEquals(1.0, q.getBoost(), 1e-15);
+
+    // Grouped with parens on top level
+    q = parse("(foo^2.0 bar)^3.0");
+    clauses = clauses(q);
+    assertEquals(1, clauses.length);
+    assertTrue(clauses[0].getQuery() instanceof DisjunctionMaxQuery);
+    dmq = ((DisjunctionMaxQuery) clauses[0].getQuery());
+    fooClause = ((BooleanQuery)dmq.getDisjuncts().get(0)).clauses().get(0).getQuery().getBoost();
+    assertEquals(2.0, fooClause, 1e-15);
+    barClause = ((BooleanQuery)dmq.getDisjuncts().get(1)).clauses().get(0).getQuery().getBoost();
+    assertEquals(1.0, barClause, 1e-15);
+    assertEquals(3.0, q.getBoost(), 1e-15);
+  }
+
   //
   // Helper methods
   //