AppSearchSchema.DocumentPropertyConfig.Builder

public final class AppSearchSchema.DocumentPropertyConfig.Builder


Builder for DocumentPropertyConfig.

Summary

Public constructors

Builder(@NonNull String propertyName, @NonNull String schemaType)

Creates a new DocumentPropertyConfig.Builder.

Public methods

@NonNull AppSearchSchema.DocumentPropertyConfig.Builder
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SCHEMA_ADD_INDEXABLE_NESTED_PROPERTIES)
addIndexableNestedProperties(
    @NonNull String[] indexableNestedProperties
)

Adds one or more properties for indexing from the nested document.

@NonNull AppSearchSchema.DocumentPropertyConfig.Builder
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SCHEMA_ADD_INDEXABLE_NESTED_PROPERTIES)
addIndexableNestedProperties(
    @NonNull Collection<String> indexableNestedProperties
)

Adds one or more properties for indexing from the nested document property.

@NonNull AppSearchSchema.DocumentPropertyConfig.Builder
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SCHEMA_ADD_INDEXABLE_NESTED_PROPERTIES)
addIndexableNestedPropertyPaths(
    @NonNull PropertyPath[] indexableNestedPropertyPaths
)

Adds one or more property paths for indexing from the nested document property.

@NonNull AppSearchSchema.DocumentPropertyConfig.Builder
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SCHEMA_ADD_INDEXABLE_NESTED_PROPERTIES)
addIndexableNestedPropertyPaths(
    @NonNull Collection<PropertyPath> indexableNestedPropertyPaths
)

Adds one or more property paths for indexing from the nested document property.

@NonNull AppSearchSchema.DocumentPropertyConfig

Constructs a new PropertyConfig from the contents of this builder.

@NonNull AppSearchSchema.DocumentPropertyConfig.Builder
setCardinality(int cardinality)

Sets the cardinality of the property (whether it is optional, required or repeated).

@NonNull AppSearchSchema.DocumentPropertyConfig.Builder
setShouldIndexNestedProperties(boolean indexNestedProperties)

Configures whether properties in the nested document should be indexed according to that document's schema.

Public constructors

Builder

Added in 1.1.0-alpha04
public Builder(@NonNull String propertyName, @NonNull String schemaType)

Creates a new DocumentPropertyConfig.Builder.

Parameters
@NonNull String propertyName

The logical name of the property in the schema, which will be used as the key for this property in setPropertyDocument.

@NonNull String schemaType

The type of documents which will be stored in this property. Documents of different types cannot be mixed into a single property.

Public methods

addIndexableNestedProperties

@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SCHEMA_ADD_INDEXABLE_NESTED_PROPERTIES)
public @NonNull AppSearchSchema.DocumentPropertyConfig.Builder addIndexableNestedProperties(
    @NonNull String[] indexableNestedProperties
)

Adds one or more properties for indexing from the nested document. The added property will be indexed according to that property's indexing configurations in the document's schema definition. All properties in this list will consume a sectionId regardless of its actual indexing config -- this includes properties added that do not actually exist, as well as properties that are not set as indexable in the nested schema type.

Input strings should follow the format of the property path for the nested property, with '.' as the path separator. This nested document's property name should not be included in the property path.

Ex. Consider an 'Organization' schema type which defines a nested document property 'address' (Address schema type), where Address has a nested document property 'country' (Country schema type with string 'name' property), and a string 'street' property. The 'street' and 'country's name' properties from the 'address' document property can be indexed for the 'Organization' schema type by calling:

OrganizationSchema.addProperty(
                new DocumentPropertyConfig.Builder("address", "Address")
                        .addIndexableNestedProperties("street", "country.name")
                        .build()).

setShouldIndexNestedProperties is required to be false if any indexable nested property is added this way for the document property. Attempting to build a DocumentPropertyConfig when this is not true throws IllegalArgumentException.

TODO(b/291122592): Unhide in Mainline when API updates via Mainline are possible. -->

addIndexableNestedProperties

Added in 1.1.0-alpha04
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SCHEMA_ADD_INDEXABLE_NESTED_PROPERTIES)
public @NonNull AppSearchSchema.DocumentPropertyConfig.Builder addIndexableNestedProperties(
    @NonNull Collection<String> indexableNestedProperties
)

Adds one or more properties for indexing from the nested document property.

TODO(b/291122592): Unhide in Mainline when API updates via Mainline are possible. -->

addIndexableNestedPropertyPaths

@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SCHEMA_ADD_INDEXABLE_NESTED_PROPERTIES)
public @NonNull AppSearchSchema.DocumentPropertyConfig.Builder addIndexableNestedPropertyPaths(
    @NonNull PropertyPath[] indexableNestedPropertyPaths
)

Adds one or more property paths for indexing from the nested document property.

TODO(b/291122592): Unhide in Mainline when API updates via Mainline are possible. -->

addIndexableNestedPropertyPaths

Added in 1.1.0-alpha04
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SCHEMA_ADD_INDEXABLE_NESTED_PROPERTIES)
public @NonNull AppSearchSchema.DocumentPropertyConfig.Builder addIndexableNestedPropertyPaths(
    @NonNull Collection<PropertyPath> indexableNestedPropertyPaths
)

Adds one or more property paths for indexing from the nested document property.

TODO(b/291122592): Unhide in Mainline when API updates via Mainline are possible. -->

build

Added in 1.1.0-alpha04
public @NonNull AppSearchSchema.DocumentPropertyConfig build()

Constructs a new PropertyConfig from the contents of this builder.

Throws
java.lang.IllegalArgumentException

if the provided PropertyConfig sets shouldIndexNestedProperties to true and has one or more properties defined for getIndexableNestedProperties.

setCardinality

Added in 1.1.0-alpha04
public @NonNull AppSearchSchema.DocumentPropertyConfig.Builder setCardinality(int cardinality)

Sets the cardinality of the property (whether it is optional, required or repeated).

If this method is not called, the default cardinality is CARDINALITY_OPTIONAL.

setShouldIndexNestedProperties

Added in 1.1.0-alpha04
public @NonNull AppSearchSchema.DocumentPropertyConfig.Builder setShouldIndexNestedProperties(boolean indexNestedProperties)

Configures whether properties in the nested document should be indexed according to that document's schema.

If false, the nested document's properties are not indexed regardless of its own schema.

To index a subset of properties from the nested document, set this to false and use addIndexableNestedProperties.