From a81af2ebddb5fec15f089f63109188ebab98cb6c Mon Sep 17 00:00:00 2001 From: Bjørn Christian Seime Date: Tue, 7 Mar 2023 15:17:13 +0100 Subject: Only setup `RankProfilesEvaluator` for schemas with 'global-phase' --- .../com/yahoo/search/ranking/GlobalPhaseRanker.java | 19 +++++-------------- .../search/ranking/RankProfilesEvaluatorFactory.java | 11 +++++------ 2 files changed, 10 insertions(+), 20 deletions(-) (limited to 'container-search') 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 b72f81f1439..2c6ab9e9367 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 @@ -1,24 +1,16 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.search.ranking; -import ai.vespa.models.evaluation.FunctionEvaluator; -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; import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Logger; import java.util.function.Supplier; +import java.util.logging.Logger; public class GlobalPhaseRanker { @@ -32,12 +24,11 @@ public class GlobalPhaseRanker { } public void process(Query query, Result result, String schema) { - var proxy = factory.proxyForSchema(schema); String rankProfile = query.getRanking().getProfile(); - var optData = proxy.getGlobalPhaseData(rankProfile); - if (optData.isEmpty()) - return; - GlobalPhaseData data = optData.get(); + GlobalPhaseData data = factory.evaluatorForSchema(schema) + .flatMap(evaluator -> evaluator.getGlobalPhaseData(rankProfile)) + .orElse(null); + if (data == null) return; var functionEvaluatorSource = data.functionEvaluatorSource(); var prepared = findFromQuery(query, data.needInputs()); Supplier supplier = () -> { diff --git a/container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluatorFactory.java b/container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluatorFactory.java index edb05ed9788..33f2fb74da5 100644 --- a/container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluatorFactory.java +++ b/container-search/src/main/java/com/yahoo/search/ranking/RankProfilesEvaluatorFactory.java @@ -6,6 +6,8 @@ import com.yahoo.api.annotations.Beta; import com.yahoo.component.annotation.Inject; import com.yahoo.component.provider.ComponentRegistry; +import java.util.Optional; + /** * factory for model-evaluation proxies * @author arnej @@ -20,14 +22,11 @@ public class RankProfilesEvaluatorFactory { this.registry = registry; } - public RankProfilesEvaluator proxyForSchema(String schemaName) { - var component = registry.getComponent("ranking-expression-evaluator." + schemaName); - if (component == null) { - throw new IllegalArgumentException("ranking expression evaluator for schema '" + schemaName + "' not found"); - } - return component; + public Optional evaluatorForSchema(String schemaName) { + return Optional.ofNullable(registry.getComponent("ranking-expression-evaluator." + schemaName)); } + @Override public String toString() { var buf = new StringBuilder(); buf.append(this.getClass().getName()).append(" containing: ["); -- cgit v1.2.3