aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo
diff options
context:
space:
mode:
authorMarius Arhaug <mariusarhaug@hotmail.com>2024-04-09 16:33:27 +0200
committerGitHub <noreply@github.com>2024-04-09 16:33:27 +0200
commit887cb5b3c98472ae521f2104216b15ffde5d8acb (patch)
tree968498f53f1c4056b23b54f680bb1dd421639557 /config-model/src/main/java/com/yahoo
parent07010100192978eea266f7cb15b315b57a95438e (diff)
parent65eedab29e587beab738a5daa19de460612a7295 (diff)
Merge pull request #30819 from vespa-engine/marius/add-significance-config-model
Add significance config model registry
Diffstat (limited to 'config-model/src/main/java/com/yahoo')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/SignificanceModelRegistry.java73
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java12
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ModelIdResolver.java1
3 files changed, 86 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/SignificanceModelRegistry.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/SignificanceModelRegistry.java
new file mode 100644
index 00000000000..eb3f63cdf10
--- /dev/null
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/SignificanceModelRegistry.java
@@ -0,0 +1,73 @@
+// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.model.container.component;
+
+import com.yahoo.config.ModelReference;
+import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.container.bundle.BundleInstantiationSpecification;
+import com.yahoo.osgi.provider.model.ComponentModel;
+import com.yahoo.search.significance.config.SignificanceConfig;
+import com.yahoo.text.XML;
+import org.w3c.dom.Element;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import static com.yahoo.vespa.model.container.xml.ModelIdResolver.SIGNIFICANCE_MODEL;
+
+/**
+ * A registry for significance models.
+ *
+ * @author MariusArhaug
+ *
+ */
+public class SignificanceModelRegistry extends SimpleComponent implements SignificanceConfig.Producer {
+
+ private static final String CLASS = "com.yahoo.search.significance.impl.DefaultSignificanceModelRegistry";
+ private static final String BUNDLE = "linguistics";
+
+ private final List<SignificanceModelConfig> configList;
+
+ public SignificanceModelRegistry(DeployState deployState, Element spec) {
+ super(new ComponentModel(BundleInstantiationSpecification.fromStrings(CLASS, CLASS, BUNDLE)));
+ configList = new ArrayList<>();
+
+ for (Element modelElement : XML.getChildren(spec, "model")) {
+ addConfig(
+ modelElement.getAttribute("language"),
+ Model.fromXml(deployState, modelElement, Set.of(SIGNIFICANCE_MODEL)).modelReference());
+ }
+ }
+
+
+ public void addConfig(String language, ModelReference path) {
+ configList.add(
+ new SignificanceModelConfig(language, path)
+ );
+ }
+
+
+ @Override
+ public void getConfig(SignificanceConfig.Builder builder) {
+ builder.model(
+ configList.stream()
+ .map(config -> new SignificanceConfig.Model.Builder()
+ .language(config.language)
+ .path(config.path)
+ ).toList()
+ );
+ }
+
+
+ class SignificanceModelConfig {
+ private final String language;
+ private final ModelReference path;
+
+ public SignificanceModelConfig(String language, ModelReference path) {
+ this.language = language;
+ this.path = path;
+ }
+
+ }
+}
+
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
index 4abd6e89b15..456ce8fdbc2 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
@@ -83,6 +83,7 @@ import com.yahoo.vespa.model.container.component.Handler;
import com.yahoo.vespa.model.container.component.SimpleComponent;
import com.yahoo.vespa.model.container.component.SystemBindingPattern;
import com.yahoo.vespa.model.container.component.UserBindingPattern;
+import com.yahoo.vespa.model.container.component.SignificanceModelRegistry;
import com.yahoo.vespa.model.container.docproc.ContainerDocproc;
import com.yahoo.vespa.model.container.docproc.DocprocChains;
import com.yahoo.vespa.model.container.http.AccessControl;
@@ -765,6 +766,17 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
addSearchHandler(deployState, cluster, searchElement, context);
validateAndAddConfiguredComponents(deployState, cluster, searchElement, "renderer", ContainerModelBuilder::validateRendererElement);
+
+ addSignificance(deployState, searchElement, cluster);
+ }
+
+ private void addSignificance(DeployState deployState, Element spec, ApplicationContainerCluster cluster) {
+ Element significanceElement = XML.getChild(spec, "significance");
+ if (significanceElement == null) return;
+
+ SignificanceModelRegistry significanceModelRegistry = new SignificanceModelRegistry(deployState, significanceElement);
+ cluster.addComponent(significanceModelRegistry);
+
}
private void addModelEvaluation(Element spec, ApplicationContainerCluster cluster, ConfigModelContext context) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ModelIdResolver.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ModelIdResolver.java
index 9ff9344edcb..f9993b770e5 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ModelIdResolver.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ModelIdResolver.java
@@ -25,6 +25,7 @@ public class ModelIdResolver {
public static final String HF_TOKENIZER = "huggingface-tokenizer";
public static final String ONNX_MODEL = "onnx-model";
public static final String BERT_VOCAB = "bert-vocabulary";
+ public static final String SIGNIFICANCE_MODEL = "significance-model";
private static Map<String, ProvidedModel> setupProvidedModels() {
var m = new HashMap<String, ProvidedModel>();