You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by nk...@apache.org on 2016/02/08 23:36:23 UTC
[48/50] [abbrv] lucene-solr git commit: SOLR-8418: Adapt to changes
in LUCENE-6590 for use of boosts with MLTHandler and Simple/CloudMLTQParser
SOLR-8418: Adapt to changes in LUCENE-6590 for use of boosts with MLTHandler and Simple/CloudMLTQParser
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_5_4@1725144 13f79535-47bb-0310-9956-ffa450edef68
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/340dc9ca
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/340dc9ca
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/340dc9ca
Branch: refs/heads/branch_5_4
Commit: 340dc9ca5039244b2a78e284dd707e4466b3f3d4
Parents: 7b42653
Author: Ramkumar Aiyengar <an...@apache.org>
Authored: Sun Jan 17 22:38:58 2016 +0000
Committer: Ramkumar Aiyengar <an...@apache.org>
Committed: Sun Jan 17 22:38:58 2016 +0000
----------------------------------------------------------------------
solr/CHANGES.txt | 2 ++
.../solr/handler/MoreLikeThisHandler.java | 22 ++++++++++----------
.../apache/solr/search/mlt/CloudMLTQParser.java | 16 +++++++-------
.../solr/search/mlt/SimpleMLTQParser.java | 14 +++++++------
.../solr/handler/MoreLikeThisHandlerTest.java | 6 ++++++
.../solr/search/mlt/CloudMLTQParserTest.java | 12 +++++++++++
.../solr/search/mlt/SimpleMLTQParserTest.java | 15 +++++++++++++
7 files changed, 63 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/340dc9ca/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 1e10117..5e98349 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -32,6 +32,8 @@ Bug Fixes
when the remaining non-excluded filters were all uncached. This bug was first introduced in 5.3.0
(Andreas Müller, Vasiliy Bout, Erick Erickson, Shawn Heisey, Hossman, yonik)
+* SOLR-8418: Adapt to changes in LUCENE-6590 for use of boosts with MLTHandler and
+ Simple/CloudMLTQParser (Jens Wille, Ramkumar Aiyengar)
New Features
----------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/340dc9ca/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java b/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
index d2dd794..903863c 100644
--- a/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
@@ -37,11 +37,7 @@ import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.ContentStream;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
-import org.apache.solr.core.SolrCore;
import org.apache.solr.handler.component.FacetComponent;
-import org.apache.solr.handler.component.SpatialHeatmapFacets;
-import org.apache.solr.handler.component.DateFacetProcessor;
-import org.apache.solr.handler.component.RangeFacetProcessor;
import org.apache.solr.request.SimpleFacets;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
@@ -246,10 +242,10 @@ public class MoreLikeThisHandler extends RequestHandlerBase
if (dbg == false) {//if it's true, we are doing everything anyway.
String[] dbgParams = req.getParams().getParams(CommonParams.DEBUG);
if (dbgParams != null) {
- for (int i = 0; i < dbgParams.length; i++) {
- if (dbgParams[i].equals(CommonParams.QUERY)) {
+ for (String dbgParam : dbgParams) {
+ if (dbgParam.equals(CommonParams.QUERY)) {
dbgQuery = true;
- } else if (dbgParams[i].equals(CommonParams.RESULTS)) {
+ } else if (dbgParam.equals(CommonParams.RESULTS)) {
dbgResults = true;
}
}
@@ -381,10 +377,14 @@ public class MoreLikeThisHandler extends RequestHandlerBase
newQ.setMinimumNumberShouldMatch(boostedQuery.getMinimumNumberShouldMatch());
for (BooleanClause clause : boostedQuery) {
Query q = clause.getQuery();
- Float b = this.boostFields.get(((TermQuery) q).getTerm().field());
- if (b != null) {
- q = new BoostQuery(q, b);
+ float originalBoost = 1f;
+ if (q instanceof BoostQuery) {
+ BoostQuery bq = (BoostQuery) q;
+ q = bq.getQuery();
+ originalBoost = bq.getBoost();
}
+ Float fieldBoost = boostFields.get(((TermQuery) q).getTerm().field());
+ q = ((fieldBoost != null) ? new BoostQuery(q, fieldBoost * originalBoost) : clause.getQuery());
newQ.add(q, clause.getOccur());
}
boostedQuery = newQ.build();
@@ -485,7 +485,7 @@ public class MoreLikeThisHandler extends RequestHandlerBase
for( BooleanClause o : clauses ) {
Query q = o.getQuery();
float boost = 1f;
- if (query instanceof BoostQuery) {
+ if (q instanceof BoostQuery) {
BoostQuery bq = (BoostQuery) q;
q = bq.getQuery();
boost = bq.getBoost();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/340dc9ca/solr/core/src/java/org/apache/solr/search/mlt/CloudMLTQParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/mlt/CloudMLTQParser.java b/solr/core/src/java/org/apache/solr/search/mlt/CloudMLTQParser.java
index 81aa5c2..2ee201e 100644
--- a/solr/core/src/java/org/apache/solr/search/mlt/CloudMLTQParser.java
+++ b/solr/core/src/java/org/apache/solr/search/mlt/CloudMLTQParser.java
@@ -98,8 +98,8 @@ public class CloudMLTQParser extends QParser {
mlt.setAnalyzer(req.getSchema().getIndexAnalyzer());
- Map<String, Collection<Object>> filteredDocument = new HashMap();
- ArrayList<String> fieldNames = new ArrayList();
+ Map<String, Collection<Object>> filteredDocument = new HashMap<>();
+ ArrayList<String> fieldNames = new ArrayList<>();
if (qf != null) {
for (String fieldName : qf) {
@@ -146,12 +146,14 @@ public class CloudMLTQParser extends QParser {
for (BooleanClause clause : boostedMLTQuery) {
Query q = clause.getQuery();
- Float b = boostFields.get(((TermQuery) q).getTerm().field());
-
- if (b != null) {
- q = new BoostQuery(q, b);
+ float originalBoost = 1f;
+ if (q instanceof BoostQuery) {
+ BoostQuery bq = (BoostQuery) q;
+ q = bq.getQuery();
+ originalBoost = bq.getBoost();
}
-
+ Float fieldBoost = boostFields.get(((TermQuery) q).getTerm().field());
+ q = ((fieldBoost != null) ? new BoostQuery(q, fieldBoost * originalBoost) : clause.getQuery());
newQ.add(q, clause.getOccur());
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/340dc9ca/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java b/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java
index dbffef4..6def80a9 100644
--- a/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java
+++ b/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java
@@ -97,7 +97,7 @@ public class SimpleMLTQParser extends QParser {
boostFields = SolrPluginUtils.parseFieldBoosts(qf);
}
- ArrayList<String> fields = new ArrayList();
+ ArrayList<String> fields = new ArrayList<>();
if (qf != null) {
for (String fieldName : qf) {
@@ -136,12 +136,14 @@ public class SimpleMLTQParser extends QParser {
for (BooleanClause clause : boostedMLTQuery) {
Query q = clause.getQuery();
- Float b = boostFields.get(((TermQuery) q).getTerm().field());
-
- if (b != null) {
- q = new BoostQuery(q, b);
+ float originalBoost = 1f;
+ if (q instanceof BoostQuery) {
+ BoostQuery bq = (BoostQuery) q;
+ q = bq.getQuery();
+ originalBoost = bq.getBoost();
}
-
+ Float fieldBoost = boostFields.get(((TermQuery) q).getTerm().field());
+ q = ((fieldBoost != null) ? new BoostQuery(q, fieldBoost * originalBoost) : clause.getQuery());
newQ.add(q, clause.getOccur());
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/340dc9ca/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java
index 2790cb6..794d82c 100644
--- a/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java
@@ -89,6 +89,12 @@ public class MoreLikeThisHandlerTest extends SolrTestCaseJ4 {
assertQ("morelikethis - tom cruise",mltreq
,"//result/doc[1]/int[@name='id'][.='46']"
,"//result/doc[2]/int[@name='id'][.='43']");
+
+ params.set(MoreLikeThisParams.BOOST, "true");
+ mltreq.close(); mltreq = new LocalSolrQueryRequest( core, params);
+ assertQ("morelikethis - tom cruise",mltreq
+ ,"//result/doc[1]/int[@name='id'][.='46']"
+ ,"//result/doc[2]/int[@name='id'][.='43']");
params.set(CommonParams.Q, "id:44");
mltreq.close(); mltreq = new LocalSolrQueryRequest(h.getCore(), params);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/340dc9ca/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java b/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java
index bbdfcc4..c19aaf9 100644
--- a/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java
+++ b/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java
@@ -111,6 +111,18 @@ public class CloudMLTQParserTest extends AbstractFullDistribZkTestBase {
actualIds[i++] = Integer.valueOf(String.valueOf(solrDocument.getFieldValue("id")));
}
assertArrayEquals(expectedIds, actualIds);
+
+ params = new ModifiableSolrParams();
+ params.set(CommonParams.Q, "{!mlt qf=lowerfilt boost=true}17");
+ queryResponse = queryServer(params);
+ solrDocuments = queryResponse.getResults();
+ expectedIds = new int[]{7, 13, 14, 15, 16, 20, 22, 24, 32, 9};
+ actualIds = new int[solrDocuments.size()];
+ i = 0;
+ for (SolrDocument solrDocument : solrDocuments) {
+ actualIds[i++] = Integer.valueOf(String.valueOf(solrDocument.getFieldValue("id")));
+ }
+ assertArrayEquals(expectedIds, actualIds);
params = new ModifiableSolrParams();
params.set(CommonParams.Q, "{!mlt qf=lowerfilt mindf=0 mintf=1}3");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/340dc9ca/solr/core/src/test/org/apache/solr/search/mlt/SimpleMLTQParserTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/mlt/SimpleMLTQParserTest.java b/solr/core/src/test/org/apache/solr/search/mlt/SimpleMLTQParserTest.java
index fb33ef5..fbd63e4 100644
--- a/solr/core/src/test/org/apache/solr/search/mlt/SimpleMLTQParserTest.java
+++ b/solr/core/src/test/org/apache/solr/search/mlt/SimpleMLTQParserTest.java
@@ -98,6 +98,21 @@ public class SimpleMLTQParserTest extends SolrTestCaseJ4 {
);
params = new ModifiableSolrParams();
+ params.set(CommonParams.Q, "{!mlt qf=lowerfilt boost=true}17");
+ assertQ(req(params),
+ "//result/doc[1]/int[@name='id'][.='13']",
+ "//result/doc[2]/int[@name='id'][.='14']",
+ "//result/doc[3]/int[@name='id'][.='15']",
+ "//result/doc[4]/int[@name='id'][.='16']",
+ "//result/doc[5]/int[@name='id'][.='18']",
+ "//result/doc[6]/int[@name='id'][.='19']",
+ "//result/doc[7]/int[@name='id'][.='20']",
+ "//result/doc[8]/int[@name='id'][.='21']",
+ "//result/doc[9]/int[@name='id'][.='22']",
+ "//result/doc[10]/int[@name='id'][.='23']"
+ );
+
+ params = new ModifiableSolrParams();
params.set(CommonParams.Q, "{!mlt qf=lowerfilt mindf=0 mintf=1}26");
params.set(CommonParams.DEBUG, "true");
assertQ(req(params),