diff options
Diffstat (limited to 'config-model/src/main')
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); |