diff options
author | Tor Egge <Tor.Egge@oath.com> | 2018-11-27 13:45:11 +0000 |
---|---|---|
committer | Tor Egge <Tor.Egge@oath.com> | 2018-11-28 11:16:23 +0000 |
commit | 554f4dc0126015c5b2ce3d4c178281e4de3e32a5 (patch) | |
tree | d654cf8155ffac7f3910dd52cdf512f7a695cfce /config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java | |
parent | 2cf235d0a77e71dba5884273579c549ca844743a (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.java | 22 |
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();) { |