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),