aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java9
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java20
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java51
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/SummaryClassField.java2
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/SummaryMap.java133
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java8
8 files changed, 55 insertions, 174 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java b/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java
index 0f5721bbab3..c6a5873a848 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java
@@ -28,7 +28,6 @@ public class DerivedConfiguration implements AttributesConfig.Producer {
private final Schema schema;
private Summaries summaries;
- private SummaryMap summaryMap;
private Juniperrc juniperrc;
private AttributeFields attributeFields;
private RankProfileList rankProfileList;
@@ -80,12 +79,11 @@ public class DerivedConfiguration implements AttributesConfig.Producer {
if ( ! schema.isDocumentsOnly()) {
attributeFields = new AttributeFields(schema);
summaries = new Summaries(schema, deployState.getDeployLogger(), deployState.getProperties().featureFlags());
- summaryMap = new SummaryMap(schema);
juniperrc = new Juniperrc(schema);
rankProfileList = new RankProfileList(schema, schema.rankExpressionFiles(), attributeFields, deployState);
indexingScript = new IndexingScript(schema);
indexInfo = new IndexInfo(schema);
- schemaInfo = new SchemaInfo(schema, deployState.rankProfileRegistry(), summaries, summaryMap);
+ schemaInfo = new SchemaInfo(schema, deployState.rankProfileRegistry(), summaries);
indexSchema = new IndexSchema(schema);
importedFields = new ImportedFields(schema);
}
@@ -101,7 +99,6 @@ public class DerivedConfiguration implements AttributesConfig.Producer {
public void export(String toDirectory) throws IOException {
if (!schema.isDocumentsOnly()) {
summaries.export(toDirectory);
- summaryMap.export(toDirectory);
juniperrc.export(toDirectory);
attributeFields.export(toDirectory);
streamingFields.export(toDirectory);
@@ -199,10 +196,6 @@ public class DerivedConfiguration implements AttributesConfig.Producer {
return juniperrc;
}
- public SummaryMap getSummaryMap() {
- return summaryMap;
- }
-
public ImportedFields getImportedFields() {
return importedFields;
}
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java b/config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java
index 18c6f335787..517a43fe129 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java
@@ -6,7 +6,6 @@ import com.yahoo.schema.RankProfile;
import com.yahoo.schema.RankProfileRegistry;
import com.yahoo.schema.Schema;
import com.yahoo.searchlib.rankingexpression.Reference;
-import com.yahoo.vespa.documentmodel.SummaryTransform;
import java.util.Collection;
import java.util.Collections;
@@ -27,14 +26,11 @@ public final class SchemaInfo extends Derived implements SchemaInfoConfig.Produc
private final Map<String, RankProfileInfo> rankProfiles;
private final Summaries summaries;
- private final SummaryMap summaryMap;
- public SchemaInfo(Schema schema, RankProfileRegistry rankProfileRegistry,
- Summaries summaries, SummaryMap summaryMap) {
+ public SchemaInfo(Schema schema, RankProfileRegistry rankProfileRegistry, Summaries summaries) {
this.schema = schema;
this.rankProfiles = Collections.unmodifiableMap(toRankProfiles(rankProfileRegistry.rankProfilesOf(schema)));
this.summaries = summaries;
- this.summaryMap = summaryMap;
}
public String name() { return schema.getName(); }
@@ -69,25 +65,13 @@ public final class SchemaInfo extends Derived implements SchemaInfoConfig.Produc
var fieldsBuilder = new SchemaInfoConfig.Schema.Summaryclass.Fields.Builder();
fieldsBuilder.name(field.getName())
.type(field.getType().getName())
- .dynamic(isDynamic(field.getName()));
+ .dynamic(SummaryClass.commandRequiringQuery(field.getCommand()));
summaryBuilder.fields(fieldsBuilder);
}
schemaBuilder.summaryclass(summaryBuilder);
}
}
- /** Returns whether the given field is a dynamic summary field. */
- private boolean isDynamic(String fieldName) {
- if (summaryMap == null) return false; // not know for streaming, but also not used
-
- var fieldTransform = summaryMap.resultTransforms().get(fieldName);
- if (fieldTransform == null) return false;
- // TODO: Move this into SummaryTransform and call it something else than "dynamic"
- return fieldTransform.getTransform().isDynamic() ||
- fieldTransform.getTransform() == SummaryTransform.MATCHED_ELEMENTS_FILTER ||
- fieldTransform.getTransform() == SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER;
- }
-
private void addRankProfilesConfig(SchemaInfoConfig.Schema.Builder schemaBuilder) {
for (RankProfileInfo rankProfile : rankProfiles().values()) {
var rankProfileConfig = new SchemaInfoConfig.Schema.Rankprofile.Builder();
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java b/config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java
index 9cd5d901574..b8aa89fc82a 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java
@@ -69,7 +69,7 @@ public class SummaryClass extends Derived {
accessingDiskSummary = true;
}
addField(summaryField.getName(), summaryField.getDataType(), summaryField.getTransform(),
- SummaryMap.getSource(summaryField), fields);
+ getSource(summaryField), fields);
}
}
@@ -130,4 +130,53 @@ public class SummaryClass extends Derived {
return "summary class '" + getName() + "'";
}
+ /** Returns the command name of a transform */
+ static String getCommand(SummaryTransform transform) {
+ if (transform == SummaryTransform.NONE) {
+ return "";
+ } else if (transform == SummaryTransform.DISTANCE) {
+ return "absdist";
+ } else if (transform.isDynamic()) {
+ return "dynamicteaser";
+ } else {
+ return transform.getName();
+ }
+ }
+
+ static String getSource(SummaryField summaryField) {
+ if (summaryField.getTransform() == SummaryTransform.NONE) {
+ return "";
+ }
+
+ if (summaryField.getTransform() == SummaryTransform.ATTRIBUTE ||
+ (summaryField.getTransform() == SummaryTransform.ATTRIBUTECOMBINER && summaryField.hasExplicitSingleSource()) ||
+ summaryField.getTransform() == SummaryTransform.COPY ||
+ summaryField.getTransform() == SummaryTransform.DISTANCE ||
+ summaryField.getTransform() == SummaryTransform.GEOPOS ||
+ summaryField.getTransform() == SummaryTransform.POSITIONS ||
+ summaryField.getTransform() == SummaryTransform.MATCHED_ELEMENTS_FILTER ||
+ summaryField.getTransform() == SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER)
+ {
+ return summaryField.getSingleSource();
+ } else {
+ // Note: Currently source mapping is handled in the indexing statement,
+ // by creating a summary field for each of the values
+ // This works, but is suboptimal. We could consolidate to a minimal set and
+ // use the right value from the minimal set as the third parameter here,
+ // and add "override" commands to multiple static values
+ boolean useFieldNameAsArgument = summaryField.getTransform().isDynamic();
+ return useFieldNameAsArgument ? summaryField.getName() : "";
+ }
+ }
+
+ /**
+ * A dynamic transform that needs the query to perform its computations.
+ * We need this because some model information is shared through configs instead of model - see usage
+ */
+ static boolean commandRequiringQuery(String commandName) {
+ return (commandName.equals("dynamicteaser") ||
+ commandName.equals(SummaryTransform.MATCHED_ELEMENTS_FILTER.getName()) ||
+ commandName.equals(SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER.getName()));
+ }
+
}
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/SummaryClassField.java b/config-model/src/main/java/com/yahoo/schema/derived/SummaryClassField.java
index 00972895306..ec7869857cd 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/SummaryClassField.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/SummaryClassField.java
@@ -72,7 +72,7 @@ public class SummaryClassField {
public SummaryClassField(String name, DataType type, SummaryTransform transform, String source, boolean rawAsBase64) {
this.name = name;
this.type = convertDataType(type, transform, rawAsBase64);
- this.command = SummaryMap.getCommand(transform);
+ this.command = SummaryClass.getCommand(transform);
this.source = source;
}
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/SummaryMap.java b/config-model/src/main/java/com/yahoo/schema/derived/SummaryMap.java
deleted file mode 100644
index cecf3ecdd85..00000000000
--- a/config-model/src/main/java/com/yahoo/schema/derived/SummaryMap.java
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.schema.derived;
-
-import com.yahoo.schema.Schema;
-import com.yahoo.schema.document.ImmutableSDField;
-import com.yahoo.vespa.config.search.SummarymapConfig;
-import com.yahoo.vespa.documentmodel.DocumentSummary;
-import com.yahoo.vespa.documentmodel.SummaryField;
-import com.yahoo.vespa.documentmodel.SummaryTransform;
-
-import java.util.Collections;
-import java.util.Map;
-
-/**
- * A summary map (describing search-time summary field transformations)
- * derived from a Schema.
- *
- * @author bratseth
- */
-public class SummaryMap extends Derived implements SummarymapConfig.Producer {
-
- private final Map<String, FieldResultTransform> resultTransforms = new java.util.LinkedHashMap<>();
-
- /** Creates a summary map from a search definition */
- SummaryMap(Schema schema) {
- derive(schema);
- }
-
- protected void derive(Schema schema) {
- for (DocumentSummary documentSummary : schema.getSummaries().values()) {
- derive(documentSummary);
- }
- addSummaryTransformForDocumentId();
- super.derive(schema);
- }
-
- @Override
- protected void derive(ImmutableSDField field, Schema schema) {
- }
-
- private void addSummaryTransformForDocumentId() {
- // The 'documentid' field is added to the 'default' summary class in SummaryClass.deriveImplicitFields().
- // This ensures the corresponding transform is added as well.
- if (!resultTransforms.containsKey(SummaryClass.DOCUMENT_ID_FIELD)) {
- resultTransforms.put(SummaryClass.DOCUMENT_ID_FIELD,
- new FieldResultTransform(SummaryClass.DOCUMENT_ID_FIELD, SummaryTransform.DOCUMENT_ID, ""));
- }
- }
-
- private void derive(DocumentSummary documentSummary) {
- for (SummaryField summaryField : documentSummary.getSummaryFields().values()) {
- if (summaryField.getTransform()== SummaryTransform.NONE) {
- continue;
- }
-
- resultTransforms.put(summaryField.getName(),
- new FieldResultTransform(summaryField.getName(),
- summaryField.getTransform(),
- getSource(summaryField)));
- }
- }
-
- /** Returns a read-only iterator of the FieldResultTransforms of this summary map */
- public Map<String, FieldResultTransform> resultTransforms() {
- return Collections.unmodifiableMap(resultTransforms);
- }
-
- protected String getDerivedName() { return "summarymap"; }
-
- /** Returns the command name of a transform */
- static String getCommand(SummaryTransform transform) {
- if (transform == SummaryTransform.NONE) {
- return "";
- } else if (transform == SummaryTransform.DISTANCE) {
- return "absdist";
- } else if (transform.isDynamic()) {
- return "dynamicteaser";
- } else {
- return transform.getName();
- }
- }
-
- static String getSource(SummaryField summaryField) {
- if (summaryField.getTransform() == SummaryTransform.NONE) {
- return "";
- }
-
- if (summaryField.getTransform() == SummaryTransform.ATTRIBUTE ||
- (summaryField.getTransform() == SummaryTransform.ATTRIBUTECOMBINER && summaryField.hasExplicitSingleSource()) ||
- summaryField.getTransform() == SummaryTransform.COPY ||
- summaryField.getTransform() == SummaryTransform.DISTANCE ||
- summaryField.getTransform() == SummaryTransform.GEOPOS ||
- summaryField.getTransform() == SummaryTransform.POSITIONS ||
- summaryField.getTransform() == SummaryTransform.MATCHED_ELEMENTS_FILTER ||
- summaryField.getTransform() == SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER)
- {
- return summaryField.getSingleSource();
- } else {
- // Note: Currently source mapping is handled in the indexing statement,
- // by creating a summary field for each of the values
- // This works, but is suboptimal. We could consolidate to a minimal set and
- // use the right value from the minimal set as the third parameter here,
- // and add "override" commands to multiple static values
- boolean useFieldNameAsArgument = summaryField.getTransform().isDynamic();
- return useFieldNameAsArgument ? summaryField.getName() : "";
- }
- }
-
- /**
- * Does this summary command name stand for a dynamic transform?
- * We need this because some model information is shared through configs instead of model - see usage
- * A dynamic transform needs the query to perform its computations.
- */
- // TODO/Note: "dynamic" here means something else than in SummaryTransform
- static boolean isDynamicCommand(String commandName) {
- return (commandName.equals("dynamicteaser") ||
- commandName.equals(SummaryTransform.MATCHED_ELEMENTS_FILTER.getName()) ||
- commandName.equals(SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER.getName()));
- }
-
- @Override
- public void getConfig(SummarymapConfig.Builder builder) {
- builder.defaultoutputclass(-1);
- for (FieldResultTransform frt : resultTransforms.values()) {
- SummarymapConfig.Override.Builder oB = new SummarymapConfig.Override.Builder()
- .field(frt.getFieldName())
- .command(getCommand(frt.getTransform()))
- .arguments(frt.getArgument());
- builder.override(oB);
- }
- }
-
-}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
index 6dad3c5f06f..a74cb040631 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
@@ -245,7 +245,7 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster>
throw new IllegalArgumentException("Schema '" + schemaDefinitionXMLHandler.getName() + "' referenced in " +
this + " does not exist");
- sc.add(new SchemaInfo(schema, deployState.rankProfileRegistry(), null, null));
+ sc.add(new SchemaInfo(schema, deployState.rankProfileRegistry(), null));
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java b/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java
index 64a1015d056..46e15d96b55 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java
@@ -10,7 +10,6 @@ import com.yahoo.vespa.config.search.ImportedFieldsConfig;
import com.yahoo.vespa.config.search.IndexschemaConfig;
import com.yahoo.vespa.config.search.RankProfilesConfig;
import com.yahoo.vespa.config.search.SummaryConfig;
-import com.yahoo.vespa.config.search.SummarymapConfig;
import com.yahoo.vespa.config.search.core.OnnxModelsConfig;
import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
import com.yahoo.vespa.config.search.core.RankingExpressionsConfig;
@@ -32,7 +31,6 @@ public class DocumentDatabase extends AbstractConfigProducer<DocumentDatabase> i
OnnxModelsConfig.Producer,
IndexschemaConfig.Producer,
JuniperrcConfig.Producer,
- SummarymapConfig.Producer,
SummaryConfig.Producer,
ImportedFieldsConfig.Producer,
SchemaInfoConfig.Producer {
@@ -86,8 +84,6 @@ public class DocumentDatabase extends AbstractConfigProducer<DocumentDatabase> i
public void getConfig(JuniperrcConfig.Builder builder) { derivedCfg.getJuniperrc().getConfig(builder); }
@Override
- public void getConfig(SummarymapConfig.Builder builder) { derivedCfg.getSummaryMap().getConfig(builder); }
- @Override
public void getConfig(SummaryConfig.Builder builder) { derivedCfg.getSummaries().getConfig(builder); }
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java
index d12635b76ec..947079fb115 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java
@@ -12,7 +12,6 @@ import com.yahoo.search.config.SchemaInfoConfig;
import com.yahoo.vespa.config.search.AttributesConfig;
import com.yahoo.vespa.config.search.RankProfilesConfig;
import com.yahoo.vespa.config.search.SummaryConfig;
-import com.yahoo.vespa.config.search.SummarymapConfig;
import com.yahoo.vespa.config.search.vsm.VsmfieldsConfig;
import com.yahoo.vespa.config.search.vsm.VsmsummaryConfig;
import com.yahoo.vespa.configdefinition.IlscriptsConfig;
@@ -28,7 +27,6 @@ public class StreamingSearchCluster extends SearchCluster implements
RankProfilesConfig.Producer,
VsmsummaryConfig.Producer,
VsmfieldsConfig.Producer,
- SummarymapConfig.Producer,
SummaryConfig.Producer {
private final String storageRouteSpec;
@@ -120,12 +118,6 @@ public class StreamingSearchCluster extends SearchCluster implements
}
@Override
- public void getConfig(SummarymapConfig.Builder builder) {
- if (derivedConfig.getSummaryMap() != null)
- derivedConfig.getSummaryMap().getConfig(builder);
- }
-
- @Override
public void getConfig(SummaryConfig.Builder builder) {
if (derivedConfig.getSummaries() != null)
derivedConfig.getSummaries().getConfig(builder);