aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/schema/RankProfile.java
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2023-02-07 13:37:40 +0000
committerArne Juul <arnej@yahooinc.com>2023-02-07 14:22:04 +0000
commit48465f0011cf25f01524a3238678afa9fdf61857 (patch)
treeddc9701077855f165fd33c7d315acb8e7ed8689f /config-model/src/main/java/com/yahoo/schema/RankProfile.java
parentd7173a4ef8190a8def529794b4f072771c784722 (diff)
experimental WIP
Diffstat (limited to 'config-model/src/main/java/com/yahoo/schema/RankProfile.java')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/RankProfile.java20
1 files changed, 18 insertions, 2 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 c1c0ad4f044..6d5202164dc 100644
--- a/config-model/src/main/java/com/yahoo/schema/RankProfile.java
+++ b/config-model/src/main/java/com/yahoo/schema/RankProfile.java
@@ -15,6 +15,7 @@ import com.yahoo.schema.document.ImmutableSDField;
import com.yahoo.schema.document.SDDocumentType;
import com.yahoo.schema.expressiontransforms.ExpressionTransforms;
import com.yahoo.schema.expressiontransforms.RankProfileTransformContext;
+import com.yahoo.schema.expressiontransforms.InputRecorder;
import com.yahoo.schema.parser.ParseException;
import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
import com.yahoo.searchlib.rankingexpression.FeatureList;
@@ -876,7 +877,7 @@ public class RankProfile implements Cloneable {
}
}
- private Map<String, RankingExpressionFunction> gatherAllFunctions() {
+ private Map<String, RankingExpressionFunction> gatherAllFunctions() {
if (functions.isEmpty() && inherited().isEmpty()) return Map.of();
if (inherited().isEmpty()) return Collections.unmodifiableMap(new LinkedHashMap<>(functions));
@@ -1006,6 +1007,21 @@ public class RankProfile implements Cloneable {
// TODO: This merges all functions from inherited profiles too and erases inheritance information. Not good.
functions = compileFunctions(this::getFunctions, queryProfiles, featureTypes, importedModels, inlineFunctions, expressionTransforms);
allFunctionsCached = null;
+
+ if (globalPhaseRanking != null) {
+ var context = new RankProfileTransformContext(this,
+ queryProfiles,
+ featureTypes,
+ importedModels,
+ constants(),
+ inlineFunctions);
+ var needInputs = new HashSet<String>();
+ var recorder = new InputRecorder(needInputs);
+ recorder.transform(globalPhaseRanking.function().getBody(), context);
+ for (String input : needInputs) {
+ System.err.println("need input => " + input);
+ }
+ }
}
private void checkNameCollisions(Map<String, RankingExpressionFunction> functions, Map<Reference, Constant> constants) {
@@ -1102,7 +1118,7 @@ public class RankProfile implements Cloneable {
for (FieldDescription field : queryProfileType.declaredFields().values()) {
TensorType type = field.getType().asTensorType();
Optional<Reference> feature = Reference.simple(field.getName());
- if ( feature.isEmpty() || ! feature.get().name().equals("query")) continue;
+ if (feature.isEmpty() || ! feature.get().name().equals("query")) continue;
if (featureTypes.containsKey(feature.get())) continue; // Explicit feature types (from inputs) overrides
TensorType existingType = context.getType(feature.get());