diff options
author | Arne Juul <arnej@yahooinc.com> | 2023-02-07 13:37:40 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2023-02-07 14:22:04 +0000 |
commit | 48465f0011cf25f01524a3238678afa9fdf61857 (patch) | |
tree | ddc9701077855f165fd33c7d315acb8e7ed8689f /config-model/src/main/java/com/yahoo/schema/RankProfile.java | |
parent | d7173a4ef8190a8def529794b4f072771c784722 (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.java | 20 |
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()); |