diff --git a/solr/core/src/test/org/apache/solr/TestDistributedSearch.java b/solr/core/src/test/org/apache/solr/TestDistributedSearch.java index 9c9ceefa6160..bcadbec35836 100644 --- a/solr/core/src/test/org/apache/solr/TestDistributedSearch.java +++ b/solr/core/src/test/org/apache/solr/TestDistributedSearch.java @@ -35,6 +35,7 @@ import org.apache.solr.client.solrj.RemoteSolrException; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrServerException; +import org.apache.solr.client.solrj.request.QueryRequest; import org.apache.solr.client.solrj.request.SolrQuery; import org.apache.solr.client.solrj.response.FacetField; import org.apache.solr.client.solrj.response.FieldStatsInfo; @@ -615,18 +616,13 @@ public void test() throws Exception { // basic spellcheck testing query( - "q", - "toyata", - "fl", - "id,lowerfilt", - "spellcheck", - true, - "spellcheck.q", - "toyata", - "qt", "/spellCheckCompRH_Direct", - "shards.qt", - "/spellCheckCompRH_Direct"); + params( + "q", "toyata", + "fl", "id,lowerfilt", + "spellcheck", "true", + "spellcheck.q", "toyata", + "shards.qt", "/spellCheckCompRH_Direct")); stress = 0; // turn off stress... we want to tex max combos in min time for (int i = 0; i < 25 * RANDOM_MULTIPLIER; i++) { @@ -1592,6 +1588,7 @@ public void test() throws Exception { Thread.sleep(100); queryPartialResults( + "/select", upShards, upClients, "q", @@ -1610,6 +1607,7 @@ public void test() throws Exception { "true"); queryPartialResults( + "/select", upShards, upClients, "q", @@ -1627,6 +1625,7 @@ public void test() throws Exception { // test group query queryPartialResults( + "/select", upShards, upClients, "q", @@ -1651,6 +1650,7 @@ public void test() throws Exception { "true"); queryPartialResults( + "/select", upShards, upClients, "q", @@ -1665,6 +1665,7 @@ public void test() throws Exception { "true"); queryPartialResults( + "/spellCheckCompRH_Direct", upShards, upClients, "q", @@ -1673,8 +1674,6 @@ public void test() throws Exception { "true", "spellcheck.q", "toyata", - "qt", - "/spellCheckCompRH_Direct", "shards.qt", "/spellCheckCompRH_Direct", ShardParams.SHARDS_INFO, @@ -1907,7 +1906,11 @@ protected void checkMinCountsRange(List counts, Object[] pairs } protected void queryPartialResults( - final List upShards, final List upClients, Object... q) throws Exception { + String requestHandler, + final List upShards, + final List upClients, + Object... q) + throws Exception { final ModifiableSolrParams params = new ModifiableSolrParams(); @@ -1916,7 +1919,8 @@ protected void queryPartialResults( } // TODO: look into why passing true causes fails params.set("distrib", "false"); - final QueryResponse controlRsp = controlClient.query(params); + final QueryResponse controlRsp = + new QueryRequest(requestHandler, params).process(controlClient); // if time.allowed is specified then even a control response can return a partialResults header if (params.get(CommonParams.TIME_ALLOWED) == null) { validateControlData(controlRsp); @@ -1928,7 +1932,7 @@ protected void queryPartialResults( if (upClients.size() == 0) { return; } - QueryResponse rsp = queryRandomUpServer(params, upClients); + QueryResponse rsp = queryRandomUpServer(requestHandler, params, upClients); comparePartialResponses(rsp, upShards); @@ -1948,7 +1952,9 @@ public Object call() { int which = r.nextInt(upClients.size()); SolrClient client = upClients.get(which); try { - QueryResponse rsp = client.query(new ModifiableSolrParams(params)); + QueryResponse rsp = + new QueryRequest(requestHandler, new ModifiableSolrParams(params)) + .process(client); if (verifyStress) { comparePartialResponses(rsp, upShards); } @@ -1971,7 +1977,7 @@ public Object call() { } protected QueryResponse queryRandomUpServer( - ModifiableSolrParams params, List upClients) + String requestHandler, ModifiableSolrParams params, List upClients) throws SolrServerException, IOException { // query a random "up" server SolrClient client; @@ -1982,7 +1988,7 @@ protected QueryResponse queryRandomUpServer( client = upClients.get(which); } - return client.query(params); + return new QueryRequest(requestHandler, params).process(client); } protected void comparePartialResponses(QueryResponse rsp, List upShards) { diff --git a/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java b/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java index 1608b90f57db..88be1ee8861b 100644 --- a/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java @@ -1250,7 +1250,7 @@ private void doOptimisticLockingAndUpdating() throws Exception { expected.add(val); } - QueryRequest qr = new QueryRequest(params("qt", "/get", "id", "1000")); + QueryRequest qr = new QueryRequest("/get", params("id", "1000")); for (SolrClient client : clients) { val += 10; NamedList rsp = client.request(qr); diff --git a/solr/core/src/test/org/apache/solr/cloud/DistribCursorPagingTest.java b/solr/core/src/test/org/apache/solr/cloud/DistribCursorPagingTest.java index b70615e499a4..b6452a5e61e4 100644 --- a/solr/core/src/test/org/apache/solr/cloud/DistribCursorPagingTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/DistribCursorPagingTest.java @@ -36,6 +36,7 @@ import org.apache.solr.SolrTestCaseJ4.SuppressSSL; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.request.LukeRequest; +import org.apache.solr.client.solrj.request.QueryRequest; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; @@ -883,11 +884,12 @@ public SentinelIntSet assertFullWalkNoDups(int maxSize, SolrParams params) throw public void assertFullWalkNoDups(SolrParams params, Consumer consumer) throws Exception { + final String requestHandler = params.get(CommonParams.QT, "/select"); String cursorMark = CURSOR_MARK_START; int docsOnThisPage = Integer.MAX_VALUE; while (0 < docsOnThisPage) { final SolrParams p = p(params, CURSOR_MARK_PARAM, cursorMark); - QueryResponse rsp = cloudClient.query(p); + QueryResponse rsp = new QueryRequest(requestHandler, p).process(cloudClient); String nextCursorMark = assertHashNextCursorMark(rsp); SolrDocumentList docs = extractDocList(rsp); docsOnThisPage = docs.size(); diff --git a/solr/core/src/test/org/apache/solr/cloud/DistributedVersionInfoTest.java b/solr/core/src/test/org/apache/solr/cloud/DistributedVersionInfoTest.java index 6df1bea6cfc0..b6b1f977240a 100644 --- a/solr/core/src/test/org/apache/solr/cloud/DistributedVersionInfoTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/DistributedVersionInfoTest.java @@ -359,8 +359,7 @@ protected void sendDoc(int docId) throws Exception { */ protected Long assertDocExists(SolrClient solr, String docId, Long expVers) throws Exception { QueryRequest qr = - new QueryRequest( - params("qt", "/get", "id", docId, "distrib", "false", "fl", "id,_version_")); + new QueryRequest("/get", params("id", docId, "distrib", "false", "fl", "id,_version_")); NamedList rsp = solr.request(qr); SolrDocument doc = (SolrDocument) rsp.get("doc"); String match = JSONTestUtil.matchObj("/id", doc, docId); diff --git a/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java b/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java index 48396c63d312..ee536f12ae16 100644 --- a/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java @@ -553,7 +553,7 @@ protected void assertDocExists(SolrClient solr, String docId) throws Exception { private NamedList realTimeGetDocId(SolrClient solr, String docId) throws SolrServerException, IOException { - QueryRequest qr = new QueryRequest(params("qt", "/get", "id", docId, "distrib", "false")); + QueryRequest qr = new QueryRequest("/get", params("id", docId, "distrib", "false")); return solr.request(qr); } diff --git a/solr/core/src/test/org/apache/solr/cloud/NestedShardedAtomicUpdateTest.java b/solr/core/src/test/org/apache/solr/cloud/NestedShardedAtomicUpdateTest.java index 8aaeda4779aa..455b202f1d38 100644 --- a/solr/core/src/test/org/apache/solr/cloud/NestedShardedAtomicUpdateTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/NestedShardedAtomicUpdateTest.java @@ -27,6 +27,7 @@ import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.CloudSolrClient; import org.apache.solr.client.solrj.request.CollectionAdminRequest; +import org.apache.solr.client.solrj.request.QueryRequest; import org.apache.solr.client.solrj.request.UpdateRequest; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; @@ -130,7 +131,8 @@ public void doRootShardRoutingTest() throws Exception { // assert RTG request respects _route_ param QueryResponse routeRsp = - getRandomSolrClient().query(params("qt", "/get", "id", "2", "_route_", "1")); + new QueryRequest("/get", params("id", "2", "_route_", "1")) + .process(getRandomSolrClient()); SolrDocument results = (SolrDocument) routeRsp.getResponse().get("doc"); assertNotNull( "RTG should find doc because _route_ was set to the root documents' ID", results); @@ -142,7 +144,8 @@ public void doRootShardRoutingTest() throws Exception { // assert all docs are indexed inside the same block QueryResponse rsp = - getRandomSolrClient().query(params("qt", "/get", "id", "1", "fl", "*, [child]")); + new QueryRequest("/get", params("id", "1", "fl", "*, [child]")) + .process(getRandomSolrClient()); SolrDocument val = (SolrDocument) rsp.getResponse().get("doc"); assertEquals("1", val.getFieldValue("id")); @SuppressWarnings({"unchecked"}) @@ -234,7 +237,8 @@ public void doNestedInplaceUpdateTest() throws Exception { if (random().nextBoolean()) { // assert RTG request respects _route_ param QueryResponse routeRsp = - getRandomSolrClient().query(params("qt", "/get", "id", "2", "_route_", "1")); + new QueryRequest("/get", params("id", "2", "_route_", "1")) + .process(getRandomSolrClient()); SolrDocument results = (SolrDocument) routeRsp.getResponse().get("doc"); assertNotNull( "RTG should find doc because _route_ was set to the root documents' ID", results); @@ -249,7 +253,8 @@ public void doNestedInplaceUpdateTest() throws Exception { if (random().nextBoolean()) { // assert all docs are indexed inside the same block QueryResponse rsp = - getRandomSolrClient().query(params("qt", "/get", "id", "1", "fl", "*, [child]")); + new QueryRequest("/get", params("id", "1", "fl", "*, [child]")) + .process(getRandomSolrClient()); SolrDocument val = (SolrDocument) rsp.getResponse().get("doc"); assertEquals("1", val.getFieldValue("id")); assertInplaceCounter(id1InPlaceCounter, val); diff --git a/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java b/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java index 1d705df29fe4..cf12d1d18f5a 100644 --- a/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java @@ -23,6 +23,7 @@ import java.util.Map; import java.util.SequencedMap; import org.apache.solr.client.solrj.SolrClient; +import org.apache.solr.client.solrj.request.QueryRequest; import org.apache.solr.client.solrj.request.UpdateRequest; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.params.ShardParams; @@ -325,7 +326,7 @@ public void doAtomicUpdate() throws Exception { client.add(sdoc("id", "b!doc", "foo_i", map("inc", 1))); expectedVal++; - QueryResponse rsp = client.query(params("qt", "/get", "id", "b!doc")); + QueryResponse rsp = new QueryRequest("/get", params("id", "b!doc")).process(client); Object val = ((Map) rsp.getResponse().get("doc")).get("foo_i"); assertEquals((Integer) expectedVal, val); } diff --git a/solr/core/src/test/org/apache/solr/cloud/TestDistribDocBasedVersion.java b/solr/core/src/test/org/apache/solr/cloud/TestDistribDocBasedVersion.java index e3bcfe7b998f..982a97771459 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestDistribDocBasedVersion.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestDistribDocBasedVersion.java @@ -22,6 +22,7 @@ import java.util.Map; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.request.CollectionAdminRequest; +import org.apache.solr.client.solrj.request.QueryRequest; import org.apache.solr.client.solrj.request.UpdateRequest; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; @@ -336,9 +337,9 @@ void doRTG(String ids, String versions) throws Exception { expectedIds.put(strs.get(i), Long.valueOf(verS.get(i))); } - solrClient.query(params("qt", "/get", "ids", ids)); + new QueryRequest("/get", params("ids", ids)).process(solrClient); - QueryResponse rsp = cloudClient.query(params("qt", "/get", "ids", ids)); + QueryResponse rsp = new QueryRequest("/get", params("ids", ids)).process(cloudClient); Map obtainedIds = new HashMap<>(); for (SolrDocument doc : rsp.getResults()) { obtainedIds.put((String) doc.get("id"), doc.get(vfield)); diff --git a/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java b/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java index 53c9fe0b3ac2..cdbab82b6548 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java @@ -417,7 +417,7 @@ private void assertRTG(final SolrInputDocument[] knownDocs, final int[] docIds) // NOTE: not using SolrClient.getById or getByIds because we want to force choice of "id" vs // "ids" params - final ModifiableSolrParams params = params("qt", "/get"); + final ModifiableSolrParams params = params(); // random fq -- nothing fancy, secondary concern for our test final Integer FQ_MAX = usually() ? null : random().nextInt(); @@ -481,7 +481,7 @@ private void assertRTG(final SolrInputDocument[] knownDocs, final int[] docIds) final Object rsp; // only here for an assertion message - var qr = new QueryRequest(params); + var qr = new QueryRequest("/get", params); final SolrDocumentList docs = switch (wt) { case "javabin" -> { // the most common case diff --git a/solr/core/src/test/org/apache/solr/handler/admin/DaemonStreamApiTest.java b/solr/core/src/test/org/apache/solr/handler/admin/DaemonStreamApiTest.java index b7f82ac616b5..cb0d11714f78 100644 --- a/solr/core/src/test/org/apache/solr/handler/admin/DaemonStreamApiTest.java +++ b/solr/core/src/test/org/apache/solr/handler/admin/DaemonStreamApiTest.java @@ -29,6 +29,7 @@ import org.apache.solr.client.solrj.io.stream.SolrStream; import org.apache.solr.client.solrj.io.stream.TupleStream; import org.apache.solr.client.solrj.request.CollectionAdminRequest; +import org.apache.solr.client.solrj.request.QueryRequest; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.cloud.MiniSolrCloudCluster; import org.apache.solr.common.params.SolrParams; @@ -261,11 +262,12 @@ private void createDaemon(String daemonDef, String errMsg) throws IOException, SolrServerException { SolrClient client = cluster.getSolrClient(); // create a daemon - QueryResponse resp = client.query(CHECKPOINT_COLL, params("expr", daemonDef, "qt", "/stream")); + QueryResponse resp = + new QueryRequest("/stream", params("expr", daemonDef)).process(client, CHECKPOINT_COLL); assertEquals(errMsg, 0, resp.getStatus()); // This should close and replace the current daemon and NOT leak threads. - resp = client.query(CHECKPOINT_COLL, params("expr", daemonDef, "qt", "/stream")); + resp = new QueryRequest("/stream", params("expr", daemonDef)).process(client, CHECKPOINT_COLL); assertEquals(errMsg, 0, resp.getStatus()); } diff --git a/solr/core/src/test/org/apache/solr/handler/component/CombinedQueryComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/CombinedQueryComponentTest.java index 224c59bb1b72..c9d5e9f8a282 100644 --- a/solr/core/src/test/org/apache/solr/handler/component/CombinedQueryComponentTest.java +++ b/solr/core/src/test/org/apache/solr/handler/component/CombinedQueryComponentTest.java @@ -107,14 +107,14 @@ public void testSingleLexicalQuery() throws Exception { prepareIndexDocs(); QueryResponse rsp = query( - CommonParams.JSON, - "{\"queries\":" - + "{\"lexical1\":{\"lucene\":{\"query\":\"title:title test for doc 5\"}}}," - + "\"limit\":5," - + "\"fields\":[\"id\",\"score\",\"title\"]," - + "\"params\":{\"combiner\":true,\"combiner.query\":[\"lexical1\"]}}", - CommonParams.QT, - "/search"); + "/search", + params( + CommonParams.JSON, + "{\"queries\":" + + "{\"lexical1\":{\"lucene\":{\"query\":\"title:title test for doc 5\"}}}," + + "\"limit\":5," + + "\"fields\":[\"id\",\"score\",\"title\"]," + + "\"params\":{\"combiner\":true,\"combiner.query\":[\"lexical1\"]}}")); assertEquals(5, rsp.getResults().size()); } @@ -123,16 +123,16 @@ public void testMultipleLexicalQueryWithDebug() throws Exception { prepareIndexDocs(); QueryResponse rsp = query( - CommonParams.JSON, - "{\"queries\":" - + "{\"lexical1\":{\"lucene\":{\"query\":\"title:title test for doc 1\"}}," - + "\"lexical2\":{\"lucene\":{\"query\":\"text:test text for doc 2\"}}}," - + "\"limit\":5," - + "\"fields\":[\"id\",\"score\",\"title\"]," - + "\"params\":{\"combiner\":true,\"debug\":[\"results\"],\"combiner.query\":[\"lexical1\",\"lexical2\"]," - + "\"rid\": \"test-1\"}}", - CommonParams.QT, - "/search"); + "/search", + params( + CommonParams.JSON, + "{\"queries\":" + + "{\"lexical1\":{\"lucene\":{\"query\":\"title:title test for doc 1\"}}," + + "\"lexical2\":{\"lucene\":{\"query\":\"text:test text for doc 2\"}}}," + + "\"limit\":5," + + "\"fields\":[\"id\",\"score\",\"title\"]," + + "\"params\":{\"combiner\":true,\"debug\":[\"results\"],\"combiner.query\":[\"lexical1\",\"lexical2\"]," + + "\"rid\": \"test-1\"}}")); assertEquals(10, rsp.getResults().getNumFound()); assertTrue(rsp.getDebugMap().containsKey("combinerExplanations")); } @@ -143,15 +143,15 @@ public void testNoResults() throws Exception { prepareIndexDocs(); QueryResponse rsp = query( - CommonParams.JSON, - "{\"queries\":" - + "{\"lexical1\":{\"lucene\":{\"query\":\"title:Solr is the blazing-fast, open source search platform\"}}," - + "\"lexical2\":{\"lucene\":{\"query\":\"text:Solr powers the search\"}}}," - + "\"limit\":5," - + "\"fields\":[\"id\",\"score\",\"title\"]," - + "\"params\":{\"combiner\":true,\"combiner.query\":[\"lexical1\",\"lexical2\"]}}", - CommonParams.QT, - "/search"); + "/search", + params( + CommonParams.JSON, + "{\"queries\":" + + "{\"lexical1\":{\"lucene\":{\"query\":\"title:Solr is the blazing-fast, open source search platform\"}}," + + "\"lexical2\":{\"lucene\":{\"query\":\"text:Solr powers the search\"}}}," + + "\"limit\":5," + + "\"fields\":[\"id\",\"score\",\"title\"]," + + "\"params\":{\"combiner\":true,\"combiner.query\":[\"lexical1\",\"lexical2\"]}}")); assertEquals(0, rsp.getResults().size()); } @@ -164,16 +164,16 @@ public void testMaxQueriesLimit() throws Exception { SolrException.class, () -> query( - CommonParams.JSON, - "{\"queries\":" - + "{\"lexical1\":{\"lucene\":{\"query\":\"id:(2^=2 OR 3^=1)\"}}," - + "\"vector\":{\"knn\":{ \"f\": \"vector\", \"topK\": 5, \"query\": \"[1.0, 2.0, 3.0, 4.0]\"}}," - + "\"lexical2\":{\"lucene\":{\"query\":\"text:test text for doc 2\"}}}," - + "\"limit\":5," - + "\"fields\":[\"id\",\"score\",\"title\"]," - + "\"params\":{\"combiner\":true,\"combiner.query\":[\"lexical1\",\"vector\", \"lexical2\"]}}", - CommonParams.QT, - "/search")); + "/search", + params( + CommonParams.JSON, + "{\"queries\":" + + "{\"lexical1\":{\"lucene\":{\"query\":\"id:(2^=2 OR 3^=1)\"}}," + + "\"vector\":{\"knn\":{ \"f\": \"vector\", \"topK\": 5, \"query\": \"[1.0, 2.0, 3.0, 4.0]\"}}," + + "\"lexical2\":{\"lucene\":{\"query\":\"text:test text for doc 2\"}}}," + + "\"limit\":5," + + "\"fields\":[\"id\",\"score\",\"title\"]," + + "\"params\":{\"combiner\":true,\"combiner.query\":[\"lexical1\",\"vector\", \"lexical2\"]}}"))); assertTrue(exceptionThrown.getMessage().contains("Too many queries to combine: limit is 2")); } @@ -186,16 +186,16 @@ public void testCombinerPlugin() throws Exception { prepareIndexDocs(); QueryResponse rsp = query( - CommonParams.JSON, - "{\"queries\":" - + "{\"lexical1\":{\"lucene\":{\"query\":\"title:title test for doc 1\"}}," - + "\"lexical2\":{\"lucene\":{\"query\":\"text:test text for doc 2\"}}}," - + "\"limit\":5," - + "\"fields\":[\"id\",\"score\",\"title\"]," - + "\"params\":{\"combiner\":true,\"combiner.algorithm\":test,\"combiner.query\"" - + ":[\"lexical1\",\"lexical2\"],\"debug\":[\"results\"]}}", - CommonParams.QT, - "/search"); + "/search", + params( + CommonParams.JSON, + "{\"queries\":" + + "{\"lexical1\":{\"lucene\":{\"query\":\"title:title test for doc 1\"}}," + + "\"lexical2\":{\"lucene\":{\"query\":\"text:test text for doc 2\"}}}," + + "\"limit\":5," + + "\"fields\":[\"id\",\"score\",\"title\"]," + + "\"params\":{\"combiner\":true,\"combiner.algorithm\":test,\"combiner.query\"" + + ":[\"lexical1\",\"lexical2\"],\"debug\":[\"results\"]}}")); assertEquals(10, rsp.getResults().getNumFound()); assertEquals( "org.apache.lucene.search.Explanation:30 = this is test combiner\n", @@ -225,25 +225,14 @@ public void testNonEnabledFeature() throws Exception { SolrException.class, () -> query( - CommonParams.JSON, - combinedQueryStr, - CommonParams.QT, "/search", - "cursorMark", - CURSOR_MARK_START)); + params(CommonParams.JSON, combinedQueryStr, "cursorMark", CURSOR_MARK_START))); assertTrue( exceptionThrown.getMessage().contains("Unsupported functionality for Combined Queries.")); exceptionThrown = expectThrows( SolrException.class, - () -> - query( - CommonParams.JSON, - combinedQueryStr, - CommonParams.QT, - "/search", - "group", - "true")); + () -> query("/search", params(CommonParams.JSON, combinedQueryStr, "group", "true"))); assertTrue( exceptionThrown.getMessage().contains("Unsupported functionality for Combined Queries.")); } diff --git a/solr/core/src/test/org/apache/solr/handler/component/CombinedQuerySolrCloudTest.java b/solr/core/src/test/org/apache/solr/handler/component/CombinedQuerySolrCloudTest.java index b4b72e0f2e5a..6c455e0d1ce6 100644 --- a/solr/core/src/test/org/apache/solr/handler/component/CombinedQuerySolrCloudTest.java +++ b/solr/core/src/test/org/apache/solr/handler/component/CombinedQuerySolrCloudTest.java @@ -136,7 +136,7 @@ public void testSingleLexicalQuery() throws Exception { "fields": ["id", "score", "title"], "params": {"combiner": true, "combiner.query": ["lexical1"]} }"""; - QueryResponse rsp = query(CommonParams.JSON, jsonQuery, CommonParams.QT, "/search"); + QueryResponse rsp = query("/search", params(CommonParams.JSON, jsonQuery)); assertEquals(1, rsp.getResults().size()); assertFieldValues(rsp.getResults(), id, "2"); } @@ -160,7 +160,7 @@ public void testMultipleLexicalQuery() throws Exception { "fields": ["id", "score", "title"], "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"]} }"""; - QueryResponse rsp = query(CommonParams.JSON, jsonQuery, CommonParams.QT, "/search"); + QueryResponse rsp = query("/search", params(CommonParams.JSON, jsonQuery)); assertEquals(5, rsp.getResults().size()); assertFieldValues(rsp.getResults(), id, "5", "7", "2", "6", "3"); } @@ -185,7 +185,7 @@ public void testMultipleQueryWithSort() throws Exception { "fields": ["id", "score", "title"], "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"]} }"""; - QueryResponse rsp = query(CommonParams.JSON, jsonQuery, CommonParams.QT, "/search"); + QueryResponse rsp = query("/search", params(CommonParams.JSON, jsonQuery)); assertEquals(5, rsp.getResults().size()); assertFieldValues(rsp.getResults(), id, "5", "2", "8", "7", "10"); } @@ -208,7 +208,7 @@ public void testHybridQueryWithPagination() throws Exception { "fields": ["id", "score", "title"], "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"]} }"""; - QueryResponse rsp = query(CommonParams.JSON, jsonQueryAll, CommonParams.QT, "/search"); + QueryResponse rsp = query("/search", params(CommonParams.JSON, jsonQueryAll)); // ideal ordering assertFieldValues(rsp.getResults(), id, "5", "7", "2", "6", "3", "10", "8"); String jsonQueryLimit2 = @@ -222,7 +222,7 @@ public void testHybridQueryWithPagination() throws Exception { "fields": ["id", "score", "title"], "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"]} }"""; - rsp = query(CommonParams.JSON, jsonQueryLimit2, CommonParams.QT, "/search"); + rsp = query("/search", params(CommonParams.JSON, jsonQueryLimit2)); // assert proper ordering due to presence of shards.rows assertFieldValues(rsp.getResults(), id, "7", "2"); String jsonQueryWithShardRows = @@ -236,7 +236,7 @@ public void testHybridQueryWithPagination() throws Exception { "fields": ["id", "score", "title"], "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"], "shards.rows": 10} }"""; - rsp = query(CommonParams.JSON, jsonQueryWithShardRows, CommonParams.QT, "/search"); + rsp = query("/search", params(CommonParams.JSON, jsonQueryWithShardRows)); assertFieldValues(rsp.getResults(), id, "5", "7"); // assert improper ordering due to lack of shards.rows String jsonQueryPage = @@ -251,7 +251,7 @@ public void testHybridQueryWithPagination() throws Exception { "fields": ["id", "score", "title"], "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"]} }"""; - rsp = query(CommonParams.JSON, jsonQueryPage, CommonParams.QT, "/search"); + rsp = query("/search", params(CommonParams.JSON, jsonQueryPage)); assertEquals(4, rsp.getResults().size()); assertFieldValues(rsp.getResults(), id, "6", "3", "10", "8"); } @@ -281,7 +281,7 @@ public void testQueryWithFaceting() throws Exception { "combiner.query": ["lexical"] } }"""; - QueryResponse rsp = query(CommonParams.JSON, jsonQuery, CommonParams.QT, "/search"); + QueryResponse rsp = query("/search", params(CommonParams.JSON, jsonQuery)); assertEquals(3, rsp.getResults().size()); assertEquals(4, rsp.getResults().getNumFound()); assertEquals("[0 (2), 2 (2)]", rsp.getFacetFields().getFirst().getValues().toString()); @@ -314,7 +314,7 @@ public void testQueriesWithFacetAndHighlights() throws Exception { "hl.q": "test doc" } }"""; - QueryResponse rsp = query(CommonParams.JSON, jsonQuery, CommonParams.QT, "/search"); + QueryResponse rsp = query("/search", params(CommonParams.JSON, jsonQuery)); assertEquals(4, rsp.getResults().size()); assertFieldValues(rsp.getResults(), id, "5", "7", "2", "6"); assertEquals("mod3_idv", rsp.getFacetFields().getFirst().getName()); @@ -356,7 +356,7 @@ public void testElevatedQueriesWithFacetAndHighlights() throws Exception { "hl.q": "test doc" } }"""; - QueryResponse rsp = query(CommonParams.JSON, jsonQuery, CommonParams.QT, "/search-elevate"); + QueryResponse rsp = query("/search-elevate", params(CommonParams.JSON, jsonQuery)); assertEquals(4, rsp.getResults().size()); assertFieldValues(rsp.getResults(), id, "6", "10", "5", "7"); assertEquals("mod3_idv", rsp.getFacetFields().getFirst().getName()); @@ -419,7 +419,7 @@ public void testQueriesWithFacetAndHighlightsCollapse() throws Exception { } }"""; handle.put("expanded", UNORDERED); - QueryResponse rsp = query(CommonParams.JSON, jsonQuery, CommonParams.QT, "/search"); + QueryResponse rsp = query("/search", params(CommonParams.JSON, jsonQuery)); assertEquals(3, rsp.getResults().size()); assertFieldValues(rsp.getResults(), id, "CO!2", "CO!10", "CO!3"); assertEquals("id", rsp.getFacetFields().getFirst().getName()); @@ -462,7 +462,7 @@ protected void processComponentsLocal( /** Tests {@link ResponseBuilder#setForcedDistrib(boolean)} had the desired effect. */ @Test public void testForcedDistrib() throws Exception { - QueryResponse rsp = query("qt", "/forcedDistribTest", "q", "*:*", "rows", "0"); + QueryResponse rsp = query("/forcedDistribTest", params("q", "*:*", "rows", "0")); // ForcedDistribSearchHandler would trigger a failure if this didn't work } } diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedCombinedQueryComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedCombinedQueryComponentTest.java index 55f2a87a7230..3c8044f46198 100644 --- a/solr/core/src/test/org/apache/solr/handler/component/DistributedCombinedQueryComponentTest.java +++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedCombinedQueryComponentTest.java @@ -128,155 +128,155 @@ public void testCombinedQueries() throws Exception { // Single lexical query QueryResponse rsp = query( - CommonParams.JSON, - """ - { - "queries": { - "lexical1": {"lucene": {"query": "id:2^=10"}} - }, - "limit": 5, - "fields": ["id", "score", "title"], - "params": {"combiner": true, "combiner.query": ["lexical1"]} - }""", - CommonParams.QT, - "/search"); + "/search", + params( + CommonParams.JSON, + """ + { + "queries": { + "lexical1": {"lucene": {"query": "id:2^=10"}} + }, + "limit": 5, + "fields": ["id", "score", "title"], + "params": {"combiner": true, "combiner.query": ["lexical1"]} + }""")); assertEquals(1, rsp.getResults().size()); assertFieldValues(rsp.getResults(), id, "2"); // Multiple lexical queries rsp = query( - CommonParams.JSON, - """ - { - "queries": { - "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 5^=1)"}}, - "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 10^=2)"}} - }, - "limit": 5, - "fields": ["id", "score", "title"], - "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"]} - }""", - CommonParams.QT, - "/search"); + "/search", + params( + CommonParams.JSON, + """ + { + "queries": { + "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 5^=1)"}}, + "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 10^=2)"}} + }, + "limit": 5, + "fields": ["id", "score", "title"], + "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"]} + }""")); assertEquals(5, rsp.getResults().size()); assertFieldValues(rsp.getResults(), id, "5", "7", "2", "6", "3"); // Multiple queries with sort rsp = query( - CommonParams.JSON, - """ - { - "queries": { - "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 5^=1)"}}, - "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 10^=2)"}} - }, - "limit": 5, - "sort": "mod3_idv desc, score desc", - "fields": ["id", "score", "title"], - "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"]} - }""", - CommonParams.QT, - "/search"); + "/search", + params( + CommonParams.JSON, + """ + { + "queries": { + "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 5^=1)"}}, + "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 10^=2)"}} + }, + "limit": 5, + "sort": "mod3_idv desc, score desc", + "fields": ["id", "score", "title"], + "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"]} + }""")); assertEquals(5, rsp.getResults().size()); assertFieldValues(rsp.getResults(), id, "5", "2", "7", "10", "4"); // Pagination: no limit (all results), ideal ordering rsp = query( - CommonParams.JSON, - """ - { - "queries": { - "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 5^=1)"}}, - "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 10^=2)"}} - }, - "fields": ["id", "score", "title"], - "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"]} - }""", - CommonParams.QT, - "/search"); + "/search", + params( + CommonParams.JSON, + """ + { + "queries": { + "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 5^=1)"}}, + "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 10^=2)"}} + }, + "fields": ["id", "score", "title"], + "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"]} + }""")); assertFieldValues(rsp.getResults(), id, "5", "7", "2", "6", "3", "10", "4"); // Pagination: limit 1 without shards.rows gives non-ideal ordering rsp = query( - CommonParams.JSON, - """ - { - "queries": { - "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 5^=1)"}}, - "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 10^=2)"}} - }, - "limit": 1, - "fields": ["id", "score", "title"], - "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"]} - }""", - CommonParams.QT, - "/search"); + "/search", + params( + CommonParams.JSON, + """ + { + "queries": { + "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 5^=1)"}}, + "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 10^=2)"}} + }, + "limit": 1, + "fields": ["id", "score", "title"], + "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"]} + }""")); assertFieldValues(rsp.getResults(), id, "7"); // Pagination: limit 1 with shards.rows gives ideal ordering rsp = query( - CommonParams.JSON, - """ - { - "queries": { - "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 5^=1)"}}, - "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 10^=2)"}} - }, - "limit": 1, - "fields": ["id", "score", "title"], - "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"], "shards.rows": 10} - }""", - CommonParams.QT, - "/search"); + "/search", + params( + CommonParams.JSON, + """ + { + "queries": { + "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 5^=1)"}}, + "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 10^=2)"}} + }, + "limit": 1, + "fields": ["id", "score", "title"], + "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"], "shards.rows": 10} + }""")); assertFieldValues(rsp.getResults(), id, "5"); // Pagination: limit 4, offset 3 rsp = query( - CommonParams.JSON, - """ - { - "queries": { - "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 5^=1)"}}, - "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 10^=2)"}} - }, - "limit": 4, - "offset": 3, - "fields": ["id", "score", "title"], - "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"]} - }""", - CommonParams.QT, - "/search"); + "/search", + params( + CommonParams.JSON, + """ + { + "queries": { + "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 5^=1)"}}, + "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 10^=2)"}} + }, + "limit": 4, + "offset": 3, + "fields": ["id", "score", "title"], + "params": {"combiner": true, "combiner.query": ["lexical1", "lexical2"]} + }""")); assertEquals(4, rsp.getResults().size()); assertFieldValues(rsp.getResults(), id, "6", "3", "10", "4"); // Faceting rsp = query( - CommonParams.JSON, - """ - { - "queries": { - "lexical": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 5^=1)"}} - }, - "limit": 3, - "offset": 1, - "fields": ["id", "score", "title"], - "params": { - "combiner": true, - "facet": true, - "facet.field": "mod3_idv", - "facet.mincount": 1, - "combiner.query": ["lexical"] - } - }""", - CommonParams.QT, - "/search"); + "/search", + params( + CommonParams.JSON, + """ + { + "queries": { + "lexical": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 5^=1)"}} + }, + "limit": 3, + "offset": 1, + "fields": ["id", "score", "title"], + "params": { + "combiner": true, + "facet": true, + "facet.field": "mod3_idv", + "facet.mincount": 1, + "combiner.query": ["lexical"] + } + }""")); assertEquals(3, rsp.getResults().size()); assertEquals(4, rsp.getResults().getNumFound()); assertEquals("[0 (2), 2 (2)]", rsp.getFacetFields().getFirst().getValues().toString()); @@ -284,27 +284,27 @@ public void testCombinedQueries() throws Exception { // Faceting + highlighting rsp = query( - CommonParams.JSON, - """ - { - "queries": { - "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 5^=1)"}}, - "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 10^=2)"}} - }, - "limit": 4, - "fields": ["id", "score", "title"], - "params": { - "combiner": true, - "facet": true, - "facet.field": "mod3_idv", - "combiner.query": ["lexical1", "lexical2"], - "hl": true, - "hl.fl": "title", - "hl.q": "test doc" - } - }""", - CommonParams.QT, - "/search"); + "/search", + params( + CommonParams.JSON, + """ + { + "queries": { + "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 5^=1)"}}, + "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 10^=2)"}} + }, + "limit": 4, + "fields": ["id", "score", "title"], + "params": { + "combiner": true, + "facet": true, + "facet.field": "mod3_idv", + "combiner.query": ["lexical1", "lexical2"], + "hl": true, + "hl.fl": "title", + "hl.q": "test doc" + } + }""")); assertEquals(4, rsp.getResults().size()); assertFieldValues(rsp.getResults(), id, "5", "7", "2", "6"); assertEquals("mod3_idv", rsp.getFacetFields().getFirst().getName()); @@ -321,29 +321,29 @@ public void testCombinedQueries() throws Exception { handle.put("debug", SKIP); rsp = query( - CommonParams.JSON, - """ - { - "queries": { - "lexical1": {"lucene": {"query": "id:(2^=2 OR 3^=1 OR 6^=2 OR 1^=3)"}}, - "lexical2": {"lucene": {"query": "id:(4^=1 OR 1^=2 OR 7^=3 OR 10^=2)"}} - }, - "limit": 4, - "fields": ["id", "score", "title"], - "params": { - "combiner": true, - "elevateIds": "10,6", - "combiner.query": ["lexical1", "lexical2"], - "facet": true, - "facet.field": "mod3_idv", - "hl": true, - "hl.fl": "title", - "hl.q": "test doc", - "debug": "true" - } - }""", - CommonParams.QT, - "/search-elevate"); + "/search-elevate", + params( + CommonParams.JSON, + """ + { + "queries": { + "lexical1": {"lucene": {"query": "id:(2^=2 OR 3^=1 OR 6^=2 OR 1^=3)"}}, + "lexical2": {"lucene": {"query": "id:(4^=1 OR 1^=2 OR 7^=3 OR 10^=2)"}} + }, + "limit": 4, + "fields": ["id", "score", "title"], + "params": { + "combiner": true, + "elevateIds": "10,6", + "combiner.query": ["lexical1", "lexical2"], + "facet": true, + "facet.field": "mod3_idv", + "hl": true, + "hl.fl": "title", + "hl.q": "test doc", + "debug": "true" + } + }""")); assertEquals(4, rsp.getResults().size()); assertFieldValues(rsp.getResults(), id, "10", "6", "1", "7"); assertEquals("mod3_idv", rsp.getFacetFields().getFirst().getName()); @@ -365,7 +365,7 @@ public void testCombinedQueries() throws Exception { @Test @ShardsFixed(num = 2) public void testForcedDistrib() throws Exception { - QueryResponse rsp = query("qt", "/forcedDistribTest", "q", "*:*", "rows", "0"); + QueryResponse rsp = query("/forcedDistribTest", params("q", "*:*", "rows", "0")); // ForcedDistribSearchHandler would trigger a failure if this didn't work } @@ -478,7 +478,7 @@ public void testCollapseWithCombinedQueryProducesDuplicates() throws Exception { handle.put("expanded", UNORDERED); QueryResponse rsp; try { - rsp = query(CommonParams.JSON, jsonQuery, CommonParams.QT, "/search"); + rsp = query("/search", params(CommonParams.JSON, jsonQuery)); } finally { handle.remove("expanded"); } diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedMLTComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedMLTComponentTest.java index 9145b7cf0135..f7ce38519b62 100644 --- a/solr/core/src/test/org/apache/solr/handler/component/DistributedMLTComponentTest.java +++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedMLTComponentTest.java @@ -189,28 +189,20 @@ public void test() throws Exception { handle.put("17", UNORDERED); query( - "q", - "match_none", - "mlt", - "true", - "mlt.fl", - "lowerfilt", - "qt", requestHandlerName, - "shards.qt", - requestHandlerName); + params( + "q", "match_none", + "mlt", "true", + "mlt.fl", "lowerfilt", + "shards.qt", requestHandlerName)); query( - "q", - "lowerfilt:sonata", - "mlt", - "true", - "mlt.fl", - "lowerfilt", - "qt", requestHandlerName, - "shards.qt", - requestHandlerName); + params( + "q", "lowerfilt:sonata", + "mlt", "true", + "mlt.fl", "lowerfilt", + "shards.qt", requestHandlerName)); handle.put("24", UNORDERED); handle.put("23", UNORDERED); @@ -234,116 +226,116 @@ public void test() throws Exception { // we ask for a mlt.count of 20 to ensure both include all results query( - "q", - "lowerfilt:moon", - "fl", - id, - MoreLikeThisParams.MIN_TERM_FREQ, - 2, - MoreLikeThisParams.MIN_DOC_FREQ, - 1, - "sort", - "id_i1 desc", - "mlt", - "true", - "mlt.fl", - "lowerfilt", - "qt", requestHandlerName, - "shards.qt", - requestHandlerName, - "mlt.count", - "20"); + params( + "q", + "lowerfilt:moon", + "fl", + id, + MoreLikeThisParams.MIN_TERM_FREQ, + "2", + MoreLikeThisParams.MIN_DOC_FREQ, + "1", + "sort", + "id_i1 desc", + "mlt", + "true", + "mlt.fl", + "lowerfilt", + "shards.qt", + requestHandlerName, + "mlt.count", + "20")); query( - "q", - "lowerfilt:fox", - "fl", - id, - MoreLikeThisParams.MIN_TERM_FREQ, - 1, - MoreLikeThisParams.MIN_DOC_FREQ, - 1, - "sort", - "id_i1 desc", - "mlt", - "true", - "mlt.fl", - "lowerfilt", - "qt", requestHandlerName, - "shards.qt", - requestHandlerName, - "mlt.count", - "20"); + params( + "q", + "lowerfilt:fox", + "fl", + id, + MoreLikeThisParams.MIN_TERM_FREQ, + "1", + MoreLikeThisParams.MIN_DOC_FREQ, + "1", + "sort", + "id_i1 desc", + "mlt", + "true", + "mlt.fl", + "lowerfilt", + "shards.qt", + requestHandlerName, + "mlt.count", + "20")); query( - "q", - "lowerfilt:the red fox", - "fl", - id, - MoreLikeThisParams.MIN_TERM_FREQ, - 1, - MoreLikeThisParams.MIN_DOC_FREQ, - 1, - "sort", - "id_i1 desc", - "mlt", - "true", - "mlt.fl", - "lowerfilt", - "qt", - requestHandlerName, - "shards.qt", requestHandlerName, - "mlt.count", - "20"); + params( + "q", + "lowerfilt:the red fox", + "fl", + id, + MoreLikeThisParams.MIN_TERM_FREQ, + "1", + MoreLikeThisParams.MIN_DOC_FREQ, + "1", + "sort", + "id_i1 desc", + "mlt", + "true", + "mlt.fl", + "lowerfilt", + "shards.qt", + requestHandlerName, + "mlt.count", + "20")); query( - "q", - "lowerfilt:blue moon", - "fl", - id, - MoreLikeThisParams.MIN_TERM_FREQ, - 1, - MoreLikeThisParams.MIN_DOC_FREQ, - 1, - "sort", - "id_i1 desc", - "mlt", - "true", - "mlt.fl", - "lowerfilt", - "qt", - requestHandlerName, - "shards.qt", requestHandlerName, - "mlt.count", - "20"); - - // let's query by specifying multiple mlt.fl as comma-separated values - QueryResponse response = - query( + params( "q", - "lowerfilt:moon", + "lowerfilt:blue moon", "fl", id, MoreLikeThisParams.MIN_TERM_FREQ, - 2, + "1", MoreLikeThisParams.MIN_DOC_FREQ, - 1, + "1", "sort", "id_i1 desc", "mlt", "true", "mlt.fl", - "lowerfilt1,lowerfilt", - "qt", - requestHandlerName, + "lowerfilt", "shards.qt", requestHandlerName, "mlt.count", - "20"); + "20")); + + // let's query by specifying multiple mlt.fl as comma-separated values + QueryResponse response = + query( + requestHandlerName, + params( + "q", + "lowerfilt:moon", + "fl", + id, + MoreLikeThisParams.MIN_TERM_FREQ, + "2", + MoreLikeThisParams.MIN_DOC_FREQ, + "1", + "sort", + "id_i1 desc", + "mlt", + "true", + "mlt.fl", + "lowerfilt1,lowerfilt", + "shards.qt", + requestHandlerName, + "mlt.count", + "20")); NamedList moreLikeThis = (NamedList) response.getResponse().get("moreLikeThis"); Map idVsMLTCount = new HashMap<>(); for (Map.Entry entry : moreLikeThis) { @@ -354,58 +346,58 @@ public void test() throws Exception { // let's query by specifying multiple mlt.fl as multiple request parameters response = query( + requestHandlerName, + params( + "q", + "lowerfilt:moon", + "fl", + id, + MoreLikeThisParams.MIN_TERM_FREQ, + "2", + MoreLikeThisParams.MIN_DOC_FREQ, + "1", + "sort", + "id_i1 desc", + "mlt", + "true", + "mlt.fl", + "lowerfilt1", + "mlt.fl", + "lowerfilt", + "shards.qt", + requestHandlerName, + "mlt.count", + "20")); + moreLikeThis = (NamedList) response.getResponse().get("moreLikeThis"); + for (Map.Entry entry : moreLikeThis) { + String key = entry.getKey(); + Long expected = idVsMLTCount.get(key); + Long actual = ((SolrDocumentList) entry.getValue()).getNumFound(); + assertEquals("MLT mismatch for id=" + key, expected, actual); + } + // test boost mlt.qf + query( + requestHandlerName, + params( "q", "lowerfilt:moon", "fl", id, MoreLikeThisParams.MIN_TERM_FREQ, - 2, + "2", MoreLikeThisParams.MIN_DOC_FREQ, - 1, + "1", "sort", "id_i1 desc", "mlt", "true", "mlt.fl", - "lowerfilt1", - "mlt.fl", - "lowerfilt", - "qt", - requestHandlerName, + "lowerfilt1,lowerfilt", + "mlt.qf", + "lowerfilt1^1.2 lowerfilt^3.4", "shards.qt", requestHandlerName, "mlt.count", - "20"); - moreLikeThis = (NamedList) response.getResponse().get("moreLikeThis"); - for (Map.Entry entry : moreLikeThis) { - String key = entry.getKey(); - Long expected = idVsMLTCount.get(key); - Long actual = ((SolrDocumentList) entry.getValue()).getNumFound(); - assertEquals("MLT mismatch for id=" + key, expected, actual); - } - // test boost mlt.qf - query( - "q", - "lowerfilt:moon", - "fl", - id, - MoreLikeThisParams.MIN_TERM_FREQ, - 2, - MoreLikeThisParams.MIN_DOC_FREQ, - 1, - "sort", - "id_i1 desc", - "mlt", - "true", - "mlt.fl", - "lowerfilt1,lowerfilt", - "mlt.qf", - "lowerfilt1^1.2 lowerfilt^3.4", - "qt", - requestHandlerName, - "shards.qt", - requestHandlerName, - "mlt.count", - "20"); + "20")); } } diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedQueryElevationComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedQueryElevationComponentTest.java index 6a794b8d768b..0d1f67596069 100644 --- a/solr/core/src/test/org/apache/solr/handler/component/DistributedQueryElevationComponentTest.java +++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedQueryElevationComponentTest.java @@ -18,6 +18,7 @@ import org.apache.lucene.util.Constants; import org.apache.solr.BaseDistributedSearchTestCase; +import org.apache.solr.client.solrj.request.QueryRequest; import org.apache.solr.client.solrj.request.SolrQuery; import org.apache.solr.client.solrj.response.JavaBinResponseParser; import org.apache.solr.client.solrj.response.QueryResponse; @@ -71,92 +72,91 @@ public void test() throws Exception { handle.put("shards.qt", SKIP); handle.put("shards", SKIP); handle.put("q", SKIP); - handle.put("qt", SKIP); query( - "q", - "*:*", - "qt", "/elevate", - "shards.qt", - "/elevate", - "rows", - "500", - "sort", - "id desc", - CommonParams.FL, - "id, score, [elevated]"); + params( + "q", + "*:*", + "shards.qt", + "/elevate", + "rows", + "500", + "sort", + "id desc", + CommonParams.FL, + "id, score, [elevated]")); query( - "q", - "ZZZZ", - "qt", - "/elevate", - "shards.qt", "/elevate", - "rows", - "500", - CommonParams.FL, - "*, [elevated]", - "forceElevation", - "true", - "sort", - "int_i desc"); + params( + "q", + "ZZZZ", + "shards.qt", + "/elevate", + "rows", + "500", + CommonParams.FL, + "*, [elevated]", + "forceElevation", + "true", + "sort", + "int_i desc")); query( - "q", - "solr", - "qt", - "/elevate", - "shards.qt", "/elevate", - "rows", - "500", - CommonParams.FL, - "*, [elevated]", - "forceElevation", - "true", - "sort", - "int_i asc"); + params( + "q", + "solr", + "shards.qt", + "/elevate", + "rows", + "500", + CommonParams.FL, + "*, [elevated]", + "forceElevation", + "true", + "sort", + "int_i asc")); query( - "q", - "ZZZZ", - "qt", "/elevate", - "shards.qt", - "/elevate", - "rows", - "500", - CommonParams.FL, - "*, [elevated]", - "forceElevation", - "true", - "sort", - "id desc"); - - // See SOLR-4854 for background on following test code - - // Uses XML response format by default - QueryResponse response = - query( + params( "q", - "XXXX", - "qt", - "/elevate", + "ZZZZ", "shards.qt", "/elevate", "rows", "500", CommonParams.FL, - "id, [elevated]", - "enableElevation", - "true", + "*, [elevated]", "forceElevation", "true", - "elevateIds", - "6", "sort", - "id desc"); + "id desc")); + + // See SOLR-4854 for background on following test code + + // Uses XML response format by default + QueryResponse response = + query( + "/elevate", + params( + "q", + "XXXX", + "shards.qt", + "/elevate", + "rows", + "500", + CommonParams.FL, + "id, [elevated]", + "enableElevation", + "true", + "forceElevation", + "true", + "elevateIds", + "6", + "sort", + "id desc")); assertTrue(response.getResults().getNumFound() > 0); SolrDocument document = response.getResults().get(0); @@ -167,7 +167,6 @@ public void test() throws Exception { assertTrue(client.getParser() instanceof JavaBinResponseParser); SolrQuery solrQuery = new SolrQuery("XXXX") - .setParam("qt", "/elevate") .setParam("shards.qt", "/elevate") .setRows(500) .setFields("id,[elevated]") @@ -176,7 +175,7 @@ public void test() throws Exception { .setParam("elevateIds", "6") .setSort("id", SolrQuery.ORDER.desc); setDistributedParams(solrQuery); - response = client.query(DEFAULT_TEST_CORENAME, solrQuery); + response = new QueryRequest("/elevate", solrQuery).process(client, DEFAULT_TEST_CORENAME); assertTrue(response.getResults().getNumFound() > 0); document = response.getResults().get(0); diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedSpellCheckComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedSpellCheckComponentTest.java index 3337e87d0576..e073ee13b6ee 100644 --- a/solr/core/src/test/org/apache/solr/handler/component/DistributedSpellCheckComponentTest.java +++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedSpellCheckComponentTest.java @@ -22,8 +22,10 @@ import org.apache.lucene.tests.util.LuceneTestCase.SuppressTempFileChecks; import org.apache.solr.BaseDistributedSearchTestCase; import org.apache.solr.client.solrj.SolrClient; +import org.apache.solr.client.solrj.request.QueryRequest; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.params.ModifiableSolrParams; +import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.params.SpellingParams; import org.apache.solr.common.util.NamedList; import org.junit.BeforeClass; @@ -44,20 +46,15 @@ public static void beforeClass() throws Exception { useFactory(null); // need an FS factory } - private void q(Object... q) throws Exception { - final ModifiableSolrParams params = new ModifiableSolrParams(); - - for (int i = 0; i < q.length; i += 2) { - params.add(q[i].toString(), q[i + 1].toString()); - } - - controlClient.query(params); + private void q(String handler, SolrParams params) throws Exception { + new QueryRequest(handler, params).process(controlClient); // query a random server - params.set("shards", shards); + final ModifiableSolrParams distribParams = new ModifiableSolrParams(params); + distribParams.set("shards", shards); int which = r.nextInt(clients.size()); SolrClient client = clients.get(which); - client.query(params); + new QueryRequest(handler, distribParams).process(client); } @Override @@ -140,14 +137,17 @@ public void test() throws Exception { String maxResults = SpellingParams.SPELLCHECK_MAX_RESULTS_FOR_SUGGEST; // Build the dictionary for IndexBasedSpellChecker - q(buildRequest("*:*", false, "/spellCheckCompRH", false, build, "true")); + q("/spellCheckCompRH", buildRequest("*:*", false, "/spellCheckCompRH", false, build, "true")); // Test Basic Functionality query( + requestHandlerName, buildRequest("toyata", true, requestHandlerName, random().nextBoolean(), (String[]) null)); query( + requestHandlerName, buildRequest("toyata", true, requestHandlerName, random().nextBoolean(), extended, "true")); query( + requestHandlerName, buildRequest( "bluo", true, @@ -160,6 +160,7 @@ public void test() throws Exception { // Test Collate functionality query( + requestHandlerName, buildRequest( "The quick reb fox jumped over the lazy brown dogs", false, @@ -172,6 +173,7 @@ public void test() throws Exception { collate, "true")); query( + requestHandlerName, buildRequest( "lowerfilt:(+quock +reb)", false, @@ -190,6 +192,7 @@ public void test() throws Exception { collateExtended, "true")); query( + requestHandlerName, buildRequest( "lowerfilt:(+quock +reb)", false, @@ -208,6 +211,7 @@ public void test() throws Exception { collateExtended, "false")); query( + requestHandlerName, buildRequest( "lowerfilt:(+quock +reb)", false, @@ -228,6 +232,7 @@ public void test() throws Exception { // Test context-sensitive collate query( + requestHandlerName, buildRequest( "lowerfilt:(\"quick red fox\")", false, @@ -250,6 +255,7 @@ public void test() throws Exception { maxResults, "10")); query( + requestHandlerName, buildRequest( "lowerfilt:(\"rod fix\")", false, @@ -272,6 +278,7 @@ public void test() throws Exception { maxResults, "10")); query( + requestHandlerName, buildRequest( "lowerfilt:(\"rod fix\")", false, @@ -298,6 +305,7 @@ public void test() throws Exception { // Test word-break spellchecker query( + reqHandlerWithWordbreak, buildRequest( "lowerfilt:(+quock +redfox +jum +ped)", false, @@ -316,6 +324,7 @@ public void test() throws Exception { collateExtended, "true")); query( + reqHandlerWithWordbreak, buildRequest( "lowerfilt:(+rodfix)", false, @@ -334,6 +343,7 @@ public void test() throws Exception { collateExtended, "true")); query( + reqHandlerWithWordbreak, buildRequest( "lowerfilt:(+son +ata)", false, @@ -362,10 +372,9 @@ public void test() throws Exception { commit(); query( + "/spellCheckCompRH_Direct", true, params( - "qt", - "/spellCheckCompRH_Direct", "shards.qt", "/spellCheckCompRH_Direct", "rows", @@ -386,19 +395,22 @@ public void test() throws Exception { Boolean.toString(random().nextBoolean()), collateExtended, Boolean.toString(random().nextBoolean()), + // "0" is correctly spelled, in more docs than configured maxQueryFrequency "test.expected.suggestions", - "0", // this word is correctly spelled, in more docs then configured maxQueryFrequency + "0", + // echoParams=all needed so validateControlData can see our + // test.expected.suggestions "echoParams", - "all")); // needed so validateControlData can see our test.expected.suggestions + "all")); } - private Object[] buildRequest( + private SolrParams buildRequest( String q, boolean useSpellcheckQ, String handlerName, boolean useGrouping, String... addlParams) { - List params = new ArrayList<>(); + List params = new ArrayList<>(); params.add("q"); params.add(useSpellcheckQ ? "*:*" : q); @@ -411,9 +423,6 @@ private Object[] buildRequest( params.add("fl"); params.add("id,lowerfilt"); - params.add("qt"); - params.add(handlerName); - params.add("shards.qt"); params.add(handlerName); @@ -431,6 +440,6 @@ private Object[] buildRequest( if (addlParams != null) { params.addAll(Arrays.asList(addlParams)); } - return params.toArray(new Object[0]); + return params(params.toArray(new String[0])); } } diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedSuggestComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedSuggestComponentTest.java index e1947ea85c13..6bb4aca627f3 100644 --- a/solr/core/src/test/org/apache/solr/handler/component/DistributedSuggestComponentTest.java +++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedSuggestComponentTest.java @@ -21,6 +21,7 @@ import java.util.List; import org.apache.solr.BaseDistributedSearchTestCase; import org.apache.solr.client.solrj.response.QueryResponse; +import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.SimpleOrderedMap; import org.apache.solr.spelling.suggest.SuggesterParams; @@ -92,28 +93,37 @@ public void test() throws Exception { // Build the suggest dictionary if (random().nextBoolean()) { // build all the suggesters in one go - query(buildRequest("", true, requestHandlerName, buildAll, "true")); + query(requestHandlerName, buildRequest("", true, requestHandlerName, buildAll, "true")); } else { // build suggesters individually - query(buildRequest("", true, requestHandlerName, build, "true", dictionaryName, docDictName)); query( + requestHandlerName, + buildRequest("", true, requestHandlerName, build, "true", dictionaryName, docDictName)); + query( + requestHandlerName, buildRequest( "", true, requestHandlerName, build, "true", dictionaryName, docExprDictName)); } // Test Basic Functionality query( + requestHandlerName, buildRequest( "exampel", false, requestHandlerName, dictionaryName, docDictName, count, "2")); query( + requestHandlerName, buildRequest( "Yet", false, requestHandlerName, dictionaryName, docExprDictName, count, "2")); query( + requestHandlerName, buildRequest( "blah", true, requestHandlerName, dictionaryName, docExprDictName, count, "2")); - query(buildRequest("blah", true, requestHandlerName, dictionaryName, docDictName, count, "2")); + query( + requestHandlerName, + buildRequest("blah", true, requestHandlerName, dictionaryName, docDictName, count, "2")); // Test multiSuggester query( + requestHandlerName, buildRequest( "exampel", false, @@ -126,9 +136,9 @@ public void test() throws Exception { "2")); } - private Object[] buildRequest( + private SolrParams buildRequest( String q, boolean useSuggestQ, String handlerName, String... addlParams) { - List params = new ArrayList<>(); + List params = new ArrayList<>(); if (useSuggestQ) { params.add("suggest.q"); @@ -137,15 +147,12 @@ private Object[] buildRequest( } params.add(q); - params.add("qt"); - params.add(handlerName); - params.add("shards.qt"); params.add(handlerName); if (addlParams != null) { params.addAll(Arrays.asList(addlParams)); } - return params.toArray(new Object[0]); + return params(params.toArray(new String[0])); } } diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java index a64d5d5bfafd..aeb6a34adf63 100644 --- a/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java +++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java @@ -17,11 +17,8 @@ package org.apache.solr.handler.component; import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Random; -import java.util.stream.Stream; import org.apache.solr.BaseDistributedSearchTestCase; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrServerException; @@ -49,11 +46,11 @@ public void test() throws Exception { del("*:*"); index(id, random.nextInt(), "b_t", "snake a,b spider shark snail slug seal", "foo_i_p", "1"); - query("qt", "/terms", "terms.fl", "foo_i_p"); + query("/terms", params("terms.fl", "foo_i_p")); del("*:*"); // verify point field on empty index - query("qt", "/terms", "terms.fl", "foo_i_p"); + query("/terms", params("terms.fl", "foo_i_p")); index(id, random.nextInt(), "b_t", "snake a,b spider shark snail slug seal", "foo_i", "1"); index( @@ -102,118 +99,87 @@ public void test() throws Exception { handle.clear(); handle.put("terms", UNORDERED); - query("qt", "/terms", "terms.fl", "b_t"); - query("qt", "/terms", "terms.limit", 5, "terms.fl", "b_t", "terms.lower", "s"); + query("/terms", params("terms.fl", "b_t")); + query("/terms", params("terms.limit", "5", "terms.fl", "b_t", "terms.lower", "s")); query( - "qt", "/terms", - "terms.limit", - 5, - "terms.fl", - "b_t", - "terms.prefix", - "sn", - "terms.lower", - "sn"); + params("terms.limit", "5", "terms.fl", "b_t", "terms.prefix", "sn", "terms.lower", "sn")); query( - "qt", "/terms", - "terms.limit", - 5, - "terms.fl", - "b_t", - "terms.prefix", - "s", - "terms.lower", - "s", - "terms.upper", - "sn"); + params( + "terms.limit", "5", + "terms.fl", "b_t", + "terms.prefix", "s", + "terms.lower", "s", + "terms.upper", "sn")); // terms.sort query( - "qt", "/terms", - "terms.limit", - 5, - "terms.fl", - "b_t", - "terms.prefix", - "s", - "terms.lower", - "s", - "terms.sort", - "index"); + params( + "terms.limit", "5", + "terms.fl", "b_t", + "terms.prefix", "s", + "terms.lower", "s", + "terms.sort", "index")); query( - "qt", "/terms", - "terms.limit", - 5, - "terms.fl", - "b_t", - "terms.prefix", - "s", - "terms.lower", - "s", - "terms.upper", - "sn", - "terms.sort", - "index"); - query("qt", "/terms", "terms.fl", "b_t", "terms.sort", "index"); + params( + "terms.limit", "5", + "terms.fl", "b_t", + "terms.prefix", "s", + "terms.lower", "s", + "terms.upper", "sn", + "terms.sort", "index")); + query("/terms", params("terms.fl", "b_t", "terms.sort", "index")); // terms.list - query("qt", "/terms", "terms.fl", "b_t", "terms.list", "snake,zebra,ant,bad"); - query("qt", "/terms", "terms.fl", "foo_i", "terms.list", "2,3,1"); - query("qt", "/terms", "terms.fl", "foo_i", "terms.stats", "true", "terms.list", "2,3,1"); - query("qt", "/terms", "terms.fl", "b_t", "terms.list", "snake,zebra", "terms.ttf", "true"); + query("/terms", params("terms.fl", "b_t", "terms.list", "snake,zebra,ant,bad")); + query("/terms", params("terms.fl", "foo_i", "terms.list", "2,3,1")); + query("/terms", params("terms.fl", "foo_i", "terms.stats", "true", "terms.list", "2,3,1")); + query("/terms", params("terms.fl", "b_t", "terms.list", "snake,zebra", "terms.ttf", "true")); query( - "qt", "/terms", - "terms.fl", - "b_t", - "terms.fl", - "c_t", - "terms.list", - "snake,ant,zebra", - "terms.ttf", - "true"); + params( + "terms.fl", "b_t", + "terms.fl", "c_t", + "terms.list", "snake,ant,zebra", + "terms.ttf", "true")); // for date point field - query("qt", "/terms", "terms.fl", "foo_date_p"); + query("/terms", params("terms.fl", "foo_date_p")); // terms.ttf=true doesn't work for point fields - // query("qt", "/terms", "terms.fl", "foo_date_p", "terms.ttf", "true"); + // query("/terms", params("terms.fl", "foo_date_p", "terms.ttf", "true")); } @Override - protected QueryResponse query(Object... q) throws Exception { - if (Stream.of(q).noneMatch(s -> s.equals("terms.list"))) { + protected QueryResponse query(String requestHandler, SolrParams p) throws Exception { + if (p.get("terms.list") == null) { // SOLR-9243 doesn't support max/min count - for (int i = 0; i < q.length; i += 2) { - if ((q[i].equals("terms.sort") && q[i + 1].equals("index")) || rarely()) { - List params = new ArrayList<>(Arrays.asList(q)); - if (usually()) { - params.add("terms.mincount"); - params.add(random().nextInt(4) - 1); - } - if (usually()) { - params.add("terms.maxcount"); - params.add(random().nextInt(4) - 1); - } - q = params.toArray(new Object[0]); - break; + if ("index".equals(p.get("terms.sort")) || rarely()) { + ModifiableSolrParams params = new ModifiableSolrParams(p); + if (usually()) { + params.set("terms.mincount", String.valueOf(random().nextInt(4) - 1)); + } + if (usually()) { + params.set("terms.maxcount", String.valueOf(random().nextInt(4) - 1)); } + p = params; } } - return super.query(q); + return super.query(requestHandler, p); } @Override - protected QueryResponse query(boolean setDistribParams, SolrParams p) throws Exception { - QueryResponse queryResponse = super.query(setDistribParams, p); + protected QueryResponse query(String requestHandler, boolean setDistribParams, SolrParams p) + throws Exception { + QueryResponse queryResponse = super.query(requestHandler, setDistribParams, p); final ModifiableSolrParams params = new ModifiableSolrParams(p); // TODO: look into why passing true causes fails params.set("distrib", "false"); for (ResponseParser responseParser : getResponseParsers()) { - final NamedList controlRsp = queryClient(controlClient, params, responseParser); + final NamedList controlRsp = + queryClient(controlClient, requestHandler, params, responseParser); params.remove("distrib"); if (setDistribParams) { setDistributedParams(params); @@ -222,7 +188,7 @@ protected QueryResponse query(boolean setDistribParams, SolrParams p) throws Exc // query a random server int which = r.nextInt(clients.size()); SolrClient client = clients.get(which); - NamedList rsp = queryClient(client, params, responseParser); + NamedList rsp = queryClient(client, requestHandler, params, responseParser); // flags needs to be called here since only terms response is passed to compare // other way is to pass whole response to compare @@ -241,9 +207,12 @@ protected QueryResponse query(boolean setDistribParams, SolrParams p) throws Exc * responseParser} */ private NamedList queryClient( - SolrClient solrClient, final ModifiableSolrParams params, ResponseParser responseParser) + SolrClient solrClient, + String requestHandler, + final ModifiableSolrParams params, + ResponseParser responseParser) throws SolrServerException, IOException { - QueryRequest queryRequest = new QueryRequest(params); + QueryRequest queryRequest = new QueryRequest(requestHandler, params); queryRequest.setResponseParser(responseParser); return solrClient.request(queryRequest); } diff --git a/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentDistributedTest.java b/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentDistributedTest.java index 0389ed1b189e..6a8457fde0cc 100644 --- a/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentDistributedTest.java +++ b/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentDistributedTest.java @@ -135,181 +135,181 @@ public void test() throws Exception { for (String q : new String[] {"id:0", "id:7", "id:[3 TO 6]", "*:*"}) { query( - "sort", - "id desc", - "qt", tv, - "q", - q, - TermVectorComponent.COMPONENT_NAME, - "true", - TermVectorParams.TF, - "true"); + params( + "sort", + "id desc", + "q", + q, + TermVectorComponent.COMPONENT_NAME, + "true", + TermVectorParams.TF, + "true")); // tv.fl diff from fl query( - "sort", - "id asc", - "qt", tv, - "q", - q, - "fl", - "*,score", - "tv.fl", - "test_basictv,test_offtv", - TermVectorComponent.COMPONENT_NAME, - "true", - TermVectorParams.TF, - "true"); + params( + "sort", + "id asc", + "q", + q, + "fl", + "*,score", + "tv.fl", + "test_basictv,test_offtv", + TermVectorComponent.COMPONENT_NAME, + "true", + TermVectorParams.TF, + "true")); // multi-valued tv.fl query( - "sort", - "id asc", - "qt", tv, - "q", - q, - "fl", - "*,score", - "tv.fl", - "test_basictv", - "tv.fl", - "test_offtv", - TermVectorComponent.COMPONENT_NAME, - "true", - TermVectorParams.TF, - "true"); + params( + "sort", + "id asc", + "q", + q, + "fl", + "*,score", + "tv.fl", + "test_basictv", + "tv.fl", + "test_offtv", + TermVectorComponent.COMPONENT_NAME, + "true", + TermVectorParams.TF, + "true")); // re-use fl glob query( - "sort", - "id desc", - "qt", tv, - "q", - q, - "fl", - "*,score", - TermVectorComponent.COMPONENT_NAME, - "true", - TermVectorParams.TF, - "true"); + params( + "sort", + "id desc", + "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, - "q", - q, - "fl", - "score,test_basictv,[docid],test_postv,val:sum(3,4)", - TermVectorComponent.COMPONENT_NAME, - "true", - TermVectorParams.TF, - "true"); + params( + "sort", + "id desc", + "q", + q, + "fl", + "score,test_basictv,[docid],test_postv,val:sum(3,4)", + TermVectorComponent.COMPONENT_NAME, + "true", + TermVectorParams.TF, + "true")); // re-use (multi-valued) fl, ignore things we can't handle query( - "sort", - "id desc", - "qt", tv, - "q", - q, - "fl", - "score,test_basictv", - "fl", - "[docid],test_postv,val:sum(3,4)", - TermVectorComponent.COMPONENT_NAME, - "true", - TermVectorParams.TF, - "true"); + params( + "sort", + "id desc", + "q", + q, + "fl", + "score,test_basictv", + "fl", + "[docid],test_postv,val:sum(3,4)", + TermVectorComponent.COMPONENT_NAME, + "true", + TermVectorParams.TF, + "true")); // test some other options query( - "sort", - "id asc", - "qt", tv, - "q", - q, - TermVectorComponent.COMPONENT_NAME, - "true", - TermVectorParams.TF, - "true", - TermVectorParams.DF, - "true", - TermVectorParams.OFFSETS, - "true", - TermVectorParams.POSITIONS, - "true", - TermVectorParams.TF_IDF, - "true"); + params( + "sort", + "id asc", + "q", + q, + TermVectorComponent.COMPONENT_NAME, + "true", + TermVectorParams.TF, + "true", + TermVectorParams.DF, + "true", + TermVectorParams.OFFSETS, + "true", + TermVectorParams.POSITIONS, + "true", + TermVectorParams.TF_IDF, + "true")); query( - "sort", - "id desc", - "qt", tv, - "q", - q, - TermVectorComponent.COMPONENT_NAME, - "true", - TermVectorParams.ALL, - "true"); + params( + "sort", + "id desc", + "q", + q, + TermVectorComponent.COMPONENT_NAME, + "true", + TermVectorParams.ALL, + "true")); query( - "sort", - "id desc", - "qt", tv, - "q", - q, - "rows", - 1, - ShardParams.DISTRIB_SINGLE_PASS, - "true", - TermVectorComponent.COMPONENT_NAME, - "true", - TermVectorParams.ALL, - "true"); + params( + "sort", + "id desc", + "q", + q, + "rows", + "1", + ShardParams.DISTRIB_SINGLE_PASS, + "true", + TermVectorComponent.COMPONENT_NAME, + "true", + TermVectorParams.ALL, + "true")); // per field stuff query( - "sort", - "id desc", - "qt", tv, - "q", - q, - TermVectorComponent.COMPONENT_NAME, - "true", - TermVectorParams.TF, - "true", - TermVectorParams.DF, - "true", - TermVectorParams.OFFSETS, - "true", - TermVectorParams.POSITIONS, - "true", - TermVectorParams.TF_IDF, - "true", - TermVectorParams.FIELDS, - "test_basictv,test_notv,test_postv,test_offtv,test_posofftv", - "f.test_posofftv." + TermVectorParams.POSITIONS, - "false", - "f.test_offtv." + TermVectorParams.OFFSETS, - "false", - "f.test_basictv." + TermVectorParams.DF, - "false", - "f.test_basictv." + TermVectorParams.TF, - "false", - "f.test_basictv." + TermVectorParams.TF_IDF, - "false"); + params( + "sort", + "id desc", + "q", + q, + TermVectorComponent.COMPONENT_NAME, + "true", + TermVectorParams.TF, + "true", + TermVectorParams.DF, + "true", + TermVectorParams.OFFSETS, + "true", + TermVectorParams.POSITIONS, + "true", + TermVectorParams.TF_IDF, + "true", + TermVectorParams.FIELDS, + "test_basictv,test_notv,test_postv,test_offtv,test_posofftv", + "f.test_posofftv." + TermVectorParams.POSITIONS, + "false", + "f.test_offtv." + TermVectorParams.OFFSETS, + "false", + "f.test_basictv." + TermVectorParams.DF, + "false", + "f.test_basictv." + TermVectorParams.TF, + "false", + "f.test_basictv." + TermVectorParams.TF_IDF, + "false")); } } } diff --git a/solr/core/src/test/org/apache/solr/handler/component/UpdateLogCloudTest.java b/solr/core/src/test/org/apache/solr/handler/component/UpdateLogCloudTest.java index c36da38c8cd4..fcc0efde3ba5 100644 --- a/solr/core/src/test/org/apache/solr/handler/component/UpdateLogCloudTest.java +++ b/solr/core/src/test/org/apache/solr/handler/component/UpdateLogCloudTest.java @@ -129,7 +129,7 @@ public void test() throws Exception { @SuppressWarnings("unchecked") private void implTest(SolrClient solrClient, int numExpected) throws Exception { - final QueryRequest reqV = new QueryRequest(params("qt", "/get", "getVersions", "12345")); + final QueryRequest reqV = new QueryRequest("/get", params("getVersions", "12345")); final NamedList rspV = solrClient.request(reqV, COLLECTION); final List versions = (List) rspV.get("versions"); assertEquals(versions.toString(), numExpected, versions.size()); @@ -145,9 +145,8 @@ private void implTest(SolrClient solrClient, int numExpected) throws Exception { for (boolean skipDbq : new boolean[] {false, true}) { final QueryRequest reqU = new QueryRequest( + "/get", params( - "qt", - "/get", "getUpdates", minVersion + "..." + maxVersion, "skipDbq", diff --git a/solr/core/src/test/org/apache/solr/search/json/TestJsonRequestWithEdismaxDefType.java b/solr/core/src/test/org/apache/solr/search/json/TestJsonRequestWithEdismaxDefType.java index 806c57f72c87..9ff6bd8db810 100644 --- a/solr/core/src/test/org/apache/solr/search/json/TestJsonRequestWithEdismaxDefType.java +++ b/solr/core/src/test/org/apache/solr/search/json/TestJsonRequestWithEdismaxDefType.java @@ -66,7 +66,7 @@ private static void addDocs(SolrClient client) throws Exception { private static void doQuery(SolrClient client) throws Exception { final var jsonQuery = "{\"query\":{\"bool\":{\"should\":[{\"lucene\":{\"query\":\"id:1\"}}, \"id:2\"]}}}"; - final var req = new QueryRequest(params("json", jsonQuery, "qt", "/query"), METHOD.POST); + final var req = new QueryRequest("/query", params("json", jsonQuery), METHOD.POST); final var rsp = req.process(client); assertEquals(2, rsp.getResults().getNumFound()); } diff --git a/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java b/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java index ebb46d43e816..9e733abc19ec 100644 --- a/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java +++ b/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java @@ -421,13 +421,10 @@ void assertSync(SolrClient client, int numVersions, boolean expectedResult, Stri throws IOException, SolrServerException { QueryRequest qr = new QueryRequest( + "/get", params( - "qt", - "/get", - "getVersions", - Integer.toString(numVersions), - "sync", - StrUtils.join(Arrays.asList(syncWith), ','))); + "getVersions", Integer.toString(numVersions), + "sync", StrUtils.join(Arrays.asList(syncWith), ','))); NamedList rsp = client.request(qr); assertEquals(expectedResult, (Boolean) rsp.get("sync")); } diff --git a/solr/core/src/test/org/apache/solr/update/PeerSyncWithBufferUpdatesTest.java b/solr/core/src/test/org/apache/solr/update/PeerSyncWithBufferUpdatesTest.java index f1fa55871153..d3932f7a3048 100644 --- a/solr/core/src/test/org/apache/solr/update/PeerSyncWithBufferUpdatesTest.java +++ b/solr/core/src/test/org/apache/solr/update/PeerSyncWithBufferUpdatesTest.java @@ -193,13 +193,8 @@ void assertSync(SolrClient client, int numVersions, String syncWith) throws IOException, SolrServerException { QueryRequest qr = new QueryRequest( - params( - "qt", - "/get", - "getVersions", - Integer.toString(numVersions), - "syncWithLeader", - syncWith)); + "/get", + params("getVersions", Integer.toString(numVersions), "syncWithLeader", syncWith)); NamedList rsp = client.request(qr); assertEquals(true, rsp.get("syncWithLeader")); } diff --git a/solr/core/src/test/org/apache/solr/update/PeerSyncWithIndexFingerprintCachingTest.java b/solr/core/src/test/org/apache/solr/update/PeerSyncWithIndexFingerprintCachingTest.java index 02e62252efac..b08f57641272 100644 --- a/solr/core/src/test/org/apache/solr/update/PeerSyncWithIndexFingerprintCachingTest.java +++ b/solr/core/src/test/org/apache/solr/update/PeerSyncWithIndexFingerprintCachingTest.java @@ -91,8 +91,7 @@ public void test() throws Exception { IndexFingerprint getFingerprint(SolrClient client, long maxVersion) throws IOException, SolrServerException { - QueryRequest qr = - new QueryRequest(params("qt", "/get", "getFingerprint", Long.toString(maxVersion))); + QueryRequest qr = new QueryRequest("/get", params("getFingerprint", Long.toString(maxVersion))); NamedList rsp = client.request(qr); return IndexFingerprint.fromObject(rsp.get("fingerprint")); } @@ -101,13 +100,10 @@ void assertSync(SolrClient client, int numVersions, String... syncWith) throws IOException, SolrServerException { QueryRequest qr = new QueryRequest( + "/get", params( - "qt", - "/get", - "getVersions", - Integer.toString(numVersions), - "sync", - StrUtils.join(Arrays.asList(syncWith), ','))); + "getVersions", Integer.toString(numVersions), + "sync", StrUtils.join(Arrays.asList(syncWith), ','))); NamedList rsp = client.request(qr); assertEquals(true, rsp.get("sync")); } diff --git a/solr/core/src/test/org/apache/solr/update/PeerSyncWithLeaderAndIndexFingerprintCachingTest.java b/solr/core/src/test/org/apache/solr/update/PeerSyncWithLeaderAndIndexFingerprintCachingTest.java index 0f048e79c47f..6b0d5365eebc 100644 --- a/solr/core/src/test/org/apache/solr/update/PeerSyncWithLeaderAndIndexFingerprintCachingTest.java +++ b/solr/core/src/test/org/apache/solr/update/PeerSyncWithLeaderAndIndexFingerprintCachingTest.java @@ -32,13 +32,10 @@ void assertSync(SolrClient client, int numVersions, String... syncWith) throws IOException, SolrServerException { QueryRequest qr = new QueryRequest( + "/get", params( - "qt", - "/get", - "getVersions", - Integer.toString(numVersions), - "syncWithLeader", - StrUtils.join(Arrays.asList(syncWith), ','))); + "getVersions", Integer.toString(numVersions), + "syncWithLeader", StrUtils.join(Arrays.asList(syncWith), ','))); @SuppressWarnings({"rawtypes"}) NamedList rsp = client.request(qr); assertEquals(true, (Boolean) rsp.get("syncWithLeader")); diff --git a/solr/core/src/test/org/apache/solr/update/PeerSyncWithLeaderTest.java b/solr/core/src/test/org/apache/solr/update/PeerSyncWithLeaderTest.java index 6e83e278c632..c84cbd51ba38 100644 --- a/solr/core/src/test/org/apache/solr/update/PeerSyncWithLeaderTest.java +++ b/solr/core/src/test/org/apache/solr/update/PeerSyncWithLeaderTest.java @@ -53,13 +53,10 @@ void assertSync(SolrClient client, int numVersions, boolean expectedResult, Stri throws IOException, SolrServerException { QueryRequest qr = new QueryRequest( + "/get", params( - "qt", - "/get", - "getVersions", - Integer.toString(numVersions), - "syncWithLeader", - StrUtils.join(Arrays.asList(syncWith), ','))); + "getVersions", Integer.toString(numVersions), + "syncWithLeader", StrUtils.join(Arrays.asList(syncWith), ','))); NamedList rsp = client.request(qr); assertEquals(expectedResult, rsp.get("syncWithLeader")); }