summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-03-21 09:01:12 +0100
committerGitHub <noreply@github.com>2022-03-21 09:01:12 +0100
commitfe9d264b1238c36f694ce910eb4795302831c33e (patch)
tree3fd25d2d607ceb128d9c88c2980627784f2deb2c
parentf0c1612888321129bd781b5841573a9f84cb0478 (diff)
parentf9be8ecc2dadb96eedf815fb0df999216ac45e1c (diff)
Merge pull request #21753 from vespa-engine/arnej/process-all-the-summary-fields
process all the summary fields with same name
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/ImmutableSchema.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/Schema.java22
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java6
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/PredicateProcessor.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ReferenceFieldsProcessor.java2
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));
}
}