aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluator.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluator.java')
-rw-r--r--container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluator.java35
1 files changed, 6 insertions, 29 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluator.java b/container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluator.java
index a89f0a5c3ea..0ebb98af60e 100644
--- a/container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluator.java
+++ b/container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluator.java
@@ -1,4 +1,4 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.ranking;
@@ -63,40 +63,17 @@ public class RankProfilesEvaluator extends AbstractComponent {
return modelForRankProfile(rankProfile).evaluatorOf(functionName);
}
- static record GlobalPhaseData(Supplier<FunctionEvaluator> functionEvaluatorSource,
- Collection<String> matchFeaturesToHide,
- int rerankCount,
- List<String> needInputs) {}
+ private Map<String, GlobalPhaseSetup> profilesWithGlobalPhase = new HashMap<>();
- private Map<String, GlobalPhaseData> profilesWithGlobalPhase = new HashMap<>();
-
- Optional<GlobalPhaseData> getGlobalPhaseData(String rankProfile) {
+ Optional<GlobalPhaseSetup> getGlobalPhaseSetup(String rankProfile) {
return Optional.ofNullable(profilesWithGlobalPhase.get(rankProfile));
}
private void extractGlobalPhaseData(RankProfilesConfig rankProfilesConfig) {
for (var rp : rankProfilesConfig.rankprofile()) {
- String name = rp.name();
- Supplier<FunctionEvaluator> functionEvaluatorSource = null;
- int rerankCount = -1;
- List<String> needInputs = null;
- Set<String> namesToHide = new HashSet<>();
- for (var prop : rp.fef().property()) {
- if (prop.name().equals("vespa.globalphase.rerankcount")) {
- rerankCount = Integer.valueOf(prop.value());
- }
- if (prop.name().equals("vespa.rank.globalphase")) {
- var model = modelForRankProfile(name);
- functionEvaluatorSource = () -> model.evaluatorOf("globalphase");
- var evaluator = functionEvaluatorSource.get();
- needInputs = List.copyOf(evaluator.function().arguments());
- }
- if (prop.name().equals("vespa.hidden.matchfeature")) {
- namesToHide.add(prop.value());
- }
- }
- if (functionEvaluatorSource != null && needInputs != null) {
- profilesWithGlobalPhase.put(name, new GlobalPhaseData(functionEvaluatorSource, namesToHide, rerankCount, needInputs));
+ var setup = GlobalPhaseSetup.maybeMakeSetup(rp, this);
+ if (setup != null) {
+ profilesWithGlobalPhase.put(rp.name(), setup);
}
}
}