diff options
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/ranking/PreparedInput.java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/ranking/PreparedInput.java | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/ranking/PreparedInput.java b/container-search/src/main/java/com/yahoo/search/ranking/PreparedInput.java index 5491724cc08..914635fef59 100644 --- a/container-search/src/main/java/com/yahoo/search/ranking/PreparedInput.java +++ b/container-search/src/main/java/com/yahoo/search/ranking/PreparedInput.java @@ -13,16 +13,13 @@ import com.yahoo.tensor.Tensor; import com.yahoo.data.access.helpers.MatchFeatureData; import com.yahoo.data.access.helpers.MatchFeatureFilter; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.function.Supplier; import java.util.logging.Logger; record PreparedInput(String name, Tensor value) { - static List<PreparedInput> findFromQuery(Query query, Collection<String> queryFeatures) { + static List<PreparedInput> findFromQuery(Query query, Collection<String> queryFeatures, Map<String, Tensor> defaultValues) { List<PreparedInput> result = new ArrayList<>(); var ranking = query.getRanking(); var rankFeatures = ranking.getFeatures(); @@ -36,6 +33,12 @@ record PreparedInput(String name, Tensor value) { feature = rankFeatures.getTensor(needed); } if (feature.isEmpty()) { + var t = defaultValues.get(needed); + if (t != null) { + feature = Optional.of(t); + } + } + if (feature.isEmpty()) { throw new IllegalArgumentException("missing query feature: " + queryFeatureName); } result.add(new PreparedInput(needed, feature.get())); |