summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/searchdefinition/derived
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-05-24 16:06:01 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-05-25 14:09:42 +0200
commit38d5528de104e756dbc2d322211d935982b836be (patch)
tree7871f054424d485d27e169002d8d65b4ba516d30 /config-model/src/main/java/com/yahoo/searchdefinition/derived
parent6067d082653ab2994a80ccdaeca72bdf46e65e10 (diff)
Use external rank expressions, gated by feature flag.
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/derived')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/RawRankProfile.java7
1 files changed, 6 insertions, 1 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/RawRankProfile.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/RawRankProfile.java
index a829989a281..69e3c311e8f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/RawRankProfile.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/RawRankProfile.java
@@ -159,6 +159,7 @@ public class RawRankProfile implements RankProfilesConfig.Producer {
private final Map<String, String> attributeTypes;
private final Map<String, String> queryFeatureTypes;
+ private final boolean useExternalExpressionFiles;
private Set<String> filterFields = new java.util.LinkedHashSet<>();
@@ -172,6 +173,7 @@ public class RawRankProfile implements RankProfilesConfig.Producer {
RankProfile compiled = rankProfile.compile(queryProfiles, importedModels);
attributeTypes = compiled.getAttributeTypes();
queryFeatureTypes = compiled.getQueryFeatureTypes();
+ useExternalExpressionFiles = deployProperties.featureFlags().useExternalRankExpressions();
deriveRankingFeatures(compiled, deployProperties);
deriveRankTypeSetting(compiled, attributeFields);
deriveFilterFields(compiled);
@@ -231,6 +233,7 @@ public class RawRankProfile implements RankProfilesConfig.Producer {
Map<String, String> functionProperties) {
SerializationContext context = new SerializationContext(functionExpressions, null, functionProperties);
for (Map.Entry<String, RankProfile.RankingExpressionFunction> e : functions.entrySet()) {
+ if (useExternalExpressionFiles && rankProfile.getExpressionFile(e.getKey()) != null) continue;
String propertyName = RankingExpression.propertyName(e.getKey());
if (context.serializedFunctions().containsKey(propertyName)) continue;
@@ -428,7 +431,9 @@ public class RawRankProfile implements RankProfilesConfig.Producer {
if ("".equals(name))
name = phase;
- if (expression.getRoot() instanceof ReferenceNode) {
+ if (useExternalExpressionFiles && (fileName != null)) {
+ properties.add(new Pair<>("vespa.rank." + phase, "rankingExpression(" + name + ")"));
+ } else if (expression.getRoot() instanceof ReferenceNode) {
properties.add(new Pair<>("vespa.rank." + phase, expression.getRoot().toString()));
} else {
properties.add(new Pair<>("vespa.rank." + phase, "rankingExpression(" + name + ")"));