diff options
41 files changed, 199 insertions, 1062 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); diff --git a/config-model/src/test/derived/advanced/summarymap.cfg b/config-model/src/test/derived/advanced/summarymap.cfg deleted file mode 100644 index f91aebe57f9..00000000000 --- a/config-model/src/test/derived/advanced/summarymap.cfg +++ /dev/null @@ -1,13 +0,0 @@ -defaultoutputclass -1 -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "location_zcurve" -override[].command "attribute" -override[].arguments "location_zcurve" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/array_of_struct_attribute/summarymap.cfg b/config-model/src/test/derived/array_of_struct_attribute/summarymap.cfg deleted file mode 100644 index 4fb66c0e0b1..00000000000 --- a/config-model/src/test/derived/array_of_struct_attribute/summarymap.cfg +++ /dev/null @@ -1,16 +0,0 @@ -defaultoutputclass -1 -override[].field "new_elem_array" -override[].command "attributecombiner" -override[].arguments "elem_array" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "elem_array" -override[].command "attributecombiner" -override[].arguments "" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/attributeprefetch/summarymap.cfg b/config-model/src/test/derived/attributeprefetch/summarymap.cfg deleted file mode 100644 index ae5e4b5f7c5..00000000000 --- a/config-model/src/test/derived/attributeprefetch/summarymap.cfg +++ /dev/null @@ -1,28 +0,0 @@ -defaultoutputclass -1 -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "singlebyte" -override[].command "attribute" -override[].arguments "singlebyte" -override[].field "singleint" -override[].command "attribute" -override[].arguments "singleint" -override[].field "singlelong" -override[].command "attribute" -override[].arguments "singlelong" -override[].field "singlefloat" -override[].command "attribute" -override[].arguments "singlefloat" -override[].field "singledouble" -override[].command "attribute" -override[].arguments "singledouble" -override[].field "singlestring" -override[].command "attribute" -override[].arguments "singlestring" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/attributes/summarymap.cfg b/config-model/src/test/derived/attributes/summarymap.cfg deleted file mode 100644 index 72a5e41e555..00000000000 --- a/config-model/src/test/derived/attributes/summarymap.cfg +++ /dev/null @@ -1,55 +0,0 @@ -defaultoutputclass -1 -override[].field "a1" -override[].command "attribute" -override[].arguments "a1" -override[].field "a2" -override[].command "attribute" -override[].arguments "a2" -override[].field "a3" -override[].command "attribute" -override[].arguments "a3" -override[].field "a5" -override[].command "attribute" -override[].arguments "a5" -override[].field "a6" -override[].command "attribute" -override[].arguments "a6" -override[].field "b1" -override[].command "attribute" -override[].arguments "b1" -override[].field "b2" -override[].command "attribute" -override[].arguments "b2" -override[].field "b3" -override[].command "attribute" -override[].arguments "b3" -override[].field "b4" -override[].command "attribute" -override[].arguments "b4" -override[].field "b5" -override[].command "attribute" -override[].arguments "b5" -override[].field "b6" -override[].command "attribute" -override[].arguments "b6" -override[].field "b7" -override[].command "attribute" -override[].arguments "b7" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "a9" -override[].command "attribute" -override[].arguments "a9" -override[].field "a11" -override[].command "attribute" -override[].arguments "a11" -override[].field "a12" -override[].command "attribute" -override[].arguments "a12" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/complex/summarymap.cfg b/config-model/src/test/derived/complex/summarymap.cfg deleted file mode 100644 index 685b818fc6a..00000000000 --- a/config-model/src/test/derived/complex/summarymap.cfg +++ /dev/null @@ -1,34 +0,0 @@ -defaultoutputclass -1 -override[].field "dyntitle" -override[].command "dynamicteaser" -override[].arguments "dyntitle" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "year_sub" -override[].command "attribute" -override[].arguments "year_sub" -override[].field "prefixenabled" -override[].command "attribute" -override[].arguments "prefixenabled" -override[].field "fleeting2" -override[].command "attribute" -override[].arguments "fleeting2" -override[].field "foundat" -override[].command "attribute" -override[].arguments "foundat" -override[].field "collapseby" -override[].command "attribute" -override[].arguments "collapseby" -override[].field "ts" -override[].command "attribute" -override[].arguments "ts" -override[].field "combineda" -override[].command "attribute" -override[].arguments "combineda" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/emptydefault/summarymap.cfg b/config-model/src/test/derived/emptydefault/summarymap.cfg deleted file mode 100644 index b247ff94bbf..00000000000 --- a/config-model/src/test/derived/emptydefault/summarymap.cfg +++ /dev/null @@ -1,10 +0,0 @@ -defaultoutputclass -1 -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/id/summarymap.cfg b/config-model/src/test/derived/id/summarymap.cfg deleted file mode 100644 index b247ff94bbf..00000000000 --- a/config-model/src/test/derived/id/summarymap.cfg +++ /dev/null @@ -1,10 +0,0 @@ -defaultoutputclass -1 -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/imported_position_field/summarymap.cfg b/config-model/src/test/derived/imported_position_field/summarymap.cfg deleted file mode 100644 index b247ff94bbf..00000000000 --- a/config-model/src/test/derived/imported_position_field/summarymap.cfg +++ /dev/null @@ -1,10 +0,0 @@ -defaultoutputclass -1 -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/imported_position_field_summary/summarymap.cfg b/config-model/src/test/derived/imported_position_field_summary/summarymap.cfg deleted file mode 100644 index c17dcdce267..00000000000 --- a/config-model/src/test/derived/imported_position_field_summary/summarymap.cfg +++ /dev/null @@ -1,13 +0,0 @@ -defaultoutputclass -1 -override[].field "my_pos" -override[].command "geopos" -override[].arguments "my_pos_zcurve" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/imported_struct_fields/summarymap.cfg b/config-model/src/test/derived/imported_struct_fields/summarymap.cfg deleted file mode 100644 index 653b0a26b75..00000000000 --- a/config-model/src/test/derived/imported_struct_fields/summarymap.cfg +++ /dev/null @@ -1,28 +0,0 @@ -defaultoutputclass -1 -override[].field "documentid" -override[].command "documentid" -override[].arguments "" -override[].field "my_elem_array" -override[].command "attributecombiner" -override[].arguments "" -override[].field "my_elem_map" -override[].command "attributecombiner" -override[].arguments "" -override[].field "my_str_int_map" -override[].command "attributecombiner" -override[].arguments "" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "elem_array_filtered" -override[].command "matchedattributeelementsfilter" -override[].arguments "my_elem_array" -override[].field "elem_map_filtered" -override[].command "matchedattributeelementsfilter" -override[].arguments "my_elem_map" -override[].field "str_int_map_filtered" -override[].command "matchedattributeelementsfilter" -override[].arguments "my_str_int_map" diff --git a/config-model/src/test/derived/importedfields/summarymap.cfg b/config-model/src/test/derived/importedfields/summarymap.cfg deleted file mode 100644 index 7a4677301db..00000000000 --- a/config-model/src/test/derived/importedfields/summarymap.cfg +++ /dev/null @@ -1,28 +0,0 @@ -defaultoutputclass -1 -override[].field "my_int_field" -override[].command "attribute" -override[].arguments "my_int_field" -override[].field "my_string_field" -override[].command "attribute" -override[].arguments "my_string_field" -override[].field "my_int_array_field" -override[].command "attribute" -override[].arguments "my_int_array_field" -override[].field "my_int_wset_field" -override[].command "attribute" -override[].arguments "my_int_wset_field" -override[].field "my_ancient_int_field" -override[].command "attribute" -override[].arguments "my_ancient_int_field" -override[].field "my_filtered_int_array_field" -override[].command "matchedattributeelementsfilter" -override[].arguments "my_int_array_field" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/indexswitches/summarymap.cfg b/config-model/src/test/derived/indexswitches/summarymap.cfg deleted file mode 100644 index b247ff94bbf..00000000000 --- a/config-model/src/test/derived/indexswitches/summarymap.cfg +++ /dev/null @@ -1,10 +0,0 @@ -defaultoutputclass -1 -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/inheritance/summarymap.cfg b/config-model/src/test/derived/inheritance/summarymap.cfg deleted file mode 100644 index 7fb5eab0200..00000000000 --- a/config-model/src/test/derived/inheritance/summarymap.cfg +++ /dev/null @@ -1,19 +0,0 @@ -defaultoutputclass -1 -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "onlygrandparent" -override[].command "attribute" -override[].arguments "onlygrandparent" -override[].field "overridden" -override[].command "attribute" -override[].arguments "overridden" -override[].field "onlymother" -override[].command "attribute" -override[].arguments "onlymother" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/inheritfromparent/summary.cfg b/config-model/src/test/derived/inheritfromparent/summary.cfg new file mode 100644 index 00000000000..32719e81eb9 --- /dev/null +++ b/config-model/src/test/derived/inheritfromparent/summary.cfg @@ -0,0 +1,36 @@ +defaultsummaryid 1561972036 +usev8geopositions true +classes[].id 1561972036 +classes[].name "default" +classes[].omitsummaryfeatures false +classes[].fields[].name "weight" +classes[].fields[].type "float" +classes[].fields[].command "attribute" +classes[].fields[].source "weight" +classes[].fields[].name "rankfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].command "rankfeatures" +classes[].fields[].source "" +classes[].fields[].name "summaryfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].command "summaryfeatures" +classes[].fields[].source "" +classes[].fields[].name "documentid" +classes[].fields[].type "longstring" +classes[].fields[].command "documentid" +classes[].fields[].source "" +classes[].id 571976254 +classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false +classes[].fields[].name "weight" +classes[].fields[].type "float" +classes[].fields[].command "attribute" +classes[].fields[].source "weight" +classes[].fields[].name "rankfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].command "rankfeatures" +classes[].fields[].source "" +classes[].fields[].name "summaryfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].command "summaryfeatures" +classes[].fields[].source "" diff --git a/config-model/src/test/derived/inheritfromparent/summarymap.cfg b/config-model/src/test/derived/inheritfromparent/summarymap.cfg deleted file mode 100644 index fb1a18ab864..00000000000 --- a/config-model/src/test/derived/inheritfromparent/summarymap.cfg +++ /dev/null @@ -1,13 +0,0 @@ -defaultoutputclass -1 -override[].field "weight" -override[].command "attribute" -override[].arguments "weight" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/mail/summarymap.cfg b/config-model/src/test/derived/mail/summarymap.cfg deleted file mode 100644 index 40444944e3a..00000000000 --- a/config-model/src/test/derived/mail/summarymap.cfg +++ /dev/null @@ -1,16 +0,0 @@ -defaultoutputclass -1 -override[].field "snippet" -override[].command "dynamicteaser" -override[].arguments "snippet" -override[].field "date" -override[].command "attribute" -override[].arguments "date" -override[].field "attachmentcount" -override[].command "attribute" -override[].arguments "attachmentcount" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" diff --git a/config-model/src/test/derived/map_attribute/summarymap.cfg b/config-model/src/test/derived/map_attribute/summarymap.cfg deleted file mode 100644 index f9267fb39d3..00000000000 --- a/config-model/src/test/derived/map_attribute/summarymap.cfg +++ /dev/null @@ -1,13 +0,0 @@ -defaultoutputclass -1 -override[].field "str_map" -override[].command "attributecombiner" -override[].arguments "" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/map_of_struct_attribute/summarymap.cfg b/config-model/src/test/derived/map_of_struct_attribute/summarymap.cfg deleted file mode 100644 index 46608a4a885..00000000000 --- a/config-model/src/test/derived/map_of_struct_attribute/summarymap.cfg +++ /dev/null @@ -1,19 +0,0 @@ -defaultoutputclass -1 -override[].field "new_str_elem_map" -override[].command "attributecombiner" -override[].arguments "str_elem_map" -override[].field "new_int_elem_map" -override[].command "copy" -override[].arguments "int_elem_map" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "str_elem_map" -override[].command "attributecombiner" -override[].arguments "" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/multiplesummaries/summarymap.cfg b/config-model/src/test/derived/multiplesummaries/summarymap.cfg deleted file mode 100644 index ee61fac39f4..00000000000 --- a/config-model/src/test/derived/multiplesummaries/summarymap.cfg +++ /dev/null @@ -1,58 +0,0 @@ -defaultoutputclass -1 -override[].field "a" -override[].command "attribute" -override[].arguments "a" -override[].field "adynamic" -override[].command "dynamicteaser" -override[].arguments "adynamic" -override[].field "d" -override[].command "dynamicteaser" -override[].arguments "d" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "c" -override[].command "attribute" -override[].arguments "c" -override[].field "adynamic2" -override[].command "dynamicteaser" -override[].arguments "adynamic2" -override[].field "sometags" -override[].command "matchedelementsfilter" -override[].arguments "mytags" -override[].field "anothera" -override[].command "attribute" -override[].arguments "a" -override[].field "anotdynamic" -override[].command "attribute" -override[].arguments "adynamic" -override[].field "loc_position" -override[].command "attribute" -override[].arguments "loc_pos_zcurve" -override[].field "anotbolded" -override[].command "attribute" -override[].arguments "a" -override[].field "loc_pos_zcurve" -override[].command "attribute" -override[].arguments "loc_pos_zcurve" -override[].field "abolded2" -override[].command "dynamicteaser" -override[].arguments "abolded2" -override[].field "aboldeddynamic" -override[].command "dynamicteaser" -override[].arguments "aboldeddynamic" -override[].field "loc_pos" -override[].command "geopos" -override[].arguments "loc_pos_zcurve" -override[].field "abolded" -override[].command "dynamicteaser" -override[].arguments "abolded" -override[].field "dynamice" -override[].command "dynamicteaser" -override[].arguments "dynamice" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/music/summarymap.cfg b/config-model/src/test/derived/music/summarymap.cfg deleted file mode 100644 index 2973d4f6750..00000000000 --- a/config-model/src/test/derived/music/summarymap.cfg +++ /dev/null @@ -1,49 +0,0 @@ -defaultoutputclass -1 -override[].field "bgndata" -override[].command "dynamicteaser" -override[].arguments "bgndata" -override[].field "sales" -override[].command "attribute" -override[].arguments "sales" -override[].field "pto" -override[].command "attribute" -override[].arguments "pto" -override[].field "mid" -override[].command "attribute" -override[].arguments "mid" -override[].field "ew" -override[].command "dynamicteaser" -override[].arguments "ew" -override[].field "weight" -override[].command "attribute" -override[].arguments "weight" -override[].field "song" -override[].command "dynamicteaser" -override[].arguments "song" -override[].field "bgnpfrom" -override[].command "attribute" -override[].arguments "bgnpfrom" -override[].field "newestedition" -override[].command "attribute" -override[].arguments "newestedition" -override[].field "bgnpto" -override[].command "dynamicteaser" -override[].arguments "bgnpto" -override[].field "year" -override[].command "attribute" -override[].arguments "year" -override[].field "did" -override[].command "attribute" -override[].arguments "did" -override[].field "cbid" -override[].command "attribute" -override[].arguments "cbid" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/newrank/summarymap.cfg b/config-model/src/test/derived/newrank/summarymap.cfg deleted file mode 100644 index e769e3a2a5a..00000000000 --- a/config-model/src/test/derived/newrank/summarymap.cfg +++ /dev/null @@ -1,52 +0,0 @@ -defaultoutputclass -1 -override[].field "bgndata" -override[].command "dynamicteaser" -override[].arguments "bgndata" -override[].field "sales" -override[].command "attribute" -override[].arguments "sales" -override[].field "pto" -override[].command "attribute" -override[].arguments "pto" -override[].field "mid" -override[].command "attribute" -override[].arguments "mid" -override[].field "ew" -override[].command "dynamicteaser" -override[].arguments "ew" -override[].field "weight" -override[].command "attribute" -override[].arguments "weight" -override[].field "song" -override[].command "dynamicteaser" -override[].arguments "song" -override[].field "bgnpfrom" -override[].command "attribute" -override[].arguments "bgnpfrom" -override[].field "newestedition" -override[].command "attribute" -override[].arguments "newestedition" -override[].field "bgnpto" -override[].command "dynamicteaser" -override[].arguments "bgnpto" -override[].field "year" -override[].command "attribute" -override[].arguments "year" -override[].field "did" -override[].command "attribute" -override[].arguments "did" -override[].field "scorekey" -override[].command "attribute" -override[].arguments "scorekey" -override[].field "cbid" -override[].command "attribute" -override[].arguments "cbid" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/position_nosummary/summarymap.cfg b/config-model/src/test/derived/position_nosummary/summarymap.cfg deleted file mode 100644 index 2ed737b5205..00000000000 --- a/config-model/src/test/derived/position_nosummary/summarymap.cfg +++ /dev/null @@ -1,13 +0,0 @@ -defaultoutputclass -1 -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "pos_zcurve" -override[].command "attribute" -override[].arguments "pos_zcurve" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/position_summary/summarymap.cfg b/config-model/src/test/derived/position_summary/summarymap.cfg deleted file mode 100644 index d34c4727810..00000000000 --- a/config-model/src/test/derived/position_summary/summarymap.cfg +++ /dev/null @@ -1,16 +0,0 @@ -defaultoutputclass -1 -override[].field "pos" -override[].command "geopos" -override[].arguments "pos_zcurve" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "pos_zcurve" -override[].command "attribute" -override[].arguments "pos_zcurve" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/predicate_attribute/summarymap.cfg b/config-model/src/test/derived/predicate_attribute/summarymap.cfg deleted file mode 100644 index b247ff94bbf..00000000000 --- a/config-model/src/test/derived/predicate_attribute/summarymap.cfg +++ /dev/null @@ -1,10 +0,0 @@ -defaultoutputclass -1 -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/rankingexpression/summarymap.cfg b/config-model/src/test/derived/rankingexpression/summarymap.cfg deleted file mode 100644 index bc8e67320ad..00000000000 --- a/config-model/src/test/derived/rankingexpression/summarymap.cfg +++ /dev/null @@ -1,37 +0,0 @@ -defaultoutputclass -1 -override[].field "year" -override[].command "attribute" -override[].arguments "year" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "foo1" -override[].command "attribute" -override[].arguments "foo1" -override[].field "foo2" -override[].command "attribute" -override[].arguments "foo2" -override[].field "foo3" -override[].command "attribute" -override[].arguments "foo3" -override[].field "foo4" -override[].command "attribute" -override[].arguments "foo4" -override[].field "bar1" -override[].command "attribute" -override[].arguments "bar1" -override[].field "bar2" -override[].command "attribute" -override[].arguments "bar2" -override[].field "bar3" -override[].command "attribute" -override[].arguments "bar3" -override[].field "bar4" -override[].command "attribute" -override[].arguments "bar4" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/ranktypes/summarymap.cfg b/config-model/src/test/derived/ranktypes/summarymap.cfg deleted file mode 100644 index b247ff94bbf..00000000000 --- a/config-model/src/test/derived/ranktypes/summarymap.cfg +++ /dev/null @@ -1,10 +0,0 @@ -defaultoutputclass -1 -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/reference_fields/summarymap.cfg b/config-model/src/test/derived/reference_fields/summarymap.cfg deleted file mode 100644 index b247ff94bbf..00000000000 --- a/config-model/src/test/derived/reference_fields/summarymap.cfg +++ /dev/null @@ -1,10 +0,0 @@ -defaultoutputclass -1 -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/schemainheritance/summarymap.cfg b/config-model/src/test/derived/schemainheritance/summarymap.cfg deleted file mode 100644 index 98885124eab..00000000000 --- a/config-model/src/test/derived/schemainheritance/summarymap.cfg +++ /dev/null @@ -1,16 +0,0 @@ -defaultoutputclass -1 -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "parent_field" -override[].command "attribute" -override[].arguments "parent_field" -override[].field "child_field" -override[].command "attribute" -override[].arguments "child_field" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/streamingstruct/summarymap.cfg b/config-model/src/test/derived/streamingstruct/summarymap.cfg deleted file mode 100644 index acb9b3491c3..00000000000 --- a/config-model/src/test/derived/streamingstruct/summarymap.cfg +++ /dev/null @@ -1,16 +0,0 @@ -defaultoutputclass -1 -override[].field "snippet" -override[].command "dynamicteaser" -override[].arguments "snippet" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "g" -override[].command "dynamicteaser" -override[].arguments "g" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/derived/twostreamingstructs/summarymap.cfg b/config-model/src/test/derived/twostreamingstructs/summarymap.cfg deleted file mode 100644 index 865c6f733f1..00000000000 --- a/config-model/src/test/derived/twostreamingstructs/summarymap.cfg +++ /dev/null @@ -1,13 +0,0 @@ -defaultoutputclass -1 -override[].field "snippet" -override[].command "dynamicteaser" -override[].arguments "snippet" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "g" -override[].command "dynamicteaser" -override[].arguments "g" diff --git a/config-model/src/test/derived/types/summarymap.cfg b/config-model/src/test/derived/types/summarymap.cfg deleted file mode 100644 index 21ecb2dd07d..00000000000 --- a/config-model/src/test/derived/types/summarymap.cfg +++ /dev/null @@ -1,34 +0,0 @@ -defaultoutputclass -1 -override[].field "abyte" -override[].command "attribute" -override[].arguments "abyte" -override[].field "along" -override[].command "attribute" -override[].arguments "along" -override[].field "abool" -override[].command "attribute" -override[].arguments "abool" -override[].field "ashortfloat" -override[].command "attribute" -override[].arguments "ashortfloat" -override[].field "tagfield" -override[].command "attribute" -override[].arguments "tagfield" -override[].field "album1" -override[].command "attribute" -override[].arguments "album1" -override[].field "rankfeatures" -override[].command "rankfeatures" -override[].arguments "" -override[].field "summaryfeatures" -override[].command "summaryfeatures" -override[].arguments "" -override[].field "other" -override[].command "attribute" -override[].arguments "other" -override[].field "juletre" -override[].command "attribute" -override[].arguments "juletre" -override[].field "documentid" -override[].command "documentid" -override[].arguments "" diff --git a/config-model/src/test/java/com/yahoo/schema/derived/SummaryMapTestCase.java b/config-model/src/test/java/com/yahoo/schema/derived/SummaryMapTestCase.java deleted file mode 100644 index 577bcf6efcc..00000000000 --- a/config-model/src/test/java/com/yahoo/schema/derived/SummaryMapTestCase.java +++ /dev/null @@ -1,214 +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.config.model.test.MockApplicationPackage; -import com.yahoo.schema.*; -import com.yahoo.vespa.config.search.SummarymapConfig; -import com.yahoo.config.model.application.provider.BaseDeployLogger; -import com.yahoo.document.PositionDataType; -import com.yahoo.schema.document.SDDocumentType; -import com.yahoo.schema.document.SDField; -import com.yahoo.schema.parser.ParseException; -import com.yahoo.schema.processing.Processing; -import com.yahoo.vespa.documentmodel.SummaryTransform; -import com.yahoo.vespa.model.container.search.QueryProfiles; -import org.junit.jupiter.api.Test; - -import java.io.IOException; -import java.util.Iterator; -import java.util.Set; - -import static com.yahoo.config.model.test.TestUtil.joinLines; -import static org.junit.jupiter.api.Assertions.*; - -/** - * Tests summary map extraction - * - * @author bratseth - */ -public class SummaryMapTestCase extends AbstractSchemaTestCase { - @Test - void testDeriving() throws IOException, ParseException { - Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/simple.sd"); - SummaryMap summaryMap = new SummaryMap(schema); - - Iterator<FieldResultTransform> transforms = summaryMap.resultTransforms().values().iterator(); - FieldResultTransform transform = transforms.next(); - assertEquals("dyndesc", transform.getFieldName()); - assertEquals(SummaryTransform.DYNAMICTEASER, transform.getTransform()); - - transform = transforms.next(); - assertEquals("dynlong", transform.getFieldName()); - assertEquals(SummaryTransform.DYNAMICTEASER, transform.getTransform()); - - transform = transforms.next(); - assertEquals("dyndesc2", transform.getFieldName()); - assertEquals(SummaryTransform.DYNAMICTEASER, transform.getTransform()); - - transform = transforms.next(); - assertEquals("measurement", transform.getFieldName()); - assertEquals(SummaryTransform.ATTRIBUTE, transform.getTransform()); - - transform = transforms.next(); - assertEquals("rankfeatures", transform.getFieldName()); - assertEquals(SummaryTransform.RANKFEATURES, transform.getTransform()); - - transform = transforms.next(); - assertEquals("summaryfeatures", transform.getFieldName()); - assertEquals(SummaryTransform.SUMMARYFEATURES, transform.getTransform()); - - transform = transforms.next(); - assertEquals("popsiness", transform.getFieldName()); - assertEquals(SummaryTransform.ATTRIBUTE, transform.getTransform()); - - transform = transforms.next(); - assertEquals("popularity", transform.getFieldName()); - assertEquals(SummaryTransform.ATTRIBUTE, transform.getTransform()); - - transform = transforms.next(); - assertEquals("access", transform.getFieldName()); - assertEquals(SummaryTransform.ATTRIBUTE, transform.getTransform()); - - transform = transforms.next(); - assertEquals("documentid", transform.getFieldName()); - assertEquals(SummaryTransform.DOCUMENT_ID, transform.getTransform()); - - assertFalse(transforms.hasNext()); - } - - @Test - void testPositionDeriving() { - Schema schema = new Schema("store", MockApplicationPackage.createEmpty()); - SDDocumentType document = new SDDocumentType("store"); - schema.addDocument(document); - String fieldName = "location"; - SDField field = document.addField(fieldName, PositionDataType.INSTANCE); - field.parseIndexingScript("{ attribute | summary }"); - new Processing().process(schema, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles(), - true, false, Set.of()); - SummaryMap summaryMap = new SummaryMap(schema); - - Iterator<FieldResultTransform> transforms = summaryMap.resultTransforms().values().iterator(); - - FieldResultTransform transform = transforms.next(); - - assertEquals(fieldName, transform.getFieldName()); - assertEquals(SummaryTransform.GEOPOS, transform.getTransform()); - - transform = transforms.next(); - assertEquals("rankfeatures", transform.getFieldName()); - assertEquals(SummaryTransform.RANKFEATURES, transform.getTransform()); - - transform = transforms.next(); - assertEquals("summaryfeatures", transform.getFieldName()); - assertEquals(SummaryTransform.SUMMARYFEATURES, transform.getTransform()); - - transform = transforms.next(); - assertEquals("location_zcurve", transform.getFieldName()); - assertEquals(SummaryTransform.ATTRIBUTE, transform.getTransform()); - - transform = transforms.next(); - assertEquals("documentid", transform.getFieldName()); - assertEquals(SummaryTransform.DOCUMENT_ID, transform.getTransform()); - - assertFalse(transforms.hasNext()); - - SummarymapConfig.Builder scb = new SummarymapConfig.Builder(); - summaryMap.getConfig(scb); - SummarymapConfig c = scb.build(); - - assertEquals(-1, c.defaultoutputclass()); - assertEquals(c.override().size(), 5); - - assertEquals(c.override(0).field(), fieldName); - assertEquals(c.override(0).command(), "geopos"); - assertEquals(c.override(0).arguments(), PositionDataType.getZCurveFieldName(fieldName)); - - assertEquals(c.override(1).field(), "rankfeatures"); - assertEquals(c.override(1).command(), "rankfeatures"); - assertEquals(c.override(1).arguments(), ""); - - assertEquals(c.override(2).field(), "summaryfeatures"); - assertEquals(c.override(2).command(), "summaryfeatures"); - assertEquals(c.override(2).arguments(), ""); - - assertEquals(c.override(3).field(), "location_zcurve"); - assertEquals(c.override(3).command(), "attribute"); - assertEquals(c.override(3).arguments(), "location_zcurve"); - } - - @Test - void testFailOnSummaryFieldSourceCollision() { - try { - ApplicationBuilder.buildFromFile("src/test/examples/summaryfieldcollision.sd"); - } catch (Exception e) { - assertTrue(e.getMessage().matches(".*equally named field.*")); - } - } - - @Test - void source_field_is_passed_as_argument_in_matched_elements_filter_transforms() throws ParseException { - assertOverride(joinLines("field my_field type map<string, string> {", - " indexing: summary", - " summary: matched-elements-only", - " struct-field key { indexing: attribute }", - "}"), "my_field", SummaryTransform.MATCHED_ELEMENTS_FILTER.getName()); - - assertOverride(joinLines("field my_field type map<string, string> {", - " indexing: summary", - " summary: matched-elements-only", - " struct-field key { indexing: attribute }", - " struct-field value { indexing: attribute }", - "}"), "my_field", SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER.getName()); - } - - @Test - void commands_that_are_dynamic_and_require_the_query() { - assertTrue(SummaryMap.isDynamicCommand("dynamicteaser")); - assertTrue(SummaryMap.isDynamicCommand(SummaryTransform.MATCHED_ELEMENTS_FILTER.getName())); - assertTrue(SummaryMap.isDynamicCommand(SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER.getName())); - assertFalse(SummaryMap.isDynamicCommand(SummaryTransform.ATTRIBUTE.getName())); - } - - @Test - void documentid_summary_field_has_corresponding_summary_transform() throws ParseException { - var schema = buildSchema("field foo type string { indexing: summary }", - joinLines("document-summary bar {", - " summary documentid type string {}", - "}")); - assertOverride(schema, "documentid", SummaryTransform.DOCUMENT_ID.getName(), ""); - } - - @Test - void documentid_summary_transform_requires_disk_access() { - assertFalse(SummaryTransform.DOCUMENT_ID.isInMemory()); - } - - private void assertOverride(String fieldContent, String expFieldName, String expCommand) throws ParseException { - assertOverride(buildSchema(fieldContent, ""), expFieldName, expCommand, expFieldName); - } - - private void assertOverride(Schema schema, String expFieldName, String expCommand, String expArguments) throws ParseException { - var summaryMap = new SummaryMap(schema); - var cfgBuilder = new SummarymapConfig.Builder(); - summaryMap.getConfig(cfgBuilder); - var cfg = new SummarymapConfig(cfgBuilder); - var override = cfg.override(0); - assertEquals(expFieldName, override.field()); - assertEquals(expCommand, override.command()); - assertEquals(expArguments, override.arguments()); - } - - private Schema buildSchema(String field, String documentSummary) throws ParseException { - var builder = new ApplicationBuilder(new RankProfileRegistry()); - builder.addSchema(joinLines("search test {", - " document test {", - field, - " }", - documentSummary, - "}")); - builder.build(true); - return builder.getSchema(); - } - -} diff --git a/config-model/src/test/java/com/yahoo/schema/derived/SummaryTestCase.java b/config-model/src/test/java/com/yahoo/schema/derived/SummaryTestCase.java index c83fc1ac63b..2071d142da9 100644 --- a/config-model/src/test/java/com/yahoo/schema/derived/SummaryTestCase.java +++ b/config-model/src/test/java/com/yahoo/schema/derived/SummaryTestCase.java @@ -2,19 +2,29 @@ package com.yahoo.schema.derived; import com.yahoo.config.model.application.provider.BaseDeployLogger; +import com.yahoo.config.model.test.MockApplicationPackage; +import com.yahoo.document.PositionDataType; +import com.yahoo.schema.RankProfileRegistry; import com.yahoo.schema.Schema; import com.yahoo.schema.ApplicationBuilder; import com.yahoo.schema.AbstractSchemaTestCase; +import com.yahoo.schema.document.SDDocumentType; +import com.yahoo.schema.document.SDField; import com.yahoo.schema.parser.ParseException; +import com.yahoo.schema.processing.Processing; import com.yahoo.vespa.config.search.SummaryConfig; +import com.yahoo.vespa.documentmodel.SummaryTransform; +import com.yahoo.vespa.model.container.search.QueryProfiles; import org.junit.jupiter.api.Test; import java.io.IOException; -import java.util.Iterator; +import java.util.Set; import static com.yahoo.config.model.test.TestUtil.joinLines; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * Tests summary extraction @@ -60,10 +70,7 @@ public class SummaryTestCase extends AbstractSchemaTestCase { SummaryClass summary = new SummaryClass(schema, schema.getSummary("default"), new BaseDeployLogger()); assertEquals("default", summary.getName()); - Iterator<SummaryClassField> fields = summary.fields().values().iterator(); - - SummaryClassField field; - + var fields = summary.fields().values().iterator(); assertEquals(13, summary.fields().size()); assertSummaryField("exactemento", SummaryClassField.Type.LONGSTRING, fields.next()); @@ -157,4 +164,100 @@ public class SummaryTestCase extends AbstractSchemaTestCase { assertEquals(expected, config.omitsummaryfeatures()); } + @Test + void testPositionDeriving() { + Schema schema = new Schema("store", MockApplicationPackage.createEmpty()); + SDDocumentType document = new SDDocumentType("store"); + schema.addDocument(document); + String fieldName = "location"; + SDField field = document.addField(fieldName, PositionDataType.INSTANCE); + field.parseIndexingScript("{ attribute | summary }"); + new Processing().process(schema, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles(), + true, false, Set.of()); + + var summary = new SummaryClass(schema, schema.getSummary("default"), new BaseDeployLogger()); + var fields = summary.fields().values().iterator(); + assertEquals(4, summary.fields().size()); + assertSummaryField(fieldName, SummaryClassField.Type.JSONSTRING, "geopos", "location_zcurve", fields.next()); + assertSummaryField("rankfeatures", SummaryClassField.Type.FEATUREDATA, "rankfeatures", fields.next()); + assertSummaryField("summaryfeatures", SummaryClassField.Type.FEATUREDATA, "summaryfeatures", fields.next()); + assertSummaryField("documentid", SummaryClassField.Type.LONGSTRING, "documentid", fields.next()); + } + + @Test + void testFailOnSummaryFieldSourceCollision() { + try { + ApplicationBuilder.buildFromFile("src/test/examples/summaryfieldcollision.sd"); + } catch (Exception e) { + assertTrue(e.getMessage().matches(".*equally named field.*")); + } + } + + @Test + void source_field_is_passed_as_argument_in_matched_elements_filter_transforms() throws ParseException { + assertOverride(joinLines("field my_field type map<string, string> {", + " indexing: summary", + " summary: matched-elements-only", + " struct-field key { indexing: attribute }", + "}"), "my_field", SummaryTransform.MATCHED_ELEMENTS_FILTER.getName()); + + assertOverride(joinLines("field my_field type map<string, string> {", + " indexing: summary", + " summary: matched-elements-only", + " struct-field key { indexing: attribute }", + " struct-field value { indexing: attribute }", + "}"), "my_field", SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER.getName()); + } + + @Test + void commands_that_are_dynamic_and_require_the_query() { + assertTrue(SummaryClass.commandRequiringQuery("dynamicteaser")); + assertTrue(SummaryClass.commandRequiringQuery(SummaryTransform.MATCHED_ELEMENTS_FILTER.getName())); + assertTrue(SummaryClass.commandRequiringQuery(SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER.getName())); + assertFalse(SummaryClass.commandRequiringQuery(SummaryTransform.ATTRIBUTE.getName())); + } + + @Test + void documentid_summary_field_has_corresponding_summary_transform() throws ParseException { + var schema = buildSchema("field foo type string { indexing: summary }", + joinLines("document-summary bar {", + " summary documentid type string {}", + "}")); + assertOverride(schema, "documentid", SummaryTransform.DOCUMENT_ID.getName(), "", "bar"); + } + + @Test + void documentid_summary_transform_requires_disk_access() { + assertFalse(SummaryTransform.DOCUMENT_ID.isInMemory()); + } + + private void assertOverride(String fieldContent, String expFieldName, String expCommand) throws ParseException { + assertOverride(buildSchema(fieldContent, ""), expFieldName, expCommand, expFieldName); + } + + private void assertOverride(Schema schema, String expFieldName, String expCommand, String expSource) throws ParseException { + assertOverride(schema, expFieldName, expCommand, expSource, "default"); + } + + private void assertOverride(Schema schema, String expFieldName, String expCommand, String expSource, String summaryClass) throws ParseException { + var summary = new SummaryClass(schema, schema.getSummary(summaryClass), new BaseDeployLogger()); + var cfg = new SummaryConfig.Classes(summary.getSummaryClassConfig()); + var field = cfg.fields(0); + assertEquals(expFieldName, field.name()); + assertEquals(expCommand, field.command()); + assertEquals(expSource, field.source()); + } + + private Schema buildSchema(String field, String documentSummary) throws ParseException { + var builder = new ApplicationBuilder(new RankProfileRegistry()); + builder.addSchema(joinLines("search test {", + " document test {", + field, + " }", + documentSummary, + "}")); + builder.build(true); + return builder.getSchema(); + } + } |