summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2018-10-11 14:43:09 +0200
committerTor Egge <Tor.Egge@broadpark.no>2018-10-11 14:43:09 +0200
commit37d9d431b6d687279402da0f93775f2803aeceae (patch)
treeeafc8b31178c986a3dc9fb8b43d13a0ddfa95c28 /config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java
parentb465c6e8aa3e5e0ac4fbdd9814b813e1c845457a (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.java16
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()) {