diff options
author | Arne Juul <arnej@yahooinc.com> | 2023-03-01 09:32:52 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2023-03-01 09:32:52 +0000 |
commit | b354096f220e76d28776f40bb3b89d3a6c3911cf (patch) | |
tree | 0e25bb9e2ee9925bbef5d7fdc23c255868157b6a /container-search | |
parent | e245dd6a3fffddfb16667e039d538d1f230bccf6 (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.java | 6 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluator.java | 27 |
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) { |