summaryrefslogtreecommitdiffstats
path: root/container-search/src/test
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@vespa.ai>2024-02-15 16:39:32 +0100
committerJon Bratseth <bratseth@vespa.ai>2024-02-15 16:39:32 +0100
commit4a3f24577249443b6fdaeea36b7b8110da107f06 (patch)
treea3eda6efcc2371c3a13d32b5112524388a175299 /container-search/src/test
parent55d29fa838e69cf5013deb4ca15f4b131d35876c (diff)
Resolve embed refs from query profile
Diffstat (limited to 'container-search/src/test')
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/RankProfileInputTest.java37
1 files changed, 36 insertions, 1 deletions
diff --git a/container-search/src/test/java/com/yahoo/search/query/RankProfileInputTest.java b/container-search/src/test/java/com/yahoo/search/query/RankProfileInputTest.java
index 429b8d1c6cb..3f9beacffe8 100644
--- a/container-search/src/test/java/com/yahoo/search/query/RankProfileInputTest.java
+++ b/container-search/src/test/java/com/yahoo/search/query/RankProfileInputTest.java
@@ -200,6 +200,28 @@ public class RankProfileInputTest {
"used in an embed() argument");
}
+ @Test
+ void testUnembeddedTensorRankFeatureInRequestReferencedFromAParameterSuppliedByQueryProfile() {
+ String text = "text to embed into a tensor";
+
+ var registry = new QueryProfileRegistry();
+ var profile = new QueryProfile("test");
+ profile.set("param1", text, registry);
+ registry.register(profile);
+ var cProfile = registry.compile().findQueryProfile("test");
+
+ Tensor embedding1 = Tensor.from("tensor<float>(x[5]):[3,7,4,0,0]]");
+
+ Map<String, Embedder> embedders = Map.of(
+ "emb1", new MockEmbedder(text, Language.UNKNOWN, embedding1)
+ );
+ assertEmbedQuery("embed(@param1)", embedding1, embedders, null, null, cProfile);
+ assertEmbedQuery("embed(emb1, @param1)", embedding1, embedders, null, null, cProfile);
+ assertEmbedQueryFails("embed(emb1, @noSuchParam)", embedding1, embedders,
+ "Could not resolve query parameter reference 'noSuchParam' " +
+ "used in an embed() argument");
+ }
+
private Query createTensor1Query(String tensorString, String profile, String additionalParams) {
return new Query.Builder()
.setSchemaInfo(createSchemaInfo())
@@ -223,7 +245,19 @@ public class RankProfileInputTest {
private void assertEmbedQuery(String embed, Tensor expected, Map<String, Embedder> embedders, String language) {
assertEmbedQuery(embed, expected, embedders, language, null);
}
- private void assertEmbedQuery(String embed, Tensor expected, Map<String, Embedder> embedders, String language, String param1Value) {
+ private void assertEmbedQuery(String embed,
+ Tensor expected,
+ Map<String, Embedder> embedders,
+ String language,
+ String param1Value) {
+ assertEmbedQuery(embed, expected, embedders, language, param1Value, null);
+ }
+ private void assertEmbedQuery(String embed,
+ Tensor expected,
+ Map<String, Embedder> embedders,
+ String language,
+ String param1Value,
+ CompiledQueryProfile queryProfile) {
String languageParam = language == null ? "" : "&language=" + language;
String param1 = param1Value == null ? "" : "&param1=" + urlEncode(param1Value);
@@ -239,6 +273,7 @@ public class RankProfileInputTest {
.setSchemaInfo(createSchemaInfo())
.setQueryProfile(createQueryProfile())
.setEmbedders(embedders)
+ .setQueryProfile(queryProfile)
.build();
assertEquals(0, query.errors().size());
assertEquals(expected, query.properties().get("ranking.features." + destination));