summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2023-03-16 11:00:36 +0000
committerArne Juul <arnej@yahooinc.com>2023-03-16 11:05:35 +0000
commitd883fa1f9fff36baf7231e6e9f8958017a705657 (patch)
treea99d74c943de8eb2d0b6c47746e39b612aa4c5c6 /config-model
parent9ec2f1a8888610e961ba4c6894abb096a8373850 (diff)
* make InputRecorder handle slice with embedded expressions
* special handling for Generate and Slice in BindingExtractor
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/expressiontransforms/InputRecorder.java8
-rw-r--r--config-model/src/test/derived/globalphase_token_functions/rank-profiles.cfg4
-rw-r--r--config-model/src/test/derived/globalphase_token_functions/test.sd5
3 files changed, 15 insertions, 2 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/expressiontransforms/InputRecorder.java b/config-model/src/main/java/com/yahoo/schema/expressiontransforms/InputRecorder.java
index 6e7787c2dd1..993a2442fdb 100644
--- a/config-model/src/main/java/com/yahoo/schema/expressiontransforms/InputRecorder.java
+++ b/config-model/src/main/java/com/yahoo/schema/expressiontransforms/InputRecorder.java
@@ -13,6 +13,7 @@ import com.yahoo.searchlib.rankingexpression.rule.ReferenceNode;
import com.yahoo.searchlib.rankingexpression.rule.TensorFunctionNode;
import com.yahoo.searchlib.rankingexpression.transform.ExpressionTransformer;
import com.yahoo.tensor.functions.Generate;
+import com.yahoo.tensor.functions.Slice;
import java.io.StringReader;
import java.util.HashSet;
@@ -53,6 +54,13 @@ public class InputRecorder extends ExpressionTransformer<InputRecorderContext> {
}
return transformChildren(t, childContext);
}
+ if (f instanceof Slice s) {
+ for (var tf : s.selectorFunctions()) {
+ if (tf instanceof TensorFunctionNode.ExpressionTensorFunction expr) {
+ transform(expr.wrappedExpression(), context);
+ }
+ }
+ }
}
if (node instanceof CompositeNode c)
return transformChildren(c, context);
diff --git a/config-model/src/test/derived/globalphase_token_functions/rank-profiles.cfg b/config-model/src/test/derived/globalphase_token_functions/rank-profiles.cfg
index 33381060178..bf47dba9a71 100644
--- a/config-model/src/test/derived/globalphase_token_functions/rank-profiles.cfg
+++ b/config-model/src/test/derived/globalphase_token_functions/rank-profiles.cfg
@@ -32,9 +32,11 @@ rankprofile[].fef.property[].value "tensor<float>(d0[1],d1[128])"
rankprofile[].fef.property[].name "vespa.rank.globalphase"
rankprofile[].fef.property[].value "rankingExpression(globalphase)"
rankprofile[].fef.property[].name "rankingExpression(globalphase).rankingScript"
-rankprofile[].fef.property[].value "onnx(my_ranking_model).score{d0:0}"
+rankprofile[].fef.property[].value "onnx(my_ranking_model).score{d0:(attribute(outputidx))}"
rankprofile[].fef.property[].name "vespa.match.feature"
rankprofile[].fef.property[].value "attribute(tokens)"
+rankprofile[].fef.property[].name "vespa.match.feature"
+rankprofile[].fef.property[].value "attribute(outputidx)"
rankprofile[].fef.property[].name "vespa.globalphase.rerankcount"
rankprofile[].fef.property[].value "1000"
rankprofile[].fef.property[].name "vespa.type.attribute.tokens"
diff --git a/config-model/src/test/derived/globalphase_token_functions/test.sd b/config-model/src/test/derived/globalphase_token_functions/test.sd
index f8cc8863ad1..a1d14258aab 100644
--- a/config-model/src/test/derived/globalphase_token_functions/test.sd
+++ b/config-model/src/test/derived/globalphase_token_functions/test.sd
@@ -8,6 +8,9 @@ schema test {
field tokens type tensor(d0[128]) {
indexing: attribute
}
+ field outputidx type double {
+ indexing: attribute
+ }
}
fieldset default {
fields: title
@@ -35,7 +38,7 @@ schema test {
}
global-phase {
rerank-count: 1000
- expression: onnx(my_ranking_model).score{d0:0}
+ expression: onnx(my_ranking_model).score{d0:attribute(outputidx)}
}
}