diff options
author | Arne H Juul <arnej@yahooinc.com> | 2022-02-24 18:01:23 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2022-02-24 18:05:20 +0000 |
commit | cb7a195768374d422c202112bfb50487fab7cfc1 (patch) | |
tree | 655f99848c6257015533dbfd0a38e79d1358392f /config-model/src/main/java/com/yahoo | |
parent | bc02c9b1906d4310ad71fb95442b7421343077c8 (diff) |
fix "summary" handling
* after closer inspection, change handling of the different
summary-to, summary: and summary { } variants, to make
new unit tests pass.
Diffstat (limited to 'config-model/src/main/java/com/yahoo')
-rw-r--r-- | config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedField.java | 29 | ||||
-rw-r--r-- | config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedSummaryField.java | 8 |
2 files changed, 35 insertions, 2 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedField.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedField.java index 5066da2acd0..9c7400136ab 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedField.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedField.java @@ -62,6 +62,35 @@ class ParsedField extends ParsedBlock { Optional<ParsedSorting> getSorting() { return Optional.ofNullable(sortSettings); } Map<String, String> getRankTypes() { return Map.copyOf(rankTypes); } + /** get an existing summary field for modification, or create it */ + ParsedSummaryField summaryFieldFor(String name) { + if (summaryFields.containsKey(name)) { + return summaryFields.get(name); + } + var sf = new ParsedSummaryField(name, getType()); + summaryFields.put(name, sf); + return sf; + } + + /** get an existing summary field for modification, or create it */ + ParsedSummaryField summaryFieldFor(String name, ParsedType type) { + if (summaryFields.containsKey(name)) { + var sf = summaryFields.get(name); + if (sf.getType() == null) { + sf.setType(type); + } else { + // TODO check that types are properly equal here + String oldName = sf.getType().name(); + String newName = type.name(); + verifyThat(newName.equals(oldName), "type mismatch for summary field", name, ":", oldName, "/", newName); + } + return sf; + } + var sf = new ParsedSummaryField(name, type); + summaryFields.put(name, sf); + return sf; + } + void addAlias(String from, String to) { verifyThat(! aliases.containsKey(to), "already has alias", to); aliases.put(to, from); diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedSummaryField.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedSummaryField.java index 2de0d402029..40e95045afd 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedSummaryField.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedSummaryField.java @@ -13,7 +13,7 @@ import java.util.List; **/ class ParsedSummaryField extends ParsedBlock { - private final ParsedType type; + private ParsedType type; private boolean isDyn = false; private boolean isMEO = false; private boolean isFull = false; @@ -30,7 +30,7 @@ class ParsedSummaryField extends ParsedBlock { this.type = type; } - ParsedType type() { return type; } + ParsedType getType() { return type; } List<String> getDestinations() { return List.copyOf(destinations); } List<String> getSources() { return List.copyOf(sources); } boolean getBolded() { return isBold; } @@ -44,4 +44,8 @@ class ParsedSummaryField extends ParsedBlock { void setDynamic() { this.isDyn = true; } void setFull() { this.isFull = true; } void setMatchedElementsOnly() { this.isMEO = true; } + void setType(ParsedType value) { + verifyThat(type == null, "Cannot change type from ", type, "to", value); + this.type = value; + } } |