You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by an...@apache.org on 2016/01/01 11:39:15 UTC
svn commit: r1722488 - in /lucene/dev/branches/branch_5x: ./ solr/
solr/core/ solr/core/src/java/org/apache/solr/handler/
solr/core/src/java/org/apache/solr/search/
solr/core/src/java/org/apache/solr/search/mlt/
solr/core/src/test/org/apache/solr/handl...
Author: andyetitmoves
Date: Fri Jan 1 10:39:15 2016
New Revision: 1722488
URL: http://svn.apache.org/viewvc?rev=1722488&view=rev
Log:
SOLR-8418: Adapt to changes in LUCENE-6590 for use of boosts with MLTHandler and Simple/CloudMLTQParser
Modified:
lucene/dev/branches/branch_5x/ (props changed)
lucene/dev/branches/branch_5x/solr/ (props changed)
lucene/dev/branches/branch_5x/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_5x/solr/core/ (props changed)
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ (props changed)
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/mlt/CloudMLTQParser.java
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java
lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java
lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java
lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/mlt/SimpleMLTQParserTest.java
Modified: lucene/dev/branches/branch_5x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/CHANGES.txt?rev=1722488&r1=1722487&r2=1722488&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_5x/solr/CHANGES.txt Fri Jan 1 10:39:15 2016
@@ -130,6 +130,8 @@ Bug Fixes
* SOLR-7462: AIOOBE in RecordingJSONParser (Scott Dawson, noble)
+* SOLR-8418: Adapt to changes in LUCENE-6590 for use of boosts with MLTHandler and
+ Simple/CloudMLTQParser (Jens Wille, Ramkumar Aiyengar)
Other Changes
----------------------
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java?rev=1722488&r1=1722487&r2=1722488&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java Fri Jan 1 10:39:15 2016
@@ -37,11 +37,7 @@ import org.apache.solr.common.params.Sol
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;
@@ -148,7 +144,7 @@ public class MoreLikeThisHandler extends
// Hold on to the interesting terms if relevant
TermStyle termStyle = TermStyle.get(params.get(MoreLikeThisParams.INTERESTING_TERMS));
List<InterestingTerm> interesting = (termStyle == TermStyle.NONE)
- ? null : new ArrayList<InterestingTerm>(mlt.mlt.getMaxQueryTerms());
+ ? null : new ArrayList<>(mlt.mlt.getMaxQueryTerms());
DocListAndSet mltDocs = null;
@@ -246,10 +242,10 @@ public class MoreLikeThisHandler extends
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
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
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();
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/mlt/CloudMLTQParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/mlt/CloudMLTQParser.java?rev=1722488&r1=1722487&r2=1722488&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/mlt/CloudMLTQParser.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/mlt/CloudMLTQParser.java Fri Jan 1 10:39:15 2016
@@ -98,8 +98,8 @@ public class CloudMLTQParser extends QPa
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 QPa
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());
}
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java?rev=1722488&r1=1722487&r2=1722488&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java Fri Jan 1 10:39:15 2016
@@ -97,7 +97,7 @@ public class SimpleMLTQParser extends QP
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 QP
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());
}
Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java?rev=1722488&r1=1722487&r2=1722488&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java Fri Jan 1 10:39:15 2016
@@ -89,6 +89,12 @@ public class MoreLikeThisHandlerTest ext
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);
Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java?rev=1722488&r1=1722487&r2=1722488&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java Fri Jan 1 10:39:15 2016
@@ -111,6 +111,18 @@ public class CloudMLTQParserTest extends
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");
Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/mlt/SimpleMLTQParserTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/mlt/SimpleMLTQParserTest.java?rev=1722488&r1=1722487&r2=1722488&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/mlt/SimpleMLTQParserTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/mlt/SimpleMLTQParserTest.java Fri Jan 1 10:39:15 2016
@@ -98,6 +98,21 @@ public class SimpleMLTQParserTest extend
);
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),