Document.StringProperty

@Documented
@Retention(value = RetentionPolicy.CLASS)
@Target(value = [ElementType.FIELD, ElementType.METHOD])
annotation Document.StringProperty


Configures a string member field of a class as a property known to AppSearch.

Summary

Public functions

abstract Int

Configures how a property should be indexed so that it can be retrieved by queries.

abstract Int

Configures how a property should be processed so that the document can be joined.

abstract String!

The name of this property.

abstract Boolean

Configures whether this property must be specified for the document to be valid.

abstract Class<Any!>!

Configures how a property should be converted to and from a String.

abstract Int

Configures how tokens should be extracted from this property.

Public functions

indexingType

Added in 1.1.0-alpha04
abstract fun indexingType(): Int

Configures how a property should be indexed so that it can be retrieved by queries.

If not specified, defaults to INDEXING_TYPE_NONE (the field will not be indexed and cannot be queried). TODO(b/171857731) renamed to TermMatchType when using String-specific indexing config.

joinableValueType

Added in 1.1.0-alpha04
abstract fun joinableValueType(): Int

Configures how a property should be processed so that the document can be joined.

Properties configured with JOINABLE_VALUE_TYPE_QUALIFIED_ID enable the documents to be joined with other documents that have the same qualified ID as the value of this field. (A qualified ID is a compact representation of the tuple that uniquely identifies a document indexed in the AppSearch storage backend.) This property name can be specified as the child property expression in for join operations.

This attribute doesn't apply to properties of a repeated type (e.g., a list).

If not specified, defaults to JOINABLE_VALUE_TYPE_NONE, which means the property can not be used in a child property expression to configure a (.

name

Added in 1.1.0-alpha04
abstract fun name(): String!

The name of this property. This string is used to query against this property.

If not specified, the name of the field in the code will be used instead.

required

Added in 1.1.0-alpha04
abstract fun required(): Boolean

Configures whether this property must be specified for the document to be valid.

This attribute does not apply to properties of a repeated type (e.g. a list).

Please make sure you understand the consequences of required fields on schema migration before setting this attribute to true.

serializer

Added in 1.1.0-alpha04
abstract fun serializer(): Class<Any!>!

Configures how a property should be converted to and from a String.

Useful for representing properties using rich types that boil down to simple string values in the database.

The referenced class must satisfy the following:

  1. Have a static method called serialize that converts the property's Java type to a String.
  2. Have a static method called deserialize that converts a String to the property's Java type or returns null if deserialization failed.

For example:


public final class MyEntity {

    = SomeRichTypeSerializer.class)
    public SomeRichType getMyProperty();

    public final class SomeRichTypeSerializer {
      public static String serialize(SomeRichType instance) {...}

      
      public static SomeRichType deserialize(String string) {...}
    }
}

tokenizerType

Added in 1.1.0-alpha04
abstract fun tokenizerType(): Int

Configures how tokens should be extracted from this property.

If not specified, defaults to TOKENIZER_TYPE_PLAIN (the field will be tokenized along word boundaries as plain text).