summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2019-09-24 14:21:59 +0200
committerGeir Storli <geirst@verizonmedia.com>2019-09-24 14:21:59 +0200
commit2ec8d3296889c91fcd9f221f19f6ba1573d50010 (patch)
tree7773889dfca7c62630fe2a5f7e1a385816857dd9 /config-model
parent3a58734ed37e5f5d1d44f6cba1bc7d4ccbf80357 (diff)
Pass source field as argument to matched elements filter transforms.
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryMap.java9
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java39
2 files changed, 46 insertions, 2 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 71bf05dbb6e..74de63eae3a 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
@@ -45,7 +45,10 @@ public class SummaryMap extends Derived implements SummarymapConfig.Producer {
if (summaryField.getTransform()==SummaryTransform.ATTRIBUTE ||
summaryField.getTransform()==SummaryTransform.DISTANCE ||
summaryField.getTransform()==SummaryTransform.GEOPOS ||
- summaryField.getTransform()==SummaryTransform.POSITIONS) {
+ summaryField.getTransform()==SummaryTransform.POSITIONS ||
+ summaryField.getTransform()==SummaryTransform.MATCHED_ELEMENTS_FILTER ||
+ summaryField.getTransform()==SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER)
+ {
resultTransforms.put(summaryField.getName(),new FieldResultTransform(summaryField.getName(),
summaryField.getTransform(),
summaryField.getSingleSource()));
@@ -99,7 +102,9 @@ public class SummaryMap extends Derived implements SummarymapConfig.Producer {
frt.getTransform().equals(SummaryTransform.DISTANCE) ||
frt.getTransform().equals(SummaryTransform.GEOPOS) ||
frt.getTransform().equals(SummaryTransform.POSITIONS) ||
- frt.getTransform().equals(SummaryTransform.TEXTEXTRACTOR))
+ frt.getTransform().equals(SummaryTransform.TEXTEXTRACTOR) ||
+ frt.getTransform().equals(SummaryTransform.MATCHED_ELEMENTS_FILTER) ||
+ frt.getTransform().equals(SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER))
{
oB.arguments(frt.getArgument());
} else {
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 b03db1d7f2e..3f05fc67831 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
@@ -16,6 +16,7 @@ import org.junit.Test;
import java.io.IOException;
import java.util.Iterator;
+import static com.yahoo.config.model.test.TestUtil.joinLines;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -150,4 +151,42 @@ public class SummaryMapTestCase extends SearchDefinitionTestCase {
}
}
+ @Test
+ public void source_field_is_passed_as_argument_in_matched_elements_filter_transforms() throws ParseException {
+ assertOverride(joinLines("field my_field type map<string, string> {",
+ " indexing: summary",
+ " summary: matched-elements-only",
+ " struct-field key { indexing: attribute }",
+ "}"), "my_field", SummaryTransform.MATCHED_ELEMENTS_FILTER.getName());
+
+ assertOverride(joinLines("field my_field type map<string, string> {",
+ " indexing: summary",
+ " summary: matched-elements-only",
+ " struct-field key { indexing: attribute }",
+ " struct-field value { indexing: attribute }",
+ "}"), "my_field", SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER.getName());
+ }
+
+ private void assertOverride(String fieldContent, String expFieldName, String expCommand) throws ParseException {
+ var summaryMap = new SummaryMap(buildSearch(fieldContent));
+ var cfgBuilder = new SummarymapConfig.Builder();
+ summaryMap.getConfig(cfgBuilder);
+ var cfg = new SummarymapConfig(cfgBuilder);
+ var override = cfg.override(0);
+ assertEquals(expFieldName, override.field());
+ assertEquals(expCommand, override.command());
+ assertEquals(expFieldName, override.arguments());
+ }
+
+ private Search buildSearch(String field) throws ParseException {
+ var builder = new SearchBuilder(new RankProfileRegistry());
+ builder.importString(joinLines("search test {",
+ " document test {",
+ field,
+ " }",
+ "}"));
+ builder.build();
+ return builder.getSearch();
+ }
+
}