aboutsummaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2023-03-01 09:32:52 +0000
committerArne Juul <arnej@yahooinc.com>2023-03-01 09:32:52 +0000
commitb354096f220e76d28776f40bb3b89d3a6c3911cf (patch)
tree0e25bb9e2ee9925bbef5d7fdc23c255868157b6a /container-search
parente245dd6a3fffddfb16667e039d538d1f230bccf6 (diff)
- fail component creation on invalid config.
- use Optional to signal that "empty" is a valid return value.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseRanker.java6
-rw-r--r--container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluator.java27
2 files changed, 13 insertions, 20 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseRanker.java b/container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseRanker.java
index 638bc13fb29..b72f81f1439 100644
--- a/container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseRanker.java
+++ b/container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseRanker.java
@@ -6,6 +6,7 @@ import ai.vespa.models.evaluation.Model;
import com.yahoo.component.annotation.Inject;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
+import com.yahoo.search.ranking.RankProfilesEvaluator.GlobalPhaseData;
import com.yahoo.search.result.Hit;
import com.yahoo.search.result.HitGroup;
import com.yahoo.tensor.Tensor;
@@ -33,9 +34,10 @@ public class GlobalPhaseRanker {
public void process(Query query, Result result, String schema) {
var proxy = factory.proxyForSchema(schema);
String rankProfile = query.getRanking().getProfile();
- var data = proxy.getGlobalPhaseData(rankProfile);
- if (data == null)
+ var optData = proxy.getGlobalPhaseData(rankProfile);
+ if (optData.isEmpty())
return;
+ GlobalPhaseData data = optData.get();
var functionEvaluatorSource = data.functionEvaluatorSource();
var prepared = findFromQuery(query, data.needInputs());
Supplier<Evaluator> supplier = () -> {
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 2057b50f0aa..2ca91a3ea91 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
@@ -15,8 +15,9 @@ import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
import com.yahoo.vespa.config.search.core.RankingExpressionsConfig;
import java.util.HashMap;
-import java.util.Map;
import java.util.List;
+import java.util.Map;
+import java.util.Optional;
import java.util.function.Supplier;
import java.util.logging.Logger;
@@ -65,8 +66,8 @@ public class RankProfilesEvaluator extends AbstractComponent {
private Map<String, GlobalPhaseData> profilesWithGlobalPhase = new HashMap<>();
- GlobalPhaseData getGlobalPhaseData(String rankProfile) {
- return profilesWithGlobalPhase.get(rankProfile);
+ Optional<GlobalPhaseData> getGlobalPhaseData(String rankProfile) {
+ return Optional.ofNullable(profilesWithGlobalPhase.get(rankProfile));
}
private void extractGlobalPhaseData(RankProfilesConfig rankProfilesConfig) {
@@ -78,23 +79,13 @@ public class RankProfilesEvaluator extends AbstractComponent {
for (var prop : rp.fef().property()) {
if (prop.name().equals("vespa.globalphase.rerankcount")) {
- try {
- rerankCount = Integer.valueOf(prop.value());
- } catch (NumberFormatException e) {
- logger.warning("bad vespa.globalphase.rerankcount '" + prop.value() +
- "' for rank profile " + name + ": " + e.getMessage());
- }
+ rerankCount = Integer.valueOf(prop.value());
}
if (prop.name().equals("vespa.rank.globalphase")) {
- try {
- var model = modelForRankProfile(name);
- functionEvaluatorSource = () -> model.evaluatorOf("globalphase");
- var evaluator = functionEvaluatorSource.get();
- needInputs = List.copyOf(evaluator.function().arguments());
- } catch (IllegalArgumentException e) {
- logger.warning("failed setting up global-phase for " + name + " because: " + e.getMessage());
- functionEvaluatorSource = null;
- }
+ var model = modelForRankProfile(name);
+ functionEvaluatorSource = () -> model.evaluatorOf("globalphase");
+ var evaluator = functionEvaluatorSource.get();
+ needInputs = List.copyOf(evaluator.function().arguments());
}
}
if (functionEvaluatorSource != null && needInputs != null) {