summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ExpressionTransforms.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ExpressionTransforms.java')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ExpressionTransforms.java25
1 files changed, 18 insertions, 7 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ExpressionTransforms.java b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ExpressionTransforms.java
index ee5cccccb29..d7a38f47766 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ExpressionTransforms.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ExpressionTransforms.java
@@ -1,33 +1,44 @@
package com.yahoo.searchdefinition.expressiontransforms;
+import com.google.common.collect.ImmutableList;
import com.yahoo.searchdefinition.RankProfile;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
import com.yahoo.searchlib.rankingexpression.evaluation.Value;
import com.yahoo.searchlib.rankingexpression.transform.ConstantDereferencer;
+import com.yahoo.searchlib.rankingexpression.transform.ExpressionTransformer;
import com.yahoo.searchlib.rankingexpression.transform.Simplifier;
+import com.yahoo.searchlib.rankingexpression.transform.TransformContext;
+import java.util.List;
import java.util.Map;
/**
* The transformations done on ranking expressions done at config time before passing them on to the Vespa
* engine for execution.
*
+ * An instance of this class has scope of one complete deployment.
+ *
* @author bratseth
*/
public class ExpressionTransforms {
+ private final List<ExpressionTransformer> transforms =
+ ImmutableList.of(new TensorFlowFeatureConverter(),
+ new ConstantDereferencer(),
+ new ConstantTensorTransformer(),
+ new MacroInliner(),
+ new MacroShadower(),
+ new TensorTransformer(),
+ new Simplifier());
+
public RankingExpression transform(RankingExpression expression,
RankProfile rankProfile,
Map<String, Value> constants,
Map<String, RankProfile.Macro> inlineMacros,
Map<String, String> rankPropertiesOutput) {
- expression = new TensorFlowFeatureConverter(rankProfile).transform(expression);
- expression = new ConstantDereferencer(constants).transform(expression);
- expression = new ConstantTensorTransformer(constants, rankPropertiesOutput).transform(expression);
- expression = new MacroInliner(inlineMacros).transform(expression);
- expression = new MacroShadower(rankProfile.getMacros()).transform(expression);
- expression = new TensorTransformer(rankProfile).transform(expression);
- expression = new Simplifier().transform(expression);
+ TransformContext context = new RankProfileTransformContext(rankProfile, constants, inlineMacros, rankPropertiesOutput);
+ for (ExpressionTransformer transformer : transforms)
+ expression = transformer.transform(expression, context);
return expression;
}