diff options
author | Arne H Juul <arnej27959@users.noreply.github.com> | 2023-09-21 11:12:25 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-21 11:12:25 +0200 |
commit | 7faeffcc5901ae88c1c3d1814665d0db6ca1d900 (patch) | |
tree | 7d2329fbd8d86b97a3b5cf16caf241fccb35e7bf /config-model/src/main/java/com/yahoo/schema | |
parent | 612d4f141e08a5d3613f258f3575e341cbd304ce (diff) | |
parent | 7097b3d47b63c1bb5b2b8354d8f1d326514d80dc (diff) |
Merge pull request #28566 from vespa-engine/arnej/avoid-recomputing-match-features
if something is already a match-feature, avoid computing it again in …
Diffstat (limited to 'config-model/src/main/java/com/yahoo/schema')
-rw-r--r-- | config-model/src/main/java/com/yahoo/schema/RankProfile.java | 5 | ||||
-rw-r--r-- | config-model/src/main/java/com/yahoo/schema/expressiontransforms/InputRecorder.java | 4 |
2 files changed, 9 insertions, 0 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 35ef12f077a..dafe0b48698 100644 --- a/config-model/src/main/java/com/yahoo/schema/RankProfile.java +++ b/config-model/src/main/java/com/yahoo/schema/RankProfile.java @@ -1067,6 +1067,11 @@ public class RankProfile implements Cloneable { inlineFunctions); var needInputs = new HashSet<String>(); var recorder = new InputRecorder(needInputs); + if (matchFeatures != null) { + for (ReferenceNode mf : matchFeatures) { + recorder.alreadyHandled(mf.toString()); + } + } recorder.process(globalPhaseRanking.function().getBody(), context); List<FeatureList> addIfMissing = new ArrayList<>(); for (String input : needInputs) { 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 160d82e08ab..b30873fabee 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 @@ -38,6 +38,10 @@ public class InputRecorder extends ExpressionTransformer<InputRecorderContext> { transform(expression.getRoot(), new InputRecorderContext(context)); } + public void alreadyHandled(String name) { + handled.add(name); + } + @Override public ExpressionNode transform(ExpressionNode node, InputRecorderContext context) { if (node instanceof ReferenceNode r) { |