You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2015/06/11 16:35:48 UTC

svn commit: r1684904 - in /lucene/dev/trunk/solr: CHANGES.txt core/src/java/org/apache/solr/search/ReRankQParserPlugin.java core/src/test/org/apache/solr/search/TestReRankQParserPlugin.java

Author: shalin
Date: Thu Jun 11 14:35:47 2015
New Revision: 1684904

URL: http://svn.apache.org/r1684904
Log:
SOLR-6835: ReRankQueryParserPlugin checks now whether the reRankQuery parameter is present and not empty

Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestReRankQParserPlugin.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1684904&r1=1684903&r2=1684904&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Thu Jun 11 14:35:47 2015
@@ -121,6 +121,9 @@ Bug Fixes
 * SOLR-7108: Change default query used by /admin/ping to not rely on other parameters such as query parser or
   default field. (ehatcher)
 
+* SOLR-6835: ReRankQueryParserPlugin checks now whether the reRankQuery parameter is present and not empty.
+  (帅广应, Marius Grama via shalin)
+
 Optimizations
 ----------------------
 * SOLR-7660: Avoid redundant 'exists' calls made to ZK while fetching cluster state updates. (shalin)

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java?rev=1684904&r1=1684903&r2=1684904&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java Thu Jun 11 14:35:47 2015
@@ -78,8 +78,10 @@ public class ReRankQParserPlugin extends
     }
 
     public Query parse() throws SyntaxError {
-
       String reRankQueryString = localParams.get("reRankQuery");
+      if (reRankQueryString == null || reRankQueryString.trim().length() == 0)  {
+        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "reRankQuery parameter is mandatory");
+      }
       QParser reRankParser = QParser.getParser(reRankQueryString, null, req);
       Query reRankQuery = reRankParser.parse();
 

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestReRankQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestReRankQParserPlugin.java?rev=1684904&r1=1684903&r2=1684904&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestReRankQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestReRankQParserPlugin.java Thu Jun 11 14:35:47 2015
@@ -23,11 +23,6 @@ import org.apache.solr.common.params.Mod
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
-import com.carrotsearch.hppc.IntOpenHashSet;
-
-import java.io.IOException;
-import java.util.*;
-import java.util.Random;
 
 public class TestReRankQParserPlugin extends SolrTestCaseJ4 {
 
@@ -517,9 +512,32 @@ public class TestReRankQParserPlugin ext
         "//result/doc[1]/float[@name='id'][.='1.0']", //Elevated
         "//result/doc[2]/float[@name='id'][.='4.0']", //Elevated
         "//result/doc[3]/float[@name='id'][.='8.0']"); //Boosted during rerank.
+  }
 
+  @Test
+  public void testRerankQueryParsingShouldFailWithoutMandatoryReRankQueryParameter() throws Exception {
+    assertU(delQ("*:*"));
+    assertU(commit());
 
+    String[] doc = {"id", "1", "term_s", "YYYY", "group_s", "group1", "test_ti", "5", "test_tl", "10", "test_tf", "2000"};
+    assertU(adoc(doc));
+    assertU(commit());
+    String[] doc1 = {"id", "2", "term_s", "YYYY", "group_s", "group1", "test_ti", "50", "test_tl", "100", "test_tf", "200"};
+    assertU(adoc(doc1));
+    assertU(commit());
 
-  }
+    ModifiableSolrParams params = new ModifiableSolrParams();
+
+    params.add("rq", "{!rerank reRankQuery=$rqq reRankDocs=200}");
+    params.add("q", "term_s:YYYY");
+    params.add("start", "0");
+    params.add("rows", "2");
 
+    try {
+      h.query(req(params));
+      fail("A syntax error should be thrown when reRankQuery parameter is not specified");
+    } catch (SolrException e) {
+      assertTrue(e.code() == SolrException.ErrorCode.BAD_REQUEST.code);
+    }
+  }
 }