Document.StringProperty

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


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

Summary

Nested types

Public methods

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<Object>

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

abstract int

Configures how tokens should be extracted from this property.

Public methods

indexingType

Added in 1.1.0-alpha04
public abstract int indexingType()

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
public abstract int joinableValueType()

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
public abstract String name()

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
public abstract boolean required()

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
public abstract Class<Objectserializer()

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
public abstract int tokenizerType()

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).