diff options
author | Jon Bratseth <bratseth@vespa.ai> | 2024-02-15 16:39:32 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@vespa.ai> | 2024-02-15 16:39:32 +0100 |
commit | 4a3f24577249443b6fdaeea36b7b8110da107f06 (patch) | |
tree | a3eda6efcc2371c3a13d32b5112524388a175299 /container-search/src/test | |
parent | 55d29fa838e69cf5013deb4ca15f4b131d35876c (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.java | 37 |
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 ? "" : "¶m1=" + 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)); |