diff options
Diffstat (limited to 'config-model')
7 files changed, 61 insertions, 9 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryMap.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryMap.java index 74de63eae3a..9ef563edbc4 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryMap.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryMap.java @@ -85,9 +85,12 @@ public class SummaryMap extends Derived implements SummarymapConfig.Producer { /** * 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. */ public static boolean isDynamicCommand(String commandName) { - return (commandName.equals("dynamicteaser") || commandName.equals("smartsummary")); + return (commandName.equals("dynamicteaser") || + commandName.equals(SummaryTransform.MATCHED_ELEMENTS_FILTER.getName()) || + commandName.equals(SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER.getName())); } @Override 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 f0575f1f70f..73018e2cbc1 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 @@ -52,6 +52,10 @@ public class AddAttributeTransformToSummaryOfImportedFields extends Processor { } private static void setAttributeCombinerTransform(SummaryField summaryField) { - summaryField.setTransform(SummaryTransform.ATTRIBUTECOMBINER); + if (summaryField.getTransform() == SummaryTransform.MATCHED_ELEMENTS_FILTER) { + summaryField.setTransform(SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER); + } else { + summaryField.setTransform(SummaryTransform.ATTRIBUTECOMBINER); + } } } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeDefaultSummaryTheSuperSet.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeDefaultSummaryTheSuperSet.java index 13eebc289a6..fec610ec41e 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeDefaultSummaryTheSuperSet.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeDefaultSummaryTheSuperSet.java @@ -40,6 +40,7 @@ public class MakeDefaultSummaryTheSuperSet extends Processor { if (defaultSummary.getSummaryField(summaryField.getName()) != null) continue; if (summaryField.getTransform() == SummaryTransform.ATTRIBUTE) continue; if (summaryField.getTransform() == SummaryTransform.ATTRIBUTECOMBINER) continue; + if (summaryField.getTransform() == SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER) continue; defaultSummary.add(summaryField.clone()); } diff --git a/config-model/src/test/derived/imported_struct_fields/child.sd b/config-model/src/test/derived/imported_struct_fields/child.sd index 8453031022b..c5323bd3c7b 100644 --- a/config-model/src/test/derived/imported_struct_fields/child.sd +++ b/config-model/src/test/derived/imported_struct_fields/child.sd @@ -15,5 +15,20 @@ search child { summary my_elem_map type map<string, elem> {} summary my_str_int_map type map<string, int> {} } + + document-summary filtered { + summary elem_array_filtered type array<elem> { + source: my_elem_array + matched-elements-only + } + summary elem_map_filtered type map<string, elem> { + source: my_elem_map + matched-elements-only + } + summary str_int_map_filtered type map<string, int> { + source: my_str_int_map + matched-elements-only + } + } } diff --git a/config-model/src/test/derived/imported_struct_fields/summary.cfg b/config-model/src/test/derived/imported_struct_fields/summary.cfg index 666da5bbc76..3a9bf4f5e0a 100644 --- a/config-model/src/test/derived/imported_struct_fields/summary.cfg +++ b/config-model/src/test/derived/imported_struct_fields/summary.cfg @@ -23,9 +23,21 @@ classes[1].fields[4].name "rankfeatures" classes[1].fields[4].type "featuredata" classes[1].fields[5].name "summaryfeatures" classes[1].fields[5].type "featuredata" -classes[2].id 1274088866 -classes[2].name "attributeprefetch" -classes[2].fields[0].name "rankfeatures" -classes[2].fields[0].type "featuredata" -classes[2].fields[1].name "summaryfeatures" -classes[2].fields[1].type "featuredata"
\ No newline at end of file +classes[2].id 1629947863 +classes[2].name "filtered" +classes[2].fields[0].name "elem_array_filtered" +classes[2].fields[0].type "jsonstring" +classes[2].fields[1].name "elem_map_filtered" +classes[2].fields[1].type "jsonstring" +classes[2].fields[2].name "str_int_map_filtered" +classes[2].fields[2].type "jsonstring" +classes[2].fields[3].name "rankfeatures" +classes[2].fields[3].type "featuredata" +classes[2].fields[4].name "summaryfeatures" +classes[2].fields[4].type "featuredata" +classes[3].id 1274088866 +classes[3].name "attributeprefetch" +classes[3].fields[0].name "rankfeatures" +classes[3].fields[0].type "featuredata" +classes[3].fields[1].name "summaryfeatures" +classes[3].fields[1].type "featuredata"
\ No newline at end of file diff --git a/config-model/src/test/derived/imported_struct_fields/summarymap.cfg b/config-model/src/test/derived/imported_struct_fields/summarymap.cfg index 0b869417aef..ccb61354ccb 100644 --- a/config-model/src/test/derived/imported_struct_fields/summarymap.cfg +++ b/config-model/src/test/derived/imported_struct_fields/summarymap.cfg @@ -13,4 +13,13 @@ override[3].command "rankfeatures" override[3].arguments "" override[4].field "summaryfeatures" override[4].command "summaryfeatures" -override[4].arguments ""
\ No newline at end of file +override[4].arguments "" +override[5].field "elem_array_filtered" +override[5].command "matchedattributeelementsfilter" +override[5].arguments "my_elem_array" +override[6].field "elem_map_filtered" +override[6].command "matchedattributeelementsfilter" +override[6].arguments "my_elem_map" +override[7].field "str_int_map_filtered" +override[7].command "matchedattributeelementsfilter" +override[7].arguments "my_str_int_map"
\ No newline at end of file diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java index 3f05fc67831..f85f9994e04 100644 --- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java +++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java @@ -167,6 +167,14 @@ public class SummaryMapTestCase extends SearchDefinitionTestCase { "}"), "my_field", SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER.getName()); } + @Test + public 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())); + } + private void assertOverride(String fieldContent, String expFieldName, String expCommand) throws ParseException { var summaryMap = new SummaryMap(buildSearch(fieldContent)); var cfgBuilder = new SummarymapConfig.Builder(); |