summaryrefslogtreecommitdiffstats
path: root/container-search/src/test/java/com
diff options
context:
space:
mode:
authorArne Juul <arnej@vespa.ai>2023-10-18 11:32:46 +0000
committerArne Juul <arnej@vespa.ai>2023-10-18 13:54:06 +0000
commit9af2a2c2b78510bec7b4f8017bcb98e1da7e3e2a (patch)
tree4bfd7bbbc999a0251ab55e6a189720cc74f61ebe /container-search/src/test/java/com
parent24f8d5ab63a193aeb6660eafb83a22956a679a75 (diff)
add defaults extraction and unit test
Diffstat (limited to 'container-search/src/test/java/com')
-rw-r--r--container-search/src/test/java/com/yahoo/search/ranking/GlobalPhaseSetupTest.java62
1 files changed, 62 insertions, 0 deletions
diff --git a/container-search/src/test/java/com/yahoo/search/ranking/GlobalPhaseSetupTest.java b/container-search/src/test/java/com/yahoo/search/ranking/GlobalPhaseSetupTest.java
new file mode 100644
index 00000000000..7f4dfc4c9a7
--- /dev/null
+++ b/container-search/src/test/java/com/yahoo/search/ranking/GlobalPhaseSetupTest.java
@@ -0,0 +1,62 @@
+// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.search.ranking;
+
+import com.yahoo.config.subscription.ConfigGetter;
+import com.yahoo.filedistribution.fileacquirer.MockFileAcquirer;
+import com.yahoo.tensor.Tensor;
+import com.yahoo.vespa.config.search.RankProfilesConfig;
+import com.yahoo.vespa.config.search.core.OnnxModelsConfig;
+import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
+import com.yahoo.vespa.config.search.core.RankingExpressionsConfig;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+public class GlobalPhaseSetupTest {
+ private static final String CONFIG_DIR = "src/test/resources/config/";
+
+ @SuppressWarnings("deprecation")
+ RankProfilesConfig readConfig(String subDir) {
+ String cfgId = "file:" + CONFIG_DIR + subDir + "/rank-profiles.cfg";
+ return ConfigGetter.getConfig(RankProfilesConfig.class, cfgId);
+ }
+
+ @Test void mediumAdvancedSetup() {
+ RankProfilesConfig rpCfg = readConfig("medium");
+ assertEquals(1, rpCfg.rankprofile().size());
+ RankProfilesEvaluator rpEvaluator = createEvaluator(rpCfg);
+ var setup = GlobalPhaseSetup.maybeMakeSetup(rpCfg.rankprofile().get(0), rpEvaluator);
+ assertNotNull(setup);
+ assertEquals(42, setup.rerankCount);
+ assertEquals(0, setup.normalizers.size());
+ assertEquals(9, setup.matchFeaturesToHide.size());
+ assertEquals(1, setup.globalPhaseEvalSpec.fromQuery().size());
+ assertEquals(9, setup.globalPhaseEvalSpec.fromMF().size());
+ }
+
+ @Test void queryFeaturesWithDefaults() {
+ RankProfilesConfig rpCfg = readConfig("qf_defaults");
+ assertEquals(1, rpCfg.rankprofile().size());
+ RankProfilesEvaluator rpEvaluator = createEvaluator(rpCfg);
+ var setup = GlobalPhaseSetup.maybeMakeSetup(rpCfg.rankprofile().get(0), rpEvaluator);
+ assertNotNull(setup);
+ assertEquals(0, setup.normalizers.size());
+ assertEquals(0, setup.matchFeaturesToHide.size());
+ assertEquals(5, setup.globalPhaseEvalSpec.fromQuery().size());
+ assertEquals(2, setup.globalPhaseEvalSpec.fromMF().size());
+ assertEquals(5, setup.defaultValues.size());
+ assertEquals(Tensor.from(0.0), setup.defaultValues.get("query(w_no_def)"));
+ assertEquals(Tensor.from(1.0), setup.defaultValues.get("query(w_has_def)"));
+ assertEquals(Tensor.from("tensor(m{}):{}"), setup.defaultValues.get("query(m_no_def)"));
+ assertEquals(Tensor.from("tensor(v[3]):[0,0,0]"), setup.defaultValues.get("query(v_no_def)"));
+ assertEquals(Tensor.from("tensor(v[3]):[2,0.25,1.5]"), setup.defaultValues.get("query(v_has_def)"));
+ }
+
+ private RankProfilesEvaluator createEvaluator(RankProfilesConfig config) {
+ RankingConstantsConfig constantsConfig = new RankingConstantsConfig.Builder().build();
+ RankingExpressionsConfig expressionsConfig = new RankingExpressionsConfig.Builder().build();
+ OnnxModelsConfig onnxModelsConfig = new OnnxModelsConfig.Builder().build();
+ return new RankProfilesEvaluator(config, constantsConfig, expressionsConfig, onnxModelsConfig, MockFileAcquirer.returnFile(null));
+ }
+}