diff options
author | Jon Bratseth <bratseth@gmail.com> | 2023-03-17 08:24:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-17 08:24:25 +0100 |
commit | 5128a20597f89bd2cb420611b8472c36db436daf (patch) | |
tree | ee9a20c0c1fcfcb9646908ac7bcdf2de9ef322a7 /config-model/src | |
parent | 4b47fa5a75f924c18184cc2fc3959c7b3153ab84 (diff) | |
parent | d883fa1f9fff36baf7231e6e9f8958017a705657 (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/src')
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)} } } |