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]";