summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@oath.com>2018-11-27 13:45:11 +0000
committerTor Egge <Tor.Egge@oath.com>2018-11-28 11:16:23 +0000
commit554f4dc0126015c5b2ce3d4c178281e4de3e32a5 (patch)
treed654cf8155ffac7f3910dd52cdf512f7a695cfce /config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java
parent2cf235d0a77e71dba5884273579c549ca844743a (diff)
Generate index info config for imported complex fields.
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java22
1 files changed, 22 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java
index a719a67274f..ae5494ec636 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java
@@ -11,6 +11,9 @@ import com.yahoo.vespa.documentmodel.SummaryField;
import com.yahoo.search.config.IndexInfoConfig;
import java.util.*;
+import java.util.stream.Stream;
+
+import static com.yahoo.searchdefinition.document.ComplexAttributeFieldUtils.isMapOfSimpleStruct;
/**
* Per-index commands which should be applied to queries prior to searching
@@ -73,6 +76,9 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer {
addIndexCommand(summaryField.getName(), CMD_HIGHLIGHT);
}
}
+ search.importedFields().map(fields -> fields.complexFields().values().stream()).
+ orElse(Stream.empty()).
+ forEach(field -> deriveImportedComplexField(field));
}
@Override
@@ -82,6 +88,22 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer {
}
}
+ private void deriveImportedComplexField(ImportedField field) {
+ ImmutableSDField targetField = field.targetField();
+ while (targetField.isImportedField()) {
+ targetField = targetField.getBackingField();
+ }
+ addStructFieldIndexCommand(field.fieldName());
+ if (isMapOfSimpleStruct(targetField)) {
+ addStructFieldIndexCommand(field.fieldName() + ".value");
+ }
+ }
+
+ private void addStructFieldIndexCommand(String fieldName) {
+ addIndexCommand(fieldName, CMD_MULTIVALUE);
+ addIndexCommand(fieldName, CMD_INDEX);
+ }
+
private String toSpaceSeparated(Collection c) {
StringBuffer b = new StringBuffer();
for (Iterator i = c.iterator(); i.hasNext();) {