aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'container-search/src/test')
-rwxr-xr-xcontainer-search/src/test/java/ai/vespa/search/llm/LLMSearcherTest.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/QueryCanonicalizerTestCase.java9
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/test/QueryTestCase.java4
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterCoverageTest.java17
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java6
-rw-r--r--container-search/src/test/java/com/yahoo/search/querytransform/WeakAndReplacementSearcherTestCase.java9
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/EventRendererTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/schema/SchemaInfoTester.java4
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchers/OpportunisticWeakAndSearcherTestCase.java42
-rw-r--r--container-search/src/test/java/com/yahoo/search/significance/model/docv1.json18
-rw-r--r--container-search/src/test/java/com/yahoo/search/significance/model/docv2.json31
-rw-r--r--container-search/src/test/java/com/yahoo/search/significance/model/en.json21
-rw-r--r--container-search/src/test/java/com/yahoo/search/significance/test/SignificanceSearcherTest.java80
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java5
-rw-r--r--container-search/src/test/java/com/yahoo/select/SelectTestCase.java18
-rw-r--r--container-search/src/test/java/com/yahoo/vespa/streamingvisitors/StreamingSearcherTestCase.java1
17 files changed, 229 insertions, 42 deletions
diff --git a/container-search/src/test/java/ai/vespa/search/llm/LLMSearcherTest.java b/container-search/src/test/java/ai/vespa/search/llm/LLMSearcherTest.java
index 3baa9715c34..2cc72a43f43 100755
--- a/container-search/src/test/java/ai/vespa/search/llm/LLMSearcherTest.java
+++ b/container-search/src/test/java/ai/vespa/search/llm/LLMSearcherTest.java
@@ -13,6 +13,7 @@ import com.yahoo.search.Result;
import com.yahoo.search.Searcher;
import com.yahoo.search.result.EventStream;
import com.yahoo.search.searchchain.Execution;
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import java.net.URLEncoder;
@@ -127,6 +128,7 @@ public class LLMSearcherTest {
}
@Test
+ @Disabled
public void testAsyncGeneration() {
var executor = Executors.newFixedThreadPool(2);
var sb = new StringBuilder();
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/QueryCanonicalizerTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/QueryCanonicalizerTestCase.java
index 0516a8a227a..a662c445bc7 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/test/QueryCanonicalizerTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/test/QueryCanonicalizerTestCase.java
@@ -22,6 +22,15 @@ public class QueryCanonicalizerTestCase {
}
@Test
+ void testNoCanonicalizationWithWhereTrue() {
+ CompositeItem root = new AndItem();
+
+ root.addItem(new TrueItem());
+ root.addItem(new WordItem("word"));
+ assertCanonicalized("AND TRUE word", null, root);
+ }
+
+ @Test
void testSingleLevelSingleItemNonReducibleComposite() {
CompositeItem root = new WeakAndItem();
diff --git a/container-search/src/test/java/com/yahoo/prelude/test/QueryTestCase.java b/container-search/src/test/java/com/yahoo/prelude/test/QueryTestCase.java
index 8ced5c81372..12110e2d2f3 100644
--- a/container-search/src/test/java/com/yahoo/prelude/test/QueryTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/test/QueryTestCase.java
@@ -220,7 +220,7 @@ public class QueryTestCase {
void testNegativeHitValue() {
assertQueryError(
"?query=test&hits=-1",
- "Could not set 'hits' to '-1': Must be a positive number");
+ "Could not set 'hits' to '-1': 'hits' must be a positive number, not -1");
}
@Test
@@ -241,7 +241,7 @@ public class QueryTestCase {
void testNegativeOffsetValue() {
assertQueryError(
"?query=test&offset=-1",
- "Could not set 'offset' to '-1': Must be a positive number");
+ "Could not set 'offset' to '-1': 'offset' must be a positive number, not -1");
}
@Test
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterCoverageTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterCoverageTest.java
index 2a9eaa86674..e7085b093f3 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterCoverageTest.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterCoverageTest.java
@@ -48,6 +48,19 @@ public class SearchClusterCoverageTest {
}
@Test
+ void three_groups_of_which_two_were_just_added() {
+ var tester = new SearchClusterTester(3, 3);
+
+ tester.setDocsPerNode(100, 0);
+ tester.setDocsPerNode(80, 1);
+ tester.setDocsPerNode(80, 2);
+ tester.pingIterationCompleted();
+ assertTrue(tester.group(0).hasSufficientCoverage());
+ assertFalse(tester.group(1).hasSufficientCoverage());
+ assertFalse(tester.group(2).hasSufficientCoverage());
+ }
+
+ @Test
void three_groups_one_missing_docs_but_too_few() {
var tester = new SearchClusterTester(3, 3);
@@ -65,6 +78,10 @@ public class SearchClusterCoverageTest {
var tester = new SearchClusterTester(3, 3);
tester.setDocsPerNode(100, 0);
+ tester.setDocsPerNode(100, 1);
+ tester.setDocsPerNode(100, 2);
+ tester.pingIterationCompleted();
+ tester.setDocsPerNode(100, 0);
tester.setDocsPerNode(150, 1);
tester.setDocsPerNode(100, 2);
tester.pingIterationCompleted();
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java
index 1b36c2b8151..8ac4f067876 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java
@@ -200,8 +200,6 @@ public class SearchClusterTest {
@Test
void requireThatVipStatusIsDefaultDownWithLocalDispatch() {
try (State test = new State("cluster.1", 1, HostName.getLocalhost(), "b")) {
- assertTrue(test.searchCluster.localCorpusDispatchTarget().isPresent());
-
assertFalse(test.vipStatus.isInRotation());
test.waitOneFullPingRound();
assertTrue(test.vipStatus.isInRotation());
@@ -211,8 +209,6 @@ public class SearchClusterTest {
@Test
void requireThatVipStatusStaysUpWithLocalDispatchAndClusterSize1() {
try (State test = new State("cluster.1", 1, HostName.getLocalhost())) {
- assertTrue(test.searchCluster.localCorpusDispatchTarget().isPresent());
-
assertFalse(test.vipStatus.isInRotation());
test.waitOneFullPingRound();
assertTrue(test.vipStatus.isInRotation());
@@ -225,8 +221,6 @@ public class SearchClusterTest {
@Test
void requireThatVipStatusIsDefaultDownWithLocalDispatchAndClusterSize2() {
try (State test = new State("cluster.1", 1, HostName.getLocalhost(), "otherhost")) {
- assertTrue(test.searchCluster.localCorpusDispatchTarget().isPresent());
-
assertFalse(test.vipStatus.isInRotation());
test.waitOneFullPingRound();
assertTrue(test.vipStatus.isInRotation());
diff --git a/container-search/src/test/java/com/yahoo/search/querytransform/WeakAndReplacementSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/querytransform/WeakAndReplacementSearcherTestCase.java
index 52f5fd0cafb..7b91a5d3c25 100644
--- a/container-search/src/test/java/com/yahoo/search/querytransform/WeakAndReplacementSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/querytransform/WeakAndReplacementSearcherTestCase.java
@@ -23,6 +23,7 @@ import static com.yahoo.search.querytransform.WeakAndReplacementSearcher.WAND_HI
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class WeakAndReplacementSearcherTestCase {
@@ -57,7 +58,7 @@ public class WeakAndReplacementSearcherTestCase {
Result result = buildExec().search(query);
Item root = TestUtils.getQueryTreeRoot(result);
assertFalse(orItemsExist(root));
- assertTrue(root instanceof WeakAndItem);
+ assertInstanceOf(WeakAndItem.class, root);
assertEquals(N, ((WeakAndItem) root).getN());
}
@@ -103,24 +104,22 @@ public class WeakAndReplacementSearcherTestCase {
if (item1 != item2) {
return false;
}
- if (!(item1 instanceof CompositeItem)) {
+ if (!(item1 instanceof CompositeItem compositeItem1)) {
return true;
}
- CompositeItem compositeItem1 = (CompositeItem) item1;
CompositeItem compositeItem2 = (CompositeItem) item2;
return IntStream.range(0, compositeItem1.getItemCount())
.allMatch(i -> deepEquals(compositeItem1.getItem(i), compositeItem2.getItem(i)));
}
private boolean orItemsExist(Item item) {
- if (!(item instanceof CompositeItem)) {
+ if (!(item instanceof CompositeItem compositeItem)) {
return false;
}
if (item instanceof OrItem) {
return true;
}
- CompositeItem compositeItem = (CompositeItem) item;
return compositeItem.items().stream().anyMatch(this::orItemsExist);
}
diff --git a/container-search/src/test/java/com/yahoo/search/rendering/EventRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/EventRendererTestCase.java
index c0a677b2094..2cfb6552379 100644
--- a/container-search/src/test/java/com/yahoo/search/rendering/EventRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/rendering/EventRendererTestCase.java
@@ -141,7 +141,7 @@ public class EventRendererTestCase {
});
assertFalse(future.isDone());
result = render(new Result(new Query(), newHitGroup(tokenStream, "token_stream")));
- assertTrue(future.isDone()); // Renderer waits for async completion
+ future.join(); // Renderer waits for async completion
} finally {
executor.shutdownNow();
diff --git a/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
index ffa6c82e941..611df6ad284 100644
--- a/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
@@ -1532,7 +1532,7 @@ public class JsonRendererTestCase {
+ "}";
assertEquals(
"Unexpected character ('a' (code 97)): was expecting comma to separate Object entries\n" +
- " at [Source: (String)\"{ \"root\": { \"invalidvalue\": 1adsf, }}\"; line: 1, column: 41]",
+ " at [Source: (String)\"{ \"root\": { \"invalidvalue\": 1adsf, }}\"; line: 1, column: 40]",
validateJSON(json));
}
diff --git a/container-search/src/test/java/com/yahoo/search/schema/SchemaInfoTester.java b/container-search/src/test/java/com/yahoo/search/schema/SchemaInfoTester.java
index 3e98b911fc8..2ba399cf42d 100644
--- a/container-search/src/test/java/com/yahoo/search/schema/SchemaInfoTester.java
+++ b/container-search/src/test/java/com/yahoo/search/schema/SchemaInfoTester.java
@@ -77,6 +77,7 @@ public class SchemaInfoTester {
.addInput("query(myTensor1)", InputType.fromSpec("tensor(x[10])"))
.build())
.add(new RankProfile.Builder("bOnly")
+ .setUseSignificanceModel(true)
.addInput("query(myTensor1)", InputType.fromSpec("tensor(a{},b{})"))
.build())
.build());
@@ -129,7 +130,8 @@ public class SchemaInfoTester {
rankProfileInconsistentB.input(new SchemaInfoConfig.Schema.Rankprofile.Input.Builder().name("query(myTensor1)").type("tensor(x[10])"));
schemaB.rankprofile(rankProfileInconsistentB);
var rankProfileBOnly = new SchemaInfoConfig.Schema.Rankprofile.Builder();
- rankProfileBOnly.name("bOnly");
+ rankProfileBOnly.name("bOnly")
+ .significance(new SchemaInfoConfig.Schema.Rankprofile.Significance.Builder().useModel(true));
rankProfileBOnly.input(new SchemaInfoConfig.Schema.Rankprofile.Input.Builder().name("query(myTensor1)").type("tensor(a{},b{})"));
schemaB.rankprofile(rankProfileBOnly);
diff --git a/container-search/src/test/java/com/yahoo/search/searchers/OpportunisticWeakAndSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/searchers/OpportunisticWeakAndSearcherTestCase.java
new file mode 100644
index 00000000000..c099cf437f8
--- /dev/null
+++ b/container-search/src/test/java/com/yahoo/search/searchers/OpportunisticWeakAndSearcherTestCase.java
@@ -0,0 +1,42 @@
+// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+package com.yahoo.search.searchers;
+
+import com.yahoo.prelude.query.AndItem;
+import com.yahoo.prelude.query.CompositeItem;
+import com.yahoo.prelude.query.Item;
+import com.yahoo.prelude.query.OrItem;
+import com.yahoo.prelude.query.WeakAndItem;
+import com.yahoo.prelude.query.WordItem;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+
+public class OpportunisticWeakAndSearcherTestCase {
+ private static Item buildQueryItem(CompositeItem root, CompositeItem injectAtLevel2) {
+ root.addItem(new WordItem("text"));
+ injectAtLevel2.addItem(new WordItem("a"));
+ injectAtLevel2.addItem(new WordItem("b"));
+ root.addItem(injectAtLevel2);
+ return root;
+ }
+
+ @Test
+ public void requireThatWeakAndIsDetected() {
+ assertEquals(-1, OpportunisticWeakAndSearcher.targetHits(new OrItem()));
+ assertEquals(33, OpportunisticWeakAndSearcher.targetHits(new WeakAndItem(33)));
+ assertEquals(77, OpportunisticWeakAndSearcher.targetHits(buildQueryItem(new OrItem(), new WeakAndItem(77))));
+ assertEquals(77, OpportunisticWeakAndSearcher.targetHits(buildQueryItem(new AndItem(), new WeakAndItem(77))));
+ assertEquals(-1, OpportunisticWeakAndSearcher.targetHits(buildQueryItem(new OrItem(), new AndItem())));
+ }
+
+ @Test
+ public void requireThatWeakAndIsReplacedWithAnd() {
+ assertEquals(buildQueryItem(new OrItem(), new AndItem()),
+ OpportunisticWeakAndSearcher.weakAnd2AndRecurse(buildQueryItem(new OrItem(), new WeakAndItem())));
+ assertEquals(buildQueryItem(new AndItem(), new AndItem()),
+ OpportunisticWeakAndSearcher.weakAnd2AndRecurse(buildQueryItem(new AndItem(), new WeakAndItem())));
+ }
+
+}
diff --git a/container-search/src/test/java/com/yahoo/search/significance/model/docv1.json b/container-search/src/test/java/com/yahoo/search/significance/model/docv1.json
new file mode 100644
index 00000000000..d1fcf5bd411
--- /dev/null
+++ b/container-search/src/test/java/com/yahoo/search/significance/model/docv1.json
@@ -0,0 +1,18 @@
+{
+ "version" : "1.0",
+ "id" : "test::1",
+ "description" : "desc",
+ "languages" : {
+ "en": {
+ "description" : "english model",
+ "document-count" : 12,
+ "language" : "en",
+ "document-frequencies" : {
+ "usa" : 2,
+ "hello": 3,
+ "world": 5,
+ "test": 2
+ }
+ }
+ }
+}
diff --git a/container-search/src/test/java/com/yahoo/search/significance/model/docv2.json b/container-search/src/test/java/com/yahoo/search/significance/model/docv2.json
new file mode 100644
index 00000000000..7c751544803
--- /dev/null
+++ b/container-search/src/test/java/com/yahoo/search/significance/model/docv2.json
@@ -0,0 +1,31 @@
+{
+ "version" : "2.0",
+ "id" : "test::2",
+ "description" : "desc",
+ "languages" : {
+ "en": {
+ "description" : "english model",
+ "document-count" : 16,
+ "document-frequencies" : {
+ "usa" : 2,
+ "hello": 3,
+ "world": 5,
+ "test": 4,
+ "additional": 2
+ }
+ },
+ "nb": {
+ "description" : "norwegian model",
+ "document-count" : 20,
+ "document-frequencies" : {
+ "usa" : 2,
+ "hello": 10,
+ "verden": 5,
+ "test": 2,
+ "norge": 11,
+ "ja": 12,
+ "nei": 3
+ }
+ }
+ }
+}
diff --git a/container-search/src/test/java/com/yahoo/search/significance/model/en.json b/container-search/src/test/java/com/yahoo/search/significance/model/en.json
index 50bae5e3451..a0acd1747ce 100644
--- a/container-search/src/test/java/com/yahoo/search/significance/model/en.json
+++ b/container-search/src/test/java/com/yahoo/search/significance/model/en.json
@@ -2,13 +2,18 @@
"version" : "1.0",
"id" : "test::1",
"description" : "desc",
- "corpus-size" : 10,
- "language" : "en",
- "word-count" : 4,
- "frequencies" : {
- "usa" : 2,
- "hello": 3,
- "world": 5,
- "test": 2
+ "languages" : {
+ "en": {
+ "description" : "english model",
+ "document-count" : 16,
+ "language" : "en",
+ "document-frequencies" : {
+ "usa" : 2,
+ "hello": 3,
+ "world": 5,
+ "test": 2,
+ "additional": 2
+ }
+ }
}
}
diff --git a/container-search/src/test/java/com/yahoo/search/significance/test/SignificanceSearcherTest.java b/container-search/src/test/java/com/yahoo/search/significance/test/SignificanceSearcherTest.java
index 890db3abb51..eaa66755608 100644
--- a/container-search/src/test/java/com/yahoo/search/significance/test/SignificanceSearcherTest.java
+++ b/container-search/src/test/java/com/yahoo/search/significance/test/SignificanceSearcherTest.java
@@ -2,6 +2,7 @@
package com.yahoo.search.significance.test;
import com.yahoo.component.chain.Chain;
+import com.yahoo.config.subscription.ConfigGetter;
import com.yahoo.language.Language;
import com.yahoo.language.significance.SignificanceModel;
import com.yahoo.language.significance.SignificanceModelRegistry;
@@ -10,12 +11,19 @@ import com.yahoo.prelude.query.AndItem;
import com.yahoo.prelude.query.WordItem;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
+import com.yahoo.search.schema.DocumentSummary;
+import com.yahoo.search.schema.RankProfile;
+import com.yahoo.search.schema.Schema;
+import com.yahoo.search.schema.SchemaInfo;
import com.yahoo.search.searchchain.Execution;
import com.yahoo.search.significance.SignificanceSearcher;
+import com.yahoo.vespa.config.search.RankProfilesConfig;
import org.junit.jupiter.api.Test;
import java.nio.file.Path;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import static com.yahoo.test.JunitCompat.assertEquals;
@@ -29,12 +37,18 @@ public class SignificanceSearcherTest {
SignificanceModelRegistry significanceModelRegistry;
SignificanceSearcher searcher;
- public SignificanceSearcherTest() {
- HashMap<Language, Path> map = new HashMap<>();
- map.put(Language.ENGLISH, Path.of("src/test/java/com/yahoo/search/significance/model/en.json"));
- significanceModelRegistry = new DefaultSignificanceModelRegistry(map);
- searcher = new SignificanceSearcher(significanceModelRegistry);
+ public SignificanceSearcherTest() {
+ List<Path> models = new ArrayList<>();
+ models.add(Path.of("src/test/java/com/yahoo/search/significance/model/docv1.json"));
+ models.add(Path.of("src/test/java/com/yahoo/search/significance/model/docv2.json"));
+ var schema = new Schema.Builder("music")
+ .add(new DocumentSummary.Builder("default").build())
+ .add(new RankProfile.Builder("significance-ranking")
+ .setUseSignificanceModel(true)
+ .build());
+ significanceModelRegistry = new DefaultSignificanceModelRegistry(models);
+ searcher = new SignificanceSearcher(significanceModelRegistry, new SchemaInfo(List.of(schema.build()), List.of()));
}
private Execution createExecution(SignificanceSearcher searcher) {
@@ -47,8 +61,29 @@ public class SignificanceSearcherTest {
@Test
void testSignificanceValueOnSimpleQuery() {
+ Query q = new Query();
+ q.getRanking().setProfile("significance-ranking");
+ AndItem root = new AndItem();
+ WordItem tmp;
+ tmp = new WordItem("hello", true);
+ root.addItem(tmp);
+
+ q.getModel().getQueryTree().setRoot(root);
+
+ SignificanceModel model = significanceModelRegistry.getModel(Language.ENGLISH).get();
+ var helloFrequency = model.documentFrequency("hello");
+ var helloSignificanceValue = SignificanceSearcher.calculateIDF(helloFrequency.corpusSize(), helloFrequency.frequency());
+ Result r = createExecution(searcher).search(q);
+
+ root = (AndItem) r.getQuery().getModel().getQueryTree().getRoot();
+ WordItem w0 = (WordItem) root.getItem(0);
+ assertEquals(helloSignificanceValue, w0.getSignificance());
+ }
+ @Test
+ void testSignificanceValueOnSimpleANDQuery() {
Query q = new Query();
+ q.getRanking().setProfile("significance-ranking");
AndItem root = new AndItem();
WordItem tmp;
tmp = new WordItem("Hello", true);
@@ -79,6 +114,7 @@ public class SignificanceSearcherTest {
@Test
void testSignificanceValueOnRecursiveQuery() {
Query q = new Query();
+ q.getRanking().setProfile("significance-ranking");
AndItem root = new AndItem();
WordItem child1 = new WordItem("hello", true);
@@ -117,7 +153,7 @@ public class SignificanceSearcherTest {
assertEquals(helloSignificanceValue, w0.getSignificance());
assertEquals(testSignificanceValue, w1.getSignificance());
- assertEquals(SignificanceSearcher.calculateIDF(10, 2), w3.getSignificance());
+ assertEquals(SignificanceSearcher.calculateIDF(16, 2), w3.getSignificance());
}
@@ -150,4 +186,36 @@ public class SignificanceSearcherTest {
assertEquals(w0_1.getSignificance(), w1.getSignificance());
}
+
+ @Test
+ public void failsOnConflictingSignificanceConfiguration() {
+ var musicSchema = new Schema.Builder("music")
+ .add(new DocumentSummary.Builder("default").build())
+ .add(new RankProfile.Builder("significance-ranking")
+ .setUseSignificanceModel(true)
+ .build())
+ .build();
+ var albumSchema = new Schema.Builder("album")
+ .add(new DocumentSummary.Builder("default").build())
+ .add(new RankProfile.Builder("significance-ranking")
+ .setUseSignificanceModel(false)
+ .build())
+ .build();
+ var searcher = new SignificanceSearcher(
+ significanceModelRegistry, new SchemaInfo(List.of(musicSchema, albumSchema), List.of()));
+
+ var query = new Query();
+ query.getRanking().setProfile("significance-ranking");
+
+ var result = createExecution(searcher).search(query);
+ assertEquals(1, result.hits().getErrorHit().errors().size());
+
+ var errorMessage = result.hits().getError();
+ assertEquals("Inconsistent 'significance' configuration for the rank profile 'significance-ranking' in the schemas [music, album]. " +
+ "Use 'restrict' to limit the query to a subset of schemas " +
+ "(https://docs.vespa.ai/en/schemas.html#multiple-schemas). " +
+ "Specify same 'significance' configuration for all selected schemas " +
+ "(https://docs.vespa.ai/en/reference/schema-reference.html#significance).",
+ errorMessage.getDetailedMessage());
+ }
}
diff --git a/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
index 91f5984481a..1ba10a31638 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
@@ -17,6 +17,7 @@ import com.yahoo.prelude.query.Item;
import com.yahoo.prelude.query.MarkerWordItem;
import com.yahoo.prelude.query.NearestNeighborItem;
import com.yahoo.prelude.query.NumericInItem;
+import com.yahoo.prelude.query.OrItem;
import com.yahoo.prelude.query.PhraseItem;
import com.yahoo.prelude.query.PhraseSegmentItem;
import com.yahoo.prelude.query.PrefixItem;
@@ -30,6 +31,7 @@ import com.yahoo.prelude.query.SuffixItem;
import com.yahoo.prelude.query.WeakAndItem;
import com.yahoo.prelude.query.WordAlternativesItem;
import com.yahoo.prelude.query.WordItem;
+import com.yahoo.prelude.query.textualrepresentation.TextualQueryRepresentation;
import com.yahoo.prelude.querytransform.QueryRewrite;
import com.yahoo.processing.IllegalInputException;
import com.yahoo.search.Query;
@@ -557,8 +559,7 @@ public class YqlParserTestCase {
"title contains ({id: 1, connectivity: {\"id\": 3, weight: 7.0}}\"madonna\") " +
"and title contains ({id: 2}\"saint\") " +
"and title contains ({id: 3}\"angel\")");
- assertEquals("AND title:madonna title:saint title:angel",
- parsed.toString());
+ assertEquals("AND title:madonna title:saint title:angel", parsed.toString());
AndItem root = (AndItem) parsed.getRoot();
WordItem first = (WordItem) root.getItem(0);
WordItem second = (WordItem) root.getItem(1);
diff --git a/container-search/src/test/java/com/yahoo/select/SelectTestCase.java b/container-search/src/test/java/com/yahoo/select/SelectTestCase.java
index f863816dab2..b15663e0ce6 100644
--- a/container-search/src/test/java/com/yahoo/select/SelectTestCase.java
+++ b/container-search/src/test/java/com/yahoo/select/SelectTestCase.java
@@ -56,6 +56,11 @@ public class SelectTestCase {
//------------------------------------------------------------------- "where" tests
@Test
+ void testSimple() {
+ assertParse("{'contains' : ['title', 'madonna']}", "title:madonna");
+ }
+
+ @Test
void test_contains() {
ObjectNode json = jsonMapper.createObjectNode();
ArrayNode arrayNode = jsonMapper.createArrayNode();
@@ -65,16 +70,9 @@ public class SelectTestCase {
}
@Test
- void test() {
- assertParse("{'contains' : ['title', 'madonna']}",
- "title:madonna");
- }
-
-
- @Test
void testDottedFieldNames() {
assertParse("{ 'contains' : ['my.nested.title', 'madonna']}",
- "my.nested.title:madonna");
+ "my.nested.title:madonna");
}
@Test
@@ -360,12 +358,12 @@ public class SelectTestCase {
@Test
void testRaw() {
Item root = parseWhere("{ \"contains\":[ \"baz\", \"yoni jo dima\" ] }").getRoot();
- assertTrue(root instanceof WordItem);
+ assertInstanceOf(WordItem.class, root);
assertFalse(root instanceof ExactStringItem);
assertEquals("yoni jo dima", ((WordItem) root).getWord());
root = parseWhere("{ \"contains\": { \"children\" : [\"baz\", \"yoni jo dima\"], \"attributes\" : {\"grammar\" : \"raw\"} } }").getRoot();
- assertTrue(root instanceof WordItem);
+ assertInstanceOf(WordItem.class, root);
assertFalse(root instanceof ExactStringItem);
assertEquals("yoni jo dima", ((WordItem) root).getWord());
}
diff --git a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/StreamingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/StreamingSearcherTestCase.java
index cd9ef708920..25b54267242 100644
--- a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/StreamingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/StreamingSearcherTestCase.java
@@ -167,6 +167,7 @@ public class StreamingSearcherTestCase {
Query[] queries = new Query[4]; // Increase coverage
for (int i = 0; i<queries.length; i++) {
Query query = new Query(queryString);
+ query.setTimeout(1000);
if (i == 0) {
} else if (i == 1) {
query.getPresentation().setSummary("summary");