diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2018-10-11 14:43:09 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@broadpark.no> | 2018-10-11 14:43:09 +0200 |
commit | 37d9d431b6d687279402da0f93775f2803aeceae (patch) | |
tree | eafc8b31178c986a3dc9fb8b43d13a0ddfa95c28 /config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java | |
parent | b465c6e8aa3e5e0ac4fbdd9814b813e1c845457a (diff) |
Generate index-info config for struct attributes.
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 | 16 |
1 files changed, 10 insertions, 6 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 48723294f60..2e9c2a6e3f3 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 @@ -95,6 +95,10 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer { @Override protected void derive(ImmutableSDField field, Search search) { + derive(field, search, false); + } + + protected void derive(ImmutableSDField field, Search search, boolean inPosition) { if (field.getDataType().equals(DataType.PREDICATE)) { Index index = field.getIndex(field.getName()); if (index != null) { @@ -113,15 +117,15 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer { String name = e.getValue(); addIndexAlias(alias, name); } + boolean isPosition = field.getDataType().equals(PositionDataType.INSTANCE) || + field.getDataType().equals(DataType.getArray(PositionDataType.INSTANCE)); if (field.usesStructOrMap()) { for (ImmutableSDField structField : field.getStructFields()) { - derive(structField, search); // Recursion + derive(structField, search, isPosition); // Recursion } } - if (field.getDataType().equals(PositionDataType.INSTANCE) || - field.getDataType().equals(DataType.getArray(PositionDataType.INSTANCE))) - { + if (isPosition) { addIndexCommand(field.getName(), CMD_DEFAULT_POSITION); } @@ -135,9 +139,9 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer { addIndexCommand(field, CMD_MULTIVALUE); } - if (field.doesAttributing() && !field.doesIndexing()) { + Attribute attribute = field.getAttributes().get(field.getName()); + if ((field.doesAttributing() || (attribute != null && !inPosition)) && !field.doesIndexing()) { addIndexCommand(field.getName(), CMD_ATTRIBUTE); - Attribute attribute = field.getAttributes().get(field.getName()); if (attribute != null && attribute.isFastSearch()) addIndexCommand(field.getName(), CMD_FAST_SEARCH); } else if (field.doesIndexing()) { |