aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2023-03-17 08:24:25 +0100
committerGitHub <noreply@github.com>2023-03-17 08:24:25 +0100
commit5128a20597f89bd2cb420611b8472c36db436daf (patch)
treeee9a20c0c1fcfcb9646908ac7bcdf2de9ef322a7 /config-model
parent4b47fa5a75f924c18184cc2fc3959c7b3153ab84 (diff)
parentd883fa1f9fff36baf7231e6e9f8958017a705657 (diff)
Merge pull request #26462 from vespa-engine/arnej/handle-expression-in-slice
* make InputRecorder handle slice with embedded expressions
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)}
}
}