You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by th...@apache.org on 2015/02/13 22:39:58 UTC

svn commit: r1659694 - in /lucene/dev/trunk/solr: CHANGES.txt core/src/java/org/apache/solr/handler/component/SearchHandler.java core/src/test/org/apache/solr/handler/component/TermVectorComponentDistributedTest.java

Author: thelabdude
Date: Fri Feb 13 21:39:57 2015
New Revision: 1659694

URL: http://svn.apache.org/r1659694
Log:
SOLR-6311: SearchHandler should use path when no qt or shard.qt parameter is specified

Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentDistributedTest.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1659694&r1=1659693&r2=1659694&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Fri Feb 13 21:39:57 2015
@@ -155,6 +155,10 @@ Other Changes
 
 * SOLR-7103: Remove unused method params in faceting code. (shalin)
 
+* SOLR-6311: When performing distributed queries, SearchHandler should use path
+  when no qt or shard.qt parameter is specified; fix also resolves SOLR-4479.
+  (Steve Molloy, Timothy Potter)
+
 ==================  5.0.0 ==================
 
 Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java?rev=1659694&r1=1659693&r2=1659694&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java Fri Feb 13 21:39:57 2015
@@ -18,6 +18,7 @@
 package org.apache.solr.handler.component;
 
 import org.apache.lucene.index.ExitableDirectoryReader;
+import org.apache.lucene.util.Version;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.common.SolrDocumentList;
 import org.apache.solr.common.SolrException;
@@ -306,10 +307,21 @@ public class SearchHandler extends Reque
                 params.set("NOW", Long.toString(rb.requestInfo.getNOW().getTime()));
               }
               String shardQt = params.get(ShardParams.SHARDS_QT);
-              if (shardQt == null) {
-                params.remove(CommonParams.QT);
-              } else {
+              if (shardQt != null) {
                 params.set(CommonParams.QT, shardQt);
+              } else {
+                // for distributed queries that don't include shards.qt, use the original path
+                // as the default but operators need to update their luceneMatchVersion to enable
+                // this behavior since it did not work this way prior to 5.1
+                if (req.getCore().getSolrConfig().luceneMatchVersion.onOrAfter(Version.LUCENE_5_1_0)) {
+                  String reqPath = (String)req.getContext().get("path");
+                  if (!"/select".equals(reqPath)) {
+                    params.set(CommonParams.QT, reqPath);
+                  } // else if path is /select, then the qt gets passed thru if set
+                } else {
+                  // this is the pre-5.1 behavior, which translates to sending the shard request to /select
+                  params.remove(CommonParams.QT);
+                }
               }
               shardHandler1.submit(sreq, shard, params);
             }

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentDistributedTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentDistributedTest.java?rev=1659694&r1=1659693&r2=1659694&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentDistributedTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentDistributedTest.java Fri Feb 13 21:39:57 2015
@@ -123,19 +123,16 @@ public class TermVectorComponentDistribu
     final String tv = "tvrh";
 
     for (String q : new String[] {"id:0", "id:7", "id:[3 TO 6]", "*:*"}) {
-
       query("sort","id desc",
             "qt",tv, 
-            "shards.qt",tv,
-            "q", q, 
+            "q", q,
             TermVectorComponent.COMPONENT_NAME, "true", 
             TermVectorParams.TF, "true");
 
       // tv.fl diff from fl
       query("sort", "id asc",
             "qt",tv, 
-            "shards.qt",tv,
-            "q", q, 
+            "q", q,
             "fl", "*,score",
             "tv.fl", "test_basictv,test_offtv",
             TermVectorComponent.COMPONENT_NAME, "true", 
@@ -144,8 +141,7 @@ public class TermVectorComponentDistribu
       // multi-valued tv.fl 
       query("sort", "id asc",
             "qt",tv, 
-            "shards.qt",tv,
-            "q", q, 
+            "q", q,
             "fl", "*,score",
             "tv.fl", "test_basictv",
             "tv.fl","test_offtv",
@@ -154,16 +150,14 @@ public class TermVectorComponentDistribu
       // re-use fl glob
       query("sort", "id desc",
             "qt",tv, 
-            "shards.qt",tv,
-            "q", q, 
+            "q", q,
             "fl", "*,score",
             TermVectorComponent.COMPONENT_NAME, "true", 
             TermVectorParams.TF, "true");
       // re-use fl, ignore things we can't handle
       query("sort", "id desc",
             "qt",tv, 
-            "shards.qt",tv,
-            "q", q, 
+            "q", q,
             "fl", "score,test_basictv,[docid],test_postv,val:sum(3,4)",
             TermVectorComponent.COMPONENT_NAME, "true", 
             TermVectorParams.TF, "true");
@@ -171,8 +165,7 @@ public class TermVectorComponentDistribu
       // re-use (multi-valued) fl, ignore things we can't handle
       query("sort", "id desc",
             "qt",tv, 
-            "shards.qt",tv,
-            "q", q, 
+            "q", q,
             "fl", "score,test_basictv",
             "fl", "[docid],test_postv,val:sum(3,4)",
             TermVectorComponent.COMPONENT_NAME, "true", 
@@ -182,8 +175,7 @@ public class TermVectorComponentDistribu
     
       query("sort", "id asc",
             "qt",tv, 
-            "shards.qt",tv,
-            "q", q, 
+            "q", q,
             TermVectorComponent.COMPONENT_NAME, "true",
             TermVectorParams.TF, "true", 
             TermVectorParams.DF, "true", 
@@ -193,8 +185,7 @@ public class TermVectorComponentDistribu
     
       query("sort", "id desc",
             "qt",tv, 
-            "shards.qt",tv,
-            "q", q, 
+            "q", q,
             TermVectorComponent.COMPONENT_NAME, "true",
             TermVectorParams.ALL, "true");
     
@@ -202,8 +193,7 @@ public class TermVectorComponentDistribu
 
       query("sort", "id desc",
             "qt",tv, 
-            "shards.qt",tv,
-            "q", q, 
+            "q", q,
             TermVectorComponent.COMPONENT_NAME, "true",
             TermVectorParams.TF, "true", 
             TermVectorParams.DF, "true",