summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2019-10-22 14:53:30 +0200
committerGitHub <noreply@github.com>2019-10-22 14:53:30 +0200
commitfd2ec77369f8ef58c844bc6dc912be1fdd2c1118 (patch)
tree8ebeb6b5d2c103d0710aa9d67135485d9a53dfc6 /config-model
parent1f3b8d3dccd622a64cf710fe3b6f77cb26b20269 (diff)
parent4f2f3397b3a66ee377b704ea54ab705db1529c79 (diff)
Merge pull request #11043 from vespa-engine/geirst/matched-elements-only-for-imported-fields
Geirst/matched elements only for imported fields
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryMap.java5
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java6
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeDefaultSummaryTheSuperSet.java1
-rw-r--r--config-model/src/test/derived/imported_struct_fields/child.sd15
-rw-r--r--config-model/src/test/derived/imported_struct_fields/summary.cfg24
-rw-r--r--config-model/src/test/derived/imported_struct_fields/summarymap.cfg11
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java8
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();