You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jd...@apache.org on 2012/03/27 19:16:10 UTC

svn commit: r1305908 - in /lucene/dev/trunk/solr: CHANGES.txt core/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java

Author: jdyer
Date: Tue Mar 27 17:16:10 2012
New Revision: 1305908

URL: http://svn.apache.org/viewvc?rev=1305908&view=rev
Log:
SOLR-3278: Negative boost support to the Extended Dismax Query Parser Boost Query

Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1305908&r1=1305907&r2=1305908&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Tue Mar 27 17:16:10 2012
@@ -250,6 +250,9 @@ New Features
  the same behaviour as solr 3.5, favouring throughput over latency. More
  information can be found on the wiki (http://wiki.apache.org/solr/SolrConfigXml) (Greg Bowyer)
 
+* SOLR-3278: Negative boost support to the Extended Dismax Query Parser Boost Query (bq).
+  (James Dyer)
+
 Optimizations
 ----------------------
 

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java?rev=1305908&r1=1305907&r2=1305908&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java Tue Mar 27 17:16:10 2012
@@ -344,13 +344,17 @@ class ExtendedDismaxQParser extends QPar
 
     /* * * Boosting Query * * */
     boostParams = solrParams.getParams(DisMaxParams.BQ);
-    //List<Query> boostQueries = U.parseQueryStrings(req, boostParams);
     boostQueries=null;
     if (boostParams!=null && boostParams.length>0) {
+      Map<String,Float> bqBoosts = SolrPluginUtils.parseFieldBoosts(boostParams);
       boostQueries = new ArrayList<Query>();
-      for (String qs : boostParams) {
-        if (qs.trim().length()==0) continue;
-        Query q = subQuery(qs, null).getQuery();
+      for (Map.Entry<String,Float> bqs : bqBoosts.entrySet()) {
+        if (bqs.getKey().trim().length()==0) continue;
+        Query q = subQuery(bqs.getKey(), null).getQuery();
+        Float b = bqs.getValue();
+        if(b!=null) {
+          q.setBoost(b);
+        }
         boostQueries.add(q);
       }
     }

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java?rev=1305908&r1=1305907&r2=1305908&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java Tue Mar 27 17:16:10 2012
@@ -53,8 +53,11 @@ public class TestExtendedDismaxParser ex
             "text", "line up and fly directly at the enemy death cannons, clogging them with wreckage!"));
     assertU(adoc("id", "48", "text_sw", "this has gigabyte potential", "foo_i","100"));
     assertU(adoc("id", "49", "text_sw", "start the big apple end", "foo_i","-100"));
-    assertU(adoc("id", "50", "text_sw", "start new big city end"));
+    assertU(adoc("id", "50", "text_sw", "start new big city end"));    
     assertU(adoc("id", "51", "store",   "12.34,-56.78"));
+    assertU(adoc("id", "52", "text_sw", "tekna theou klethomen"));
+    assertU(adoc("id", "53", "text_sw", "nun tekna theou esmen"));
+    assertU(adoc("id", "54", "text_sw", "phanera estin ta tekna tou theou"));
     assertU(commit());
   }
   @Override
@@ -63,7 +66,7 @@ public class TestExtendedDismaxParser ex
     // the super classes version
     super.tearDown();
   }
-  
+    
   // test the edismax query parser based on the dismax parser
   public void testFocusQueryParser() {
     String allq = "id:[42 TO 51]";
@@ -294,6 +297,22 @@ public class TestExtendedDismaxParser ex
     ***/
 
   }
+  
+  public void testBoostQuery() {
+    assertQ(
+        req("q", "tekna", "qf", "text_sw", "defType", "edismax", "bq", "id:54^100", "bq", "id:53^10", "fq", "id:[52 TO 54]", "fl", "id,score"), 
+        "//doc[1]/str[@name='id'][.='54']",
+        "//doc[2]/str[@name='id'][.='53']",
+        "//doc[3]/str[@name='id'][.='52']"
+     );
+    
+    assertQ(
+        req("q", "tekna", "qf", "text_sw", "defType", "edismax", "bq", "id:54^-100", "bq", "id:53^10", "bq", "id:52", "fq", "id:[52 TO 54]", "fl", "id,score"), 
+        "//doc[1]/str[@name='id'][.='53']",
+        "//doc[2]/str[@name='id'][.='52']",
+        "//doc[3]/str[@name='id'][.='54']"
+     );
+  }
 
   public void testUserFields() {
     String oner = "*[count(//doc)=1]";