From efc33e32e7a3afe91d50b963a2adce00b799c223 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Fri, 13 May 2022 08:51:25 +0200 Subject: Derive constants from global profiles --- .../yahoo/searchdefinition/derived/DerivedConfiguration.java | 7 +++++++ .../com/yahoo/searchdefinition/derived/RankProfileList.java | 4 +++- config-model/src/test/derived/schemainheritance/parent.sd | 11 +++++++---- .../src/test/derived/schemainheritance/ranking-constants.cfg | 6 ++++++ .../searchdefinition/derived/AbstractExportingTestCase.java | 1 + 5 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 config-model/src/test/derived/schemainheritance/ranking-constants.cfg diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/DerivedConfiguration.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/DerivedConfiguration.java index 31b6d4c3201..50029613b2e 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/DerivedConfiguration.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/DerivedConfiguration.java @@ -12,6 +12,7 @@ import com.yahoo.searchdefinition.RankProfileRegistry; import com.yahoo.searchdefinition.Schema; import com.yahoo.searchdefinition.derived.validation.Validation; import com.yahoo.vespa.config.search.AttributesConfig; +import com.yahoo.vespa.config.search.core.RankingConstantsConfig; import com.yahoo.vespa.model.container.search.QueryProfiles; import java.io.IOException; @@ -127,6 +128,12 @@ public class DerivedConfiguration implements AttributesConfig.Producer { exportCfg(new QueryProfiles(queryProfileRegistry, (level, message) -> {}).getConfig(), toDirectory + "/" + "query-profiles.cfg"); } + public void exportConstants(String toDirectory) throws IOException { + RankingConstantsConfig.Builder b = new RankingConstantsConfig.Builder(); + rankProfileList.getConfig(b); + exportCfg(b.build(), toDirectory + "/" + "ranking-constants.cfg"); + } + private static void exportCfg(ConfigInstance instance, String fileName) throws IOException { Writer writer = null; try { diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java index 745d9cfeb96..f9c1f76a35d 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java @@ -74,9 +74,11 @@ public class RankProfileList extends Derived implements RankProfilesConfig.Produ Map constantsFromSchema, DeployState deployState) { Map allFileConstants = new HashMap<>(); - addFileConstants(constantsFromSchema.values(), allFileConstants, schema != null ? schema.toString() : "global"); + addFileConstants(constantsFromSchema.values(), allFileConstants, schema != null ? schema.toString() : "[global]"); for (var profile : deployState.rankProfileRegistry().rankProfilesOf(schema)) addFileConstants(profile.getConstants().values(), allFileConstants, profile.toString()); + for (var profile : deployState.rankProfileRegistry().rankProfilesOf(null)) + addFileConstants(profile.getConstants().values(), allFileConstants, profile.toString()); return new FileDistributedConstants(deployState.getFileRegistry(), allFileConstants.values()); } diff --git a/config-model/src/test/derived/schemainheritance/parent.sd b/config-model/src/test/derived/schemainheritance/parent.sd index 51b11dad444..4d247a570a6 100644 --- a/config-model/src/test/derived/schemainheritance/parent.sd +++ b/config-model/src/test/derived/schemainheritance/parent.sd @@ -23,11 +23,14 @@ schema parent { indexing: input pf1 | lowercase | index | attribute | summary } rank-profile parent_profile { + constants { + parent_constant tensor(x{},y{}): file:constants/my_constant_tensor_file.json + } } - constant parent_constant { - file: constants/my_constant_tensor_file.json - type: tensor(x{},y{}) - } +# constant parent_constant { (old syntax equivalent to the above) +# file: constants/my_constant_tensor_file.json +# type: tensor(x{},y{}) +# } onnx-model parent_model { file: small_constants_and_functions.onnx } diff --git a/config-model/src/test/derived/schemainheritance/ranking-constants.cfg b/config-model/src/test/derived/schemainheritance/ranking-constants.cfg new file mode 100644 index 00000000000..9b34e3f1837 --- /dev/null +++ b/config-model/src/test/derived/schemainheritance/ranking-constants.cfg @@ -0,0 +1,6 @@ +constant[].name "parent_constant" +constant[].fileref "constants/my_constant_tensor_file.json" +constant[].type "tensor(x{},y{})" +constant[].name "child_constant" +constant[].fileref "constants/my_constant_tensor_file.json" +constant[].type "tensor(x{},y{})" diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AbstractExportingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AbstractExportingTestCase.java index 992d770d851..615f6be5b4f 100644 --- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AbstractExportingTestCase.java +++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AbstractExportingTestCase.java @@ -71,6 +71,7 @@ public abstract class AbstractExportingTestCase extends AbstractSchemaTestCase { .produce(builder.getModel(), new DocumentmanagerConfig.Builder()), path); DerivedConfiguration.exportDocuments(new DocumentTypes().produce(builder.getModel(), new DocumenttypesConfig.Builder()), path); DerivedConfiguration.exportQueryProfiles(builder.getQueryProfileRegistry(), path); + config.exportConstants(path); return config; } -- cgit v1.2.3