aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/schema
diff options
context:
space:
mode:
authorArne H Juul <arnej27959@users.noreply.github.com>2023-09-21 11:12:25 +0200
committerGitHub <noreply@github.com>2023-09-21 11:12:25 +0200
commit7faeffcc5901ae88c1c3d1814665d0db6ca1d900 (patch)
tree7d2329fbd8d86b97a3b5cf16caf241fccb35e7bf /config-model/src/main/java/com/yahoo/schema
parent612d4f141e08a5d3613f258f3575e341cbd304ce (diff)
parent7097b3d47b63c1bb5b2b8354d8f1d326514d80dc (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.java5
-rw-r--r--config-model/src/main/java/com/yahoo/schema/expressiontransforms/InputRecorder.java4
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) {