diff options
Diffstat (limited to 'model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java')
-rw-r--r-- | model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java b/model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java index f48d76e86f3..648c6d931a9 100644 --- a/model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java +++ b/model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.io.UncheckedIOException; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; @@ -74,10 +75,10 @@ public class RankProfilesConfigImporter { for (RankProfilesConfig.Rankprofile.Fef.Property property : profile.fef().property()) { Optional<FunctionReference> reference = FunctionReference.fromSerial(property.name()); Optional<Pair<FunctionReference, String>> argumentType = FunctionReference.fromTypeArgumentSerial(property.name()); + Optional<FunctionReference> returnType = FunctionReference.fromReturnTypeSerial(property.name()); if ( reference.isPresent()) { - List<String> arguments = new ArrayList<>(); // TODO: Arguments? RankingExpression expression = new RankingExpression(reference.get().functionName(), property.value()); - ExpressionFunction function = new ExpressionFunction(reference.get().functionName(), arguments, expression); + ExpressionFunction function = new ExpressionFunction(reference.get().functionName(), Collections.emptyList(), expression); if (reference.get().isFree()) // make available in model under configured name functions.put(reference.get(), function); @@ -92,6 +93,13 @@ public class RankProfilesConfigImporter { functions.put(argReference, function); referencedFunctions.put(argReference, function); } + else if (returnType.isPresent()) { // Return type always follows the function in properties + ExpressionFunction function = referencedFunctions.get(returnType.get()); + function = function.withReturnType(TensorType.fromSpec(property.value())); + if (returnType.get().isFree()) + functions.put(returnType.get(), function); + referencedFunctions.put(returnType.get(), function); + } else if (property.name().equals("vespa.rank.firstphase")) { // Include in addition to functions firstPhase = new ExpressionFunction("firstphase", new ArrayList<>(), new RankingExpression("first-phase", property.value())); |