diff options
author | Arne Juul <arnej@vespa.ai> | 2024-02-21 14:31:27 +0000 |
---|---|---|
committer | Arne Juul <arnej@vespa.ai> | 2024-02-22 10:36:19 +0000 |
commit | 97eff1f15dcafe4a8d0229fa36b3e0448de2f4d6 (patch) | |
tree | 7bfa620f51263b3e2c6cc1bd319b922a0cb33a09 /config-model/src/main/java/com/yahoo | |
parent | 4f0947b6617f5c9ff0a133a1f12bb4a5b7d57bb6 (diff) |
allow inputs { query(foo) string }
Diffstat (limited to 'config-model/src/main/java/com/yahoo')
-rw-r--r-- | config-model/src/main/java/com/yahoo/schema/RankProfile.java | 16 | ||||
-rw-r--r-- | config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java | 4 |
2 files changed, 13 insertions, 7 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/RankProfile.java b/config-model/src/main/java/com/yahoo/schema/RankProfile.java index 9b3e236612a..22bf1880cd7 100644 --- a/config-model/src/main/java/com/yahoo/schema/RankProfile.java +++ b/config-model/src/main/java/com/yahoo/schema/RankProfile.java @@ -17,6 +17,7 @@ import com.yahoo.schema.expressiontransforms.ExpressionTransforms; import com.yahoo.schema.expressiontransforms.RankProfileTransformContext; import com.yahoo.schema.expressiontransforms.InputRecorder; import com.yahoo.schema.parser.ParseException; +import com.yahoo.search.schema.RankProfile.InputType; import com.yahoo.searchlib.rankingexpression.ExpressionFunction; import com.yahoo.searchlib.rankingexpression.FeatureList; import com.yahoo.searchlib.rankingexpression.RankingExpression; @@ -841,7 +842,7 @@ public class RankProfile implements Cloneable { if (inputs.containsKey(reference)) { Input existing = inputs().get(reference); if (! input.equals(existing)) - throw new IllegalArgumentException("Duplicate input: Has both " + input + " and existing"); + throw new IllegalArgumentException("Duplicate input: Has both " + input + " and existing " + existing); } inputs.put(reference, input); } @@ -1177,7 +1178,8 @@ public class RankProfile implements Cloneable { private Map<Reference, TensorType> featureTypes() { Map<Reference, TensorType> featureTypes = inputs().values().stream() - .collect(Collectors.toMap(input -> input.name(), input -> input.type())); + .collect(Collectors.toMap(input -> input.name(), + input -> input.type().tensorType())); allFields().forEach(field -> addAttributeFeatureTypes(field, featureTypes)); allImportedFields().forEach(field -> addAttributeFeatureTypes(field, featureTypes)); return featureTypes; @@ -1545,17 +1547,21 @@ public class RankProfile implements Cloneable { public static final class Input { private final Reference name; - private final TensorType type; + private final InputType type; private final Optional<Tensor> defaultValue; - public Input(Reference name, TensorType type, Optional<Tensor> defaultValue) { + public Input(Reference name, InputType type, Optional<Tensor> defaultValue) { this.name = name; this.type = type; this.defaultValue = defaultValue; } + public Input(Reference name, TensorType tType, Optional<Tensor> defaultValue) { + this(name, new InputType(tType, false), defaultValue); + } + public Reference name() { return name; } - public TensorType type() { return type; } + public InputType type() { return type; } public Optional<Tensor> defaultValue() { return defaultValue; } @Override diff --git a/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java b/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java index 33a363312d6..db76d6397fc 100644 --- a/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java +++ b/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java @@ -519,12 +519,12 @@ public class RawRankProfile implements RankProfilesConfig.Producer { for (var input : inputs.values()) { if (FeatureNames.isQueryFeature(input.name())) { - if (input.type().rank() > 0) // Proton does not like representing the double type as a rank 0 tensor + if (input.type().tensorType().rank() > 0) // Proton does not like representing the double type as a rank 0 tensor properties.add(new Pair<>("vespa.type.query." + input.name().arguments().expressions().get(0), input.type().toString())); if (input.defaultValue().isPresent()) { properties.add(new Pair<>(input.name().toString(), - input.type().rank() == 0 ? + input.type().tensorType().rank() == 0 ? String.valueOf(input.defaultValue().get().asDouble()) : input.defaultValue().get().toString(true, false))); } |