/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.solr.handler.component; import java.io.File; import org.apache.lucene.util.Constants; import org.apache.solr.BaseDistributedSearchTestCase; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.impl.BinaryResponseParser; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.params.CommonParams; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; /** * */ public class DistributedQueryElevationComponentTest extends BaseDistributedSearchTestCase { @BeforeClass public static void betterNotBeJ9() { assumeFalse("FIXME: SOLR-5791: This test fails under IBM J9", Constants.JAVA_VENDOR.startsWith("IBM")); } public DistributedQueryElevationComponentTest() { stress = 0; // TODO: a better way to do this? configString = "solrconfig-elevate.xml"; schemaString = "schema11.xml"; } @BeforeClass public static void beforeClass() { System.setProperty("elevate.data.file", "elevate.xml"); File parent = new File(TEST_HOME(), "conf"); } @AfterClass public static void afterClass() { System.clearProperty("elevate.data.file"); } @Test @ShardsFixed(num = 3) public void test() throws Exception { del("*:*"); indexr(id,"1", "int_i", "1", "text", "XXXX XXXX", "field_t", "anything"); indexr(id,"2", "int_i", "2", "text", "YYYY YYYY", "plow_t", "rake"); indexr(id,"3", "int_i", "3", "text", "ZZZZ ZZZZ"); indexr(id,"4", "int_i", "4", "text", "XXXX XXXX"); indexr(id,"5", "int_i", "5", "text", "ZZZZ ZZZZ ZZZZ"); indexr(id,"6", "int_i", "6", "text", "ZZZZ"); index_specific(2, id, "7", "int_i", "7", "text", "solr"); commit(); handle.put("explain", SKIPVAL); handle.put("debug", SKIPVAL); handle.put("maxScore", SKIPVAL); handle.put("timestamp", SKIPVAL); handle.put("score", SKIPVAL); handle.put("wt", SKIP); handle.put("distrib", SKIP); 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]"); query("q", "ZZZZ", "qt", "/elevate", "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"); 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("q", "XXXX", "qt", "/elevate", "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); assertEquals(6.0f, document.getFieldValue("id")); assertEquals(true, document.getFieldValue("[elevated]")); // Force javabin format final String clientUrl = ((HttpSolrClient)clients.get(0)).getBaseURL(); HttpSolrClient client = getHttpSolrClient(clientUrl); client.setParser(new BinaryResponseParser()); SolrQuery solrQuery = new SolrQuery("XXXX").setParam("qt", "/elevate").setParam("shards.qt", "/elevate").setRows(500).setFields("id,[elevated]") .setParam("enableElevation", "true").setParam("forceElevation", "true").setParam("elevateIds", "6", "wt", "javabin") .setSort("id", SolrQuery.ORDER.desc); setDistributedParams(solrQuery); response = client.query(solrQuery); client.close(); assertTrue(response.getResults().getNumFound() > 0); document = response.getResults().get(0); assertEquals(6.0f, document.getFieldValue("id")); assertEquals(true, document.getFieldValue("[elevated]")); } @Override protected void indexr(Object... fields) throws Exception { SolrInputDocument doc = new SolrInputDocument(); addFields(doc, fields); indexDoc(doc); } }