| /* |
| * 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 org.apache.lucene.util.Constants; |
| |
| import org.apache.lucene.util.TestUtil; |
| import org.apache.solr.BaseDistributedSearchTestCase; |
| import org.apache.solr.common.params.ShardParams; |
| import org.apache.solr.common.params.TermVectorParams; |
| import org.apache.solr.search.stats.ExactStatsCache; |
| import org.apache.solr.search.stats.LRUStatsCache; |
| import org.apache.solr.search.stats.LocalStatsCache; |
| import org.junit.AfterClass; |
| import org.junit.BeforeClass; |
| import org.junit.Test; |
| |
| public class TermVectorComponentDistributedTest extends BaseDistributedSearchTestCase { |
| @BeforeClass |
| public static void betterNotBeJ9() { |
| assumeFalse("FIXME: SOLR-5792: This test fails under IBM J9", |
| Constants.JAVA_VENDOR.startsWith("IBM")); |
| int statsType = TestUtil.nextInt(random(), 1, 3); |
| if (statsType == 1) { |
| System.setProperty("solr.statsCache", ExactStatsCache.class.getName()); |
| } else if (statsType == 2) { |
| System.setProperty("solr.statsCache", LRUStatsCache.class.getName()); |
| } else { |
| System.setProperty("solr.statsCache", LocalStatsCache.class.getName()); |
| } |
| } |
| |
| @AfterClass |
| public static void afterClass() { |
| System.clearProperty("solr.statsCache"); |
| } |
| |
| @Test |
| public void test() throws Exception { |
| |
| handle.clear(); |
| handle.put("timestamp", SKIPVAL); |
| handle.put("maxScore", SKIPVAL); |
| handle.put("score", SKIPVAL); |
| handle.put("[docid]", SKIPVAL); |
| handle.put("_version_", SKIPVAL); // not a cloud test, but may use updateLog |
| |
| // SOLR-3720: TODO: TVC doesn't "merge" df and idf .. should it? |
| handle.put("df", SKIPVAL); |
| handle.put("tf-idf", SKIPVAL); |
| |
| index("id", "0", |
| "test_posofftv", "This is a title and another title", |
| "test_basictv", "This is a title and another title", |
| "test_notv", "This is a title and another title", |
| "test_postv", "This is a title and another title", |
| "test_offtv", "This is a title and another title" |
| ); |
| index("id", "1", |
| "test_posofftv", "The quick reb fox jumped over the lazy brown dogs.", |
| "test_basictv", "The quick reb fox jumped over the lazy brown dogs.", |
| "test_notv", "The quick reb fox jumped over the lazy brown dogs.", |
| "test_postv", "The quick reb fox jumped over the lazy brown dogs.", |
| "test_offtv", "The quick reb fox jumped over the lazy brown dogs." |
| ); |
| |
| index("id", "2", |
| "test_posofftv", "This is a document", |
| "test_basictv", "This is a document", |
| "test_notv", "This is a document", |
| "test_postv", "This is a document", |
| "test_offtv", "This is a document" |
| ); |
| index("id", "3", |
| "test_posofftv", "another document", |
| "test_basictv", "another document", |
| "test_notv", "another document", |
| "test_postv", "another document", |
| "test_offtv", "another document" |
| ); |
| //bunch of docs that are variants on blue |
| index("id", "4", |
| "test_posofftv", "blue", |
| "test_basictv", "blue", |
| "test_notv", "blue", |
| "test_postv", "blue", |
| "test_offtv", "blue" |
| ); |
| index("id", "5", |
| "test_posofftv", "blud", |
| "test_basictv", "blud", |
| "test_notv", "blud", |
| "test_postv", "blud", |
| "test_offtv", "blud" |
| ); |
| index("id", "6", |
| "test_posofftv", "boue", |
| "test_basictv", "boue", |
| "test_notv", "boue", |
| "test_postv", "boue", |
| "test_offtv", "boue" |
| ); |
| index("id", "7", |
| "test_posofftv", "glue", |
| "test_basictv", "glue", |
| "test_notv", "glue", |
| "test_postv", "glue", |
| "test_offtv", "glue" |
| ); |
| index("id", "8", |
| "test_posofftv", "blee", |
| "test_basictv", "blee", |
| "test_notv", "blee", |
| "test_postv", "blee", |
| "test_offtv", "blee" |
| ); |
| index("id", "9", |
| "test_posofftv", "blah", |
| "test_basictv", "blah", |
| "test_notv", "blah", |
| "test_postv", "blah", |
| "test_offtv", "blah" |
| ); |
| |
| commit(); |
| |
| final String tv = "tvrh"; |
| |
| 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"); |
| |
| // 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"); |
| |
| // 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"); |
| // re-use fl glob |
| query("sort", "id desc", |
| "qt",tv, |
| "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"); |
| |
| // 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"); |
| |
| // 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"); |
| |
| query("sort", "id desc", |
| "qt",tv, |
| "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"); |
| |
| // 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"); |
| } |
| } |
| } |