aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/schema
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2022-09-07 14:41:02 +0000
committerGeir Storli <geirst@yahooinc.com>2022-09-07 14:41:02 +0000
commit3fe5b4c3af7448c348619b02e65c9441e4f122c5 (patch)
treeb58fd21578ce6bfa10c2f3fe67dd330dc36decc8 /config-model/src/main/java/com/yahoo/schema
parent3052127c03446d531e60ec74170917ff3a610258 (diff)
Remove producing of summarymap config from the config model.
The search backend is no longer using this config.
Diffstat (limited to 'config-model/src/main/java/com/yahoo/schema')
-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
5 files changed, 54 insertions, 161 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);
- }
- }
-
-}