diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-03-21 09:01:12 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-21 09:01:12 +0100 |
commit | fe9d264b1238c36f694ce910eb4795302831c33e (patch) | |
tree | 3fd25d2d607ceb128d9c88c2980627784f2deb2c | |
parent | f0c1612888321129bd781b5841573a9f84cb0478 (diff) | |
parent | f9be8ecc2dadb96eedf815fb0df999216ac45e1c (diff) |
Merge pull request #21753 from vespa-engine/arnej/process-all-the-summary-fields
process all the summary fields with same name
6 files changed, 21 insertions, 15 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/ImmutableSchema.java b/config-model/src/main/java/com/yahoo/searchdefinition/ImmutableSchema.java index d0f958741fe..b2f46f4a309 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/ImmutableSchema.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/ImmutableSchema.java @@ -46,6 +46,6 @@ public interface ImmutableSchema { } List<ImmutableSDField> allFieldsList(); - Map<String, SummaryField> getSummaryFields(ImmutableSDField field); + List<SummaryField> getSummaryFields(ImmutableSDField field); } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/Schema.java b/config-model/src/main/java/com/yahoo/searchdefinition/Schema.java index 12b0394b090..203a109acd5 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/Schema.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/Schema.java @@ -584,21 +584,27 @@ public class Schema implements ImmutableSchema { public Map<String, DocumentSummary> getSummariesInThis() { return Collections.unmodifiableMap(summaries); } /** - * Returns all summary fields, of all document summaries, which has the given field as source. If there are - * multiple summary fields with the same name, the last one will be used (they should all have the same content, if - * this is a valid search definition).The map becomes owned by the receiver. + * Returns all summary fields, of all document summaries, which has the given field as source. + * The list becomes owned by the receiver. * * @param field the source field - * @return the map of summary fields found + * @return the list of summary fields found */ @Override - public Map<String, SummaryField> getSummaryFields(ImmutableSDField field) { - Map<String, SummaryField> summaryFields = inherited.isPresent() ? requireInherited().getSummaryFields(field) - : new java.util.LinkedHashMap<>(); + public List<SummaryField> getSummaryFields(ImmutableSDField field) { + List<SummaryField> summaryFields = inherited.isPresent() + ? requireInherited().getSummaryFields(field) + : new java.util.ArrayList<>(); for (DocumentSummary documentSummary : summaries.values()) { for (SummaryField summaryField : documentSummary.getSummaryFields().values()) { if (summaryField.hasSource(field.getName())) { - summaryFields.put(summaryField.getName(), summaryField); + boolean wanted = true; + for (var already : summaryFields) { + if (summaryField == already) wanted = false; + } + if (wanted) { + summaryFields.add(summaryField); + } } } } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java index ac4d51221ef..47ded54dcb6 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java @@ -34,7 +34,7 @@ public class AddAttributeTransformToSummaryOfImportedFields extends Processor { } private Stream<SummaryField> getSummaryFieldsForImportedField(ImmutableSDField importedField) { - return schema.getSummaryFields(importedField).values().stream(); + return schema.getSummaryFields(importedField).stream(); } private void setTransform(ImmutableSDField field) { diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java index 1479f9d8f5a..b10d839535d 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java @@ -42,7 +42,7 @@ public class IndexingOutputs extends Processor { } public void findSummaryTo(Schema schema, SDField field, Set<String> dynamicSummary, Set<String> staticSummary) { - Map<String, SummaryField> summaryFields = schema.getSummaryFields(field); + var summaryFields = schema.getSummaryFields(field); if (summaryFields.isEmpty()) { fillSummaryToFromField(field, dynamicSummary, staticSummary); } else { @@ -50,9 +50,9 @@ public class IndexingOutputs extends Processor { } } - private void fillSummaryToFromSearch(Schema schema, SDField field, Map<String, SummaryField> summaryFields, + private void fillSummaryToFromSearch(Schema schema, SDField field, List<SummaryField> summaryFields, Set<String> dynamicSummary, Set<String> staticSummary) { - for (SummaryField summaryField : summaryFields.values()) { + for (SummaryField summaryField : summaryFields) { fillSummaryToFromSummaryField(schema, field, summaryField, dynamicSummary, staticSummary); } } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/PredicateProcessor.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/PredicateProcessor.java index 493bf9b5251..d7ae4c33fe1 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/PredicateProcessor.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/PredicateProcessor.java @@ -72,7 +72,7 @@ public class PredicateProcessor extends Processor { if (summary != null) { summary.remove(attribute.getName()); } - for (SummaryField summaryField : schema.getSummaryFields(field).values()) { + for (SummaryField summaryField : schema.getSummaryFields(field)) { summaryField.setTransform(SummaryTransform.NONE); } } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReferenceFieldsProcessor.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReferenceFieldsProcessor.java index edb55dae5bf..09fdf9c65f6 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReferenceFieldsProcessor.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReferenceFieldsProcessor.java @@ -58,7 +58,7 @@ public class ReferenceFieldsProcessor extends Processor { } private void clearSummaryTransformOnSummaryFields(SDField field) { - schema.getSummaryFields(field).values().forEach(summaryField -> summaryField.setTransform(SummaryTransform.NONE)); + schema.getSummaryFields(field).forEach(summaryField -> summaryField.setTransform(SummaryTransform.NONE)); } } |