diff options
author | Geir Storli <geirst@oath.com> | 2018-06-14 14:14:37 +0200 |
---|---|---|
committer | Geir Storli <geirst@oath.com> | 2018-06-14 14:14:37 +0200 |
commit | 27b64a81a6a133976bd17385eb150e34added12d (patch) | |
tree | 3c77e50f333737ab7402a2a8ab4dc892d9cb8208 /config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java | |
parent | 031e982e308c25790e1ad029e92c4b89481b582a (diff) |
Use document type to resolve struct data types when checking whether a complex field supports being represented as struct field attributes.
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java')
-rw-r--r-- | config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java index 6070aeb0ee1..55f3a94bb70 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java @@ -8,6 +8,7 @@ import com.yahoo.searchdefinition.Search; import com.yahoo.searchdefinition.document.Attribute; import com.yahoo.searchdefinition.document.ImmutableSDField; import com.yahoo.searchdefinition.document.Ranking; +import com.yahoo.searchdefinition.document.SDDocumentType; import com.yahoo.searchdefinition.document.Sorting; import com.yahoo.vespa.config.search.AttributesConfig; import com.yahoo.vespa.indexinglanguage.expressions.ToPositionExpression; @@ -23,6 +24,7 @@ import java.util.stream.Collectors; import static com.yahoo.searchdefinition.document.ComplexAttributeFieldUtils.isArrayOfSimpleStruct; import static com.yahoo.searchdefinition.document.ComplexAttributeFieldUtils.isMapOfPrimitiveType; import static com.yahoo.searchdefinition.document.ComplexAttributeFieldUtils.isMapOfSimpleStruct; +import static com.yahoo.searchdefinition.document.ComplexAttributeFieldUtils.isSupportedComplexField; /** * The set of all attribute fields defined by a search definition @@ -46,14 +48,14 @@ public class AttributeFields extends Derived implements AttributesConfig.Produce /** Derives everything from a field */ @Override protected void derive(ImmutableSDField field, Search search) { - if (unsupportedFieldType(field)) { + if (unsupportedFieldType(field, search.getDocument())) { return; // Ignore complex struct and map fields for indexed search (only supported for streaming search) } if (field.isImportedField()) { deriveImportedAttributes(field); - } else if (isArrayOfSimpleStruct(field)) { + } else if (isArrayOfSimpleStruct(field, search.getDocument())) { deriveArrayOfSimpleStruct(field); - } else if (isMapOfSimpleStruct(field)) { + } else if (isMapOfSimpleStruct(field, search.getDocument())) { deriveMapOfSimpleStruct(field); } else if (isMapOfPrimitiveType(field)) { deriveMapOfPrimitiveType(field); @@ -62,11 +64,9 @@ public class AttributeFields extends Derived implements AttributesConfig.Produce } } - private static boolean unsupportedFieldType(ImmutableSDField field) { + private static boolean unsupportedFieldType(ImmutableSDField field, SDDocumentType docType) { return (field.usesStructOrMap() && - !isArrayOfSimpleStruct(field) && - !isMapOfSimpleStruct(field) && - !isMapOfPrimitiveType(field) && + !isSupportedComplexField(field, docType) && !field.getDataType().equals(PositionDataType.INSTANCE) && !field.getDataType().equals(DataType.getArray(PositionDataType.INSTANCE))); } |