SearchSpec.Builder
class SearchSpec.Builder
Builder for objects.
Summary
Public constructors |
|---|
Builder()Constructs a new |
@ExperimentalAppSearchApiConstructs a new |
Public functions |
|
|---|---|
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SCHEMA_EMBEDDING_PROPERTY_CONFIG)Adds an embedding search to |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SCHEMA_EMBEDDING_PROPERTY_CONFIG)Adds an embedding search to |
SearchSpec.Builder |
addFilterDocumentClasses(documentClasses: Array<Class<Any!>!>)Adds the Schema names of given document classes to the Schema type filter of |
SearchSpec.Builder |
addFilterDocumentClasses(Adds the Schema names of given document classes to the Schema type filter of |
SearchSpec.Builder |
@ExperimentalAppSearchApiAdds a document id filter to |
SearchSpec.Builder |
@ExperimentalAppSearchApiAdds a document id filter to |
SearchSpec.Builder |
addFilterNamespaces(namespaces: Array<String!>)Adds a namespace filter to |
SearchSpec.Builder |
addFilterNamespaces(namespaces: (Mutable)Collection<String!>)Adds a namespace filter to |
SearchSpec.Builder |
addFilterPackageNames(packageNames: Array<String!>)Adds a package name filter to |
SearchSpec.Builder |
addFilterPackageNames(packageNames: (Mutable)Collection<String!>)Adds a package name filter to |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_ADD_FILTER_PROPERTIES)Adds property paths for the specified type to the property filter of |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_ADD_FILTER_PROPERTIES)Adds property paths for the specified type to the property filter of |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_ADD_FILTER_PROPERTIES)Adds property paths for the specified type to the property filter of |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_ADD_FILTER_PROPERTIES)Adds property paths for the specified type to the property filter of |
SearchSpec.Builder |
addFilterSchemas(schemas: Array<String!>)Adds a Schema type filter to |
SearchSpec.Builder |
addFilterSchemas(schemas: (Mutable)Collection<String!>)Adds a Schema type filter to |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_ADD_INFORMATIONAL_RANKING_EXPRESSIONS)Adds informational ranking expressions to be evaluated for each document in the search result. |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_ADD_INFORMATIONAL_RANKING_EXPRESSIONS)Adds informational ranking expressions to be evaluated for each document in the search result. |
SearchSpec.Builder |
addProjection(schema: String, propertyPaths: (Mutable)Collection<String!>)Adds property paths for the specified type to be used for projection. |
SearchSpec.Builder |
addProjectionPaths(Adds property paths for the specified type to be used for projection. |
SearchSpec.Builder |
addProjectionPathsForDocumentClass(Adds property paths for the specified Document class to be used for projection. |
SearchSpec.Builder |
addProjectionsForDocumentClass(Adds property paths for the Document class to be used for projection. |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_SEARCH_STRING_PARAMETERS)Adds Strings to the list of String parameters that can be referenced in the query through the "getSearchStringParameter({index})" function. |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_SEARCH_STRING_PARAMETERS)Adds Strings to the list of String parameters that can be referenced in the query through the "getSearchStringParameter({index})" function. |
SearchSpec |
build()Constructs a new |
SearchSpec.Builder |
Clears the embedding parameters. |
SearchSpec.Builder |
Clears the document id filters. |
SearchSpec.Builder |
Clears all namespace filters. |
SearchSpec.Builder |
Clears all package name filters. |
SearchSpec.Builder |
Clears the property filters for all schema types. |
SearchSpec.Builder |
Clears all schema type filters. |
SearchSpec.Builder |
Clears all informational ranking expressions. |
SearchSpec.Builder |
Clears the |
SearchSpec.Builder |
Clears the projections for all schema types. |
SearchSpec.Builder |
Clears the property weights for all schema types. |
SearchSpec.Builder |
Clears the result grouping and limit. |
SearchSpec.Builder |
Clears the log tag that indicates the source of this search. |
SearchSpec.Builder |
Clears the list of String parameters that can be referenced in the query through the "getSearchStringParameter({index})" function. |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SCHEMA_EMBEDDING_PROPERTY_CONFIG)Sets the default embedding metric type used for embedding search (see |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.JOIN_SPEC_AND_QUALIFIED_ID)Specifies which documents to join with, and how to join. |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.LIST_FILTER_HAS_PROPERTY_FUNCTION)Sets the LIST_FILTER_HAS_PROPERTY_FUNCTION feature as enabled/disabled according to the enabled parameter. |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.LIST_FILTER_MATCH_SCORE_EXPRESSION_FUNCTION)Sets the LIST_FILTER_MATCH_SCORE_EXPRESSION_FUNCTION feature as enabled/disabled according to the enabled parameter. |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.LIST_FILTER_QUERY_LANGUAGE)Sets the LIST_FILTER_QUERY_LANGUAGE feature as enabled/disabled according to the enabled parameter. |
SearchSpec.Builder |
setMaxSnippetSize(maxSnippetSize: @IntRange(from = 0, to = 10000) Int)Sets |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.NUMERIC_SEARCH)Sets the NUMERIC_SEARCH feature as enabled/disabled according to the enabled parameter. |
SearchSpec.Builder |
Sets the order of returned search results, the default is |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_PROPERTY_WEIGHTS)Sets property weights by schema type and property path. |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_PROPERTY_WEIGHTS)Sets property weights by schema type and property path. |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_PROPERTY_WEIGHTS)Sets property weights by schema type and property path. |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_PROPERTY_WEIGHTS)Sets property weights by schema type and property path. |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_ADVANCED_RANKING_EXPRESSION)Enables advanced ranking to score based on |
SearchSpec.Builder |
setRankingStrategy(rankingStrategy: Int)Sets ranking strategy for AppSearch results. |
SearchSpec.Builder |
setResultCountPerPage(Sets the number of results per page in the returned object. |
SearchSpec.Builder |
setResultGrouping(groupingTypeFlags: Int, limit: Int)Sets the maximum number of results to return for each group, where groups are defined by grouping type. |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_EMBEDDING_MATCH_INFO)Sets whether to retrieve embedding match infos as a part of |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SCHEMA_SCORABLE_PROPERTY_CONFIG)Sets the ScorablePropertyRanking feature as enabled or disabled. |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_SET_SEARCH_SOURCE_LOG_TAG)Sets an optional log tag to indicate the source of this search. |
SearchSpec.Builder |
setSnippetCount(snippetCount: @IntRange(from = 0, to = 10000) Int)Sets the |
SearchSpec.Builder |
setSnippetCountPerProperty(Sets |
SearchSpec.Builder |
setTermMatch(termMatchType: Int)Sets how the query terms should match |
SearchSpec.Builder |
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.VERBATIM_SEARCH)Sets the VERBATIM_SEARCH feature as enabled/disabled according to the enabled parameter. |
Public constructors
Builder
@ExperimentalAppSearchApi
Builder(searchSpec: SearchSpec)
Constructs a new Builder from the given SearchSpec.
Public functions
addEmbeddingParameters
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SCHEMA_EMBEDDING_PROPERTY_CONFIG)
fun addEmbeddingParameters(searchEmbeddings: Array<EmbeddingVector!>): SearchSpec.Builder
Adds an embedding search to SearchSpec Entry, which will be referred in the query expression and the ranking expression for embedding search.
| See also | |
|---|---|
search |
|
setRankingStrategy |
addEmbeddingParameters
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SCHEMA_EMBEDDING_PROPERTY_CONFIG)
fun addEmbeddingParameters(
searchEmbeddings: (Mutable)Collection<EmbeddingVector!>
): SearchSpec.Builder
Adds an embedding search to SearchSpec Entry, which will be referred in the query expression and the ranking expression for embedding search.
| See also | |
|---|---|
search |
|
setRankingStrategy |
addFilterDocumentClasses
fun addFilterDocumentClasses(documentClasses: Array<Class<Any!>!>): SearchSpec.Builder
Adds the Schema names of given document classes to the Schema type filter of SearchSpec Entry. Only search for documents that have the specified schema types.
If unset, the query will search over all schema types.
Merged list available from getFilterSchemas.
addFilterDocumentClasses
fun addFilterDocumentClasses(
documentClasses: (Mutable)Collection<Class<Any!>!>
): SearchSpec.Builder
Adds the Schema names of given document classes to the Schema type filter of SearchSpec Entry. Only search for documents that have the specified schema types.
If unset, the query will search over all schema types.
Merged list available from getFilterSchemas.
| Parameters | |
|---|---|
documentClasses: (Mutable)Collection<Class<Any!>!> |
classes annotated with |
addFilterDocumentIds
@ExperimentalAppSearchApi
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_ADD_FILTER_DOCUMENT_IDS)
fun addFilterDocumentIds(documentIds: Array<String!>): SearchSpec.Builder
Adds a document id filter to SearchSpec Entry. Only search for documents that have the specified document ids.
If unset, the query will search over all documents.
addFilterDocumentIds
@ExperimentalAppSearchApi
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_ADD_FILTER_DOCUMENT_IDS)
fun addFilterDocumentIds(documentIds: (Mutable)Collection<String!>): SearchSpec.Builder
Adds a document id filter to SearchSpec Entry. Only search for documents that have the specified document ids.
If unset, the query will search over all documents.
addFilterNamespaces
fun addFilterNamespaces(namespaces: Array<String!>): SearchSpec.Builder
Adds a namespace filter to SearchSpec Entry. Only search for documents that have the specified namespaces.
If unset, the query will search over all namespaces.
addFilterNamespaces
fun addFilterNamespaces(namespaces: (Mutable)Collection<String!>): SearchSpec.Builder
Adds a namespace filter to SearchSpec Entry. Only search for documents that have the specified namespaces.
If unset, the query will search over all namespaces.
addFilterPackageNames
fun addFilterPackageNames(packageNames: Array<String!>): SearchSpec.Builder
Adds a package name filter to SearchSpec Entry. Only search for documents that were indexed from the specified packages.
If unset, the query will search over all packages that the caller has access to. If package names are specified which caller doesn't have access to, then those package names will be ignored.
addFilterPackageNames
fun addFilterPackageNames(packageNames: (Mutable)Collection<String!>): SearchSpec.Builder
Adds a package name filter to SearchSpec Entry. Only search for documents that were indexed from the specified packages.
If unset, the query will search over all packages that the caller has access to. If package names are specified which caller doesn't have access to, then those package names will be ignored.
addFilterProperties
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_ADD_FILTER_PROPERTIES)
fun addFilterProperties(
documentClass: Class<Any!>,
propertyPaths: (Mutable)Collection<String!>
): SearchSpec.Builder
Adds property paths for the specified type to the property filter of SearchSpec Entry. Only returns documents that have matches under the specified properties. If property paths are added for a type, then only the properties referred to will be searched for results of that type.
| Parameters | |
|---|---|
documentClass: Class<Any!> |
class annotated with |
propertyPaths: (Mutable)Collection<String!> |
The String version of |
| See also | |
|---|---|
addFilterProperties |
addFilterProperties
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_ADD_FILTER_PROPERTIES)
fun addFilterProperties(
schema: String,
propertyPaths: (Mutable)Collection<String!>
): SearchSpec.Builder
Adds property paths for the specified type to the property filter of SearchSpec Entry. Only returns documents that have matches under the specified properties. If property paths are added for a type, then only the properties referred to will be searched for results of that type.
If a property path that is specified isn't present in a result, it will be ignored for that result. Property paths cannot be null.
If no property paths are added for a particular type, then all properties of results of that type will be searched.
Example properties: 'body', 'sender.name', 'sender.emailaddress', etc.
If property paths are added for the SCHEMA_TYPE_WILDCARD, then those property paths will apply to all results, excepting any types that have their own, specific property paths set.
| Parameters | |
|---|---|
schema: String |
the |
propertyPaths: (Mutable)Collection<String!> |
The String version of |
addFilterPropertyPaths
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_ADD_FILTER_PROPERTIES)
fun addFilterPropertyPaths(
documentClass: Class<Any!>,
propertyPaths: (Mutable)Collection<PropertyPath!>
): SearchSpec.Builder
Adds property paths for the specified type to the property filter of SearchSpec Entry. Only returns documents that have matches under the specified properties. If property paths are added for a type, then only the properties referred to will be searched for results of that type.
| Parameters | |
|---|---|
documentClass: Class<Any!> |
class annotated with |
propertyPaths: (Mutable)Collection<PropertyPath!> |
The |
| See also | |
|---|---|
addFilterProperties |
addFilterPropertyPaths
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_ADD_FILTER_PROPERTIES)
fun addFilterPropertyPaths(
schema: String,
propertyPaths: (Mutable)Collection<PropertyPath!>
): SearchSpec.Builder
Adds property paths for the specified type to the property filter of SearchSpec Entry. Only returns documents that have matches under the specified properties. If property paths are added for a type, then only the properties referred to will be searched for results of that type.
| Parameters | |
|---|---|
schema: String |
the |
propertyPaths: (Mutable)Collection<PropertyPath!> |
The |
| See also | |
|---|---|
addFilterProperties |
addFilterSchemas
fun addFilterSchemas(schemas: Array<String!>): SearchSpec.Builder
Adds a Schema type filter to SearchSpec Entry. Only search for documents that have the specified schema types.
If unset, the query will search over all schema types.
addFilterSchemas
fun addFilterSchemas(schemas: (Mutable)Collection<String!>): SearchSpec.Builder
Adds a Schema type filter to SearchSpec Entry. Only search for documents that have the specified schema types.
If unset, the query will search over all schema types.
addInformationalRankingExpressions
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_ADD_INFORMATIONAL_RANKING_EXPRESSIONS)
fun addInformationalRankingExpressions(
informationalRankingExpressions: Array<String!>
): SearchSpec.Builder
Adds informational ranking expressions to be evaluated for each document in the search result. The values of these expressions will be returned to the caller via getInformationalRankingSignals. These expressions are purely for the caller to retrieve additional information about the result and have no effect on ranking.
The syntax is exactly the same as specified in setRankingStrategy.
addInformationalRankingExpressions
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_ADD_INFORMATIONAL_RANKING_EXPRESSIONS)
fun addInformationalRankingExpressions(
informationalRankingExpressions: (Mutable)Collection<String!>
): SearchSpec.Builder
Adds informational ranking expressions to be evaluated for each document in the search result. The values of these expressions will be returned to the caller via getInformationalRankingSignals. These expressions are purely for the caller to retrieve additional information about the result and have no effect on ranking.
The syntax is exactly the same as specified in setRankingStrategy.
addProjection
fun addProjection(schema: String, propertyPaths: (Mutable)Collection<String!>): SearchSpec.Builder
Adds property paths for the specified type to be used for projection. If property paths are added for a type, then only the properties referred to will be retrieved for results of that type. If a property path that is specified isn't present in a result, it will be ignored for that result. Property paths cannot be null.
| Parameters | |
|---|---|
schema: String |
a string corresponding to the schema to add projections to. |
propertyPaths: (Mutable)Collection<String!> |
the projections to add. |
| See also | |
|---|---|
addProjectionPaths |
addProjectionPaths
fun addProjectionPaths(
schema: String,
propertyPaths: (Mutable)Collection<PropertyPath!>
): SearchSpec.Builder
Adds property paths for the specified type to be used for projection. If property paths are added for a type, then only the properties referred to will be retrieved for results of that type. If a property path that is specified isn't present in a result, it will be ignored for that result. Property paths cannot be null.
If no property paths are added for a particular type, then all properties of results of that type will be retrieved.
If property path is added for the SCHEMA_TYPE_WILDCARD, then those property paths will apply to all results, excepting any types that have their own, specific property paths set.
Suppose the following document is in the index.
Email: Document { sender: Document { name: "Mr. Person" email: "mrperson123@google.com" } recipients: [ Document { name: "John Doe" email: "johndoe123@google.com" } Document { name: "Jane Doe" email: "janedoe123@google.com" } ] subject: "IMPORTANT" body: "Limited time offer!" }
Then, suppose that a query for "important" is issued with the following projection type property paths:
{schema: "Email", ["subject", "sender.name", "recipients.name"]}
The above document will be returned as:
Email: Document { sender: Document { name: "Mr. Body" } recipients: [ Document { name: "John Doe" } Document { name: "Jane Doe" } ] subject: "IMPORTANT" }
| Parameters | |
|---|---|
schema: String |
a string corresponding to the schema to add projections to. |
propertyPaths: (Mutable)Collection<PropertyPath!> |
the projections to add. |
addProjectionPathsForDocumentClass
fun addProjectionPathsForDocumentClass(
documentClass: Class<Any!>,
propertyPaths: (Mutable)Collection<PropertyPath!>
): SearchSpec.Builder
Adds property paths for the specified Document class to be used for projection.
| Parameters | |
|---|---|
documentClass: Class<Any!> |
a class, annotated with @Document, corresponding to the schema to add projections to. |
propertyPaths: (Mutable)Collection<PropertyPath!> |
the projections to add. |
| See also | |
|---|---|
addProjectionPaths |
addProjectionsForDocumentClass
fun addProjectionsForDocumentClass(
documentClass: Class<Any!>,
propertyPaths: (Mutable)Collection<String!>
): SearchSpec.Builder
Adds property paths for the Document class to be used for projection. If property paths are added for a document class, then only the properties referred to will be retrieved for results of that type. If a property path that is specified isn't present in a result, it will be ignored for that result. Property paths cannot be null.
| Parameters | |
|---|---|
documentClass: Class<Any!> |
a class, annotated with @Document, corresponding to the schema to add projections to. |
propertyPaths: (Mutable)Collection<String!> |
the projections to add. |
| See also | |
|---|---|
addProjection |
addSearchStringParameters
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_SEARCH_STRING_PARAMETERS)
fun addSearchStringParameters(searchStringParameters: Array<String!>): SearchSpec.Builder
Adds Strings to the list of String parameters that can be referenced in the query through the "getSearchStringParameter({index})" function.
| See also | |
|---|---|
search |
addSearchStringParameters
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_SEARCH_STRING_PARAMETERS)
fun addSearchStringParameters(
searchStringParameters: (Mutable)List<String!>
): SearchSpec.Builder
Adds Strings to the list of String parameters that can be referenced in the query through the "getSearchStringParameter({index})" function.
| See also | |
|---|---|
search |
build
fun build(): SearchSpec
Constructs a new SearchSpec from the contents of this builder.
| Throws | |
|---|---|
java.lang.IllegalArgumentException |
if property weights are provided with a ranking strategy that isn't RANKING_STRATEGY_RELEVANCE_SCORE. |
java.lang.IllegalStateException |
if the ranking strategy is |
java.lang.IllegalStateException |
if the aggregation scoring strategy has been set in |
clearEmbeddingParameters
@ExperimentalAppSearchApi
fun clearEmbeddingParameters(): SearchSpec.Builder
Clears the embedding parameters.
clearFilterDocumentIds
@ExperimentalAppSearchApi
fun clearFilterDocumentIds(): SearchSpec.Builder
Clears the document id filters.
clearFilterNamespaces
@ExperimentalAppSearchApi
fun clearFilterNamespaces(): SearchSpec.Builder
Clears all namespace filters.
clearFilterPackageNames
@ExperimentalAppSearchApi
fun clearFilterPackageNames(): SearchSpec.Builder
Clears all package name filters.
clearFilterProperties
@ExperimentalAppSearchApi
fun clearFilterProperties(): SearchSpec.Builder
Clears the property filters for all schema types.
clearFilterSchemas
@ExperimentalAppSearchApi
fun clearFilterSchemas(): SearchSpec.Builder
Clears all schema type filters.
clearInformationalRankingExpressions
@ExperimentalAppSearchApi
fun clearInformationalRankingExpressions(): SearchSpec.Builder
Clears all informational ranking expressions.
clearJoinSpec
@ExperimentalAppSearchApi
fun clearJoinSpec(): SearchSpec.Builder
Clears the JoinSpec.
clearProjections
@ExperimentalAppSearchApi
fun clearProjections(): SearchSpec.Builder
Clears the projections for all schema types.
clearPropertyWeights
@ExperimentalAppSearchApi
fun clearPropertyWeights(): SearchSpec.Builder
Clears the property weights for all schema types.
clearResultGrouping
@ExperimentalAppSearchApi
fun clearResultGrouping(): SearchSpec.Builder
Clears the result grouping and limit.
clearSearchSourceLogTag
@ExperimentalAppSearchApi
fun clearSearchSourceLogTag(): SearchSpec.Builder
Clears the log tag that indicates the source of this search.
clearSearchStringParameters
@ExperimentalAppSearchApi
fun clearSearchStringParameters(): SearchSpec.Builder
Clears the list of String parameters that can be referenced in the query through the "getSearchStringParameter({index})" function.
setDefaultEmbeddingSearchMetricType
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SCHEMA_EMBEDDING_PROPERTY_CONFIG)
fun setDefaultEmbeddingSearchMetricType(
defaultEmbeddingSearchMetricType: Int
): SearchSpec.Builder
Sets the default embedding metric type used for embedding search (see search) and ranking (see setRankingStrategy).
If this method is not called, the default embedding search metric type is EMBEDDING_SEARCH_METRIC_TYPE_COSINE. Metrics specified within "semanticSearch" or "matchedSemanticScores" functions in search/ranking expressions will override this default.
setJoinSpec
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.JOIN_SPEC_AND_QUALIFIED_ID)
fun setJoinSpec(joinSpec: JoinSpec): SearchSpec.Builder
Specifies which documents to join with, and how to join.
If the ranking strategy is RANKING_STRATEGY_JOIN_AGGREGATE_SCORE, and the JoinSpec is null, build will throw an AppSearchException.
| Parameters | |
|---|---|
joinSpec: JoinSpec |
a specification on how to perform the Join operation. |
setListFilterHasPropertyFunctionEnabled
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.LIST_FILTER_HAS_PROPERTY_FUNCTION)
fun setListFilterHasPropertyFunctionEnabled(enabled: Boolean): SearchSpec.Builder
Sets the LIST_FILTER_HAS_PROPERTY_FUNCTION feature as enabled/disabled according to the enabled parameter.
setListFilterMatchScoreExpressionFunctionEnabled
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.LIST_FILTER_MATCH_SCORE_EXPRESSION_FUNCTION)
@ExperimentalAppSearchApi
fun setListFilterMatchScoreExpressionFunctionEnabled(enabled: Boolean): SearchSpec.Builder
Sets the LIST_FILTER_MATCH_SCORE_EXPRESSION_FUNCTION feature as enabled/disabled according to the enabled parameter.
If not enabled, the use of the "matchScoreExpression" function is disallowed. See search for more details about the function.
| Parameters | |
|---|---|
enabled: Boolean |
Enables the feature if true, otherwise disables it |
setListFilterQueryLanguageEnabled
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.LIST_FILTER_QUERY_LANGUAGE)
fun setListFilterQueryLanguageEnabled(enabled: Boolean): SearchSpec.Builder
Sets the LIST_FILTER_QUERY_LANGUAGE feature as enabled/disabled according to the enabled parameter.
| Parameters | |
|---|---|
enabled: Boolean |
Enables the feature if true, otherwise disables it. This feature covers the expansion of the query language to conform to the definition of the list filters language (https://aip.dev/160). This includes:
The newly added custom functions covered by this feature are:
createList takes a variable number of strings and returns a list of strings. It is for use with termSearch. termSearch takes a query string that will be parsed according to the supported query language and an optional list of strings that specify the properties to be restricted to. This exists as a convenience for multiple property restricts. So, for example, the query "(subject:foo OR body:foo) (subject:bar OR body:bar)" could be rewritten as "termSearch(\"foo bar\", createList(\"subject\", \"bar\"))" |
setMaxSnippetSize
fun setMaxSnippetSize(maxSnippetSize: @IntRange(from = 0, to = 10000) Int): SearchSpec.Builder
Sets maxSnippetSize, the maximum snippet size. Snippet windows start at maxSnippetSize/2 bytes before the middle of the matching token and end at maxSnippetSize/2 bytes after the middle of the matching token. It respects token boundaries, therefore the returned window may be smaller than requested.
Setting maxSnippetSize to 0 will disable windowing and an empty String will be returned. If matches enabled is also set to false, then snippeting is disabled.
For example, maxSnippetSize = 16. "foo bar baz bat rat" with a query of "baz" will return a window of "bar baz bat" which is only 11 bytes long.
setNumericSearchEnabled
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.NUMERIC_SEARCH)
fun setNumericSearchEnabled(enabled: Boolean): SearchSpec.Builder
Sets the NUMERIC_SEARCH feature as enabled/disabled according to the enabled parameter.
| Parameters | |
|---|---|
enabled: Boolean |
Enables the feature if true, otherwise disables it. If disabled, disallows use of |
setOrder
fun setOrder(order: Int): SearchSpec.Builder
Sets the order of returned search results, the default is ORDER_DESCENDING, meaning that results with higher scores come first.
This order field will be ignored if RankingStrategy = RANKING_STRATEGY_NONE.
setPropertyWeightPaths
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_PROPERTY_WEIGHTS)
fun setPropertyWeightPaths(
schemaType: String,
propertyPathWeights: (Mutable)Map<PropertyPath!, Double!>
): SearchSpec.Builder
Sets property weights by schema type and property path.
Property weights are used to promote and demote query term matches within a GenericDocument property when applying scoring.
Property weights must be positive values (greater than 0). A property's weight is multiplied with that property's scoring contribution. This means weights set between 0.0 and 1.0 demote scoring contributions by a term match within the property. Weights set above 1.0 promote scoring contributions by a term match within the property.
Properties that exist in the AppSearchSchema, but do not have a weight explicitly set will be given a default weight of 1.0.
Weights set for property paths that do not exist in the AppSearchSchema will be discarded and not affect scoring.
NOTE: Property weights only affect scoring for query-dependent scoring strategies, such as RANKING_STRATEGY_RELEVANCE_SCORE.
This information may not be available depending on the backend and Android API level. To ensure it is available, call isFeatureSupported.
| Parameters | |
|---|---|
schemaType: String |
the schema type to set property weights for. |
propertyPathWeights: (Mutable)Map<PropertyPath!, Double!> |
a |
| Throws | |
|---|---|
java.lang.IllegalArgumentException |
if a weight is equal to or less than 0.0. |
setPropertyWeightPathsForDocumentClass
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_PROPERTY_WEIGHTS)
fun setPropertyWeightPathsForDocumentClass(
documentClass: Class<Any!>,
propertyPathWeights: (Mutable)Map<PropertyPath!, Double!>
): SearchSpec.Builder
Sets property weights by schema type and property path.
Property weights are used to promote and demote query term matches within a GenericDocument property when applying scoring.
Property weights must be positive values (greater than 0). A property's weight is multiplied with that property's scoring contribution. This means weights set between 0.0 and 1.0 demote scoring contributions by a term match within the property. Weights set above 1.0 promote scoring contributions by a term match within the property.
Properties that exist in the AppSearchSchema, but do not have a weight explicitly set will be given a default weight of 1.0.
Weights set for property paths that do not exist in the AppSearchSchema will be discarded and not affect scoring.
NOTE: Property weights only affect scoring for query-dependent scoring strategies, such as RANKING_STRATEGY_RELEVANCE_SCORE.
This information may not be available depending on the backend and Android API level. To ensure it is available, call isFeatureSupported.
| Parameters | |
|---|---|
documentClass: Class<Any!> |
a class, annotated with @Document, corresponding to the schema to set property weights for. |
propertyPathWeights: (Mutable)Map<PropertyPath!, Double!> |
a |
| Throws | |
|---|---|
androidx.appsearch.exceptions.AppSearchException |
if no factory for this document class could be found on the classpath |
java.lang.IllegalArgumentException |
if a weight is equal to or less than 0.0. |
setPropertyWeights
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_PROPERTY_WEIGHTS)
fun setPropertyWeights(
schemaType: String,
propertyPathWeights: (Mutable)Map<String!, Double!>
): SearchSpec.Builder
Sets property weights by schema type and property path.
Property weights are used to promote and demote query term matches within a GenericDocument property when applying scoring.
Property weights must be positive values (greater than 0). A property's weight is multiplied with that property's scoring contribution. This means weights set between 0.0 and 1.0 demote scoring contributions by a term match within the property. Weights set above 1.0 promote scoring contributions by a term match within the property.
Properties that exist in the AppSearchSchema, but do not have a weight explicitly set will be given a default weight of 1.0.
Weights set for property paths that do not exist in the AppSearchSchema will be discarded and not affect scoring.
NOTE: Property weights only affect scoring for query-dependent scoring strategies, such as RANKING_STRATEGY_RELEVANCE_SCORE.
This information may not be available depending on the backend and Android API level. To ensure it is available, call isFeatureSupported.
| Parameters | |
|---|---|
schemaType: String |
the schema type to set property weights for. |
propertyPathWeights: (Mutable)Map<String!, Double!> |
a |
| Throws | |
|---|---|
java.lang.IllegalArgumentException |
if a weight is equal to or less than 0.0. |
setPropertyWeightsForDocumentClass
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_PROPERTY_WEIGHTS)
fun setPropertyWeightsForDocumentClass(
documentClass: Class<Any!>,
propertyPathWeights: (Mutable)Map<String!, Double!>
): SearchSpec.Builder
Sets property weights by schema type and property path.
Property weights are used to promote and demote query term matches within a GenericDocument property when applying scoring.
Property weights must be positive values (greater than 0). A property's weight is multiplied with that property's scoring contribution. This means weights set between 0.0 and 1.0 demote scoring contributions by a term match within the property. Weights set above 1.0 promote scoring contributions by a term match within the property.
Properties that exist in the AppSearchSchema, but do not have a weight explicitly set will be given a default weight of 1.0.
Weights set for property paths that do not exist in the AppSearchSchema will be discarded and not affect scoring.
NOTE: Property weights only affect scoring for query-dependent scoring strategies, such as RANKING_STRATEGY_RELEVANCE_SCORE.
This information may not be available depending on the backend and Android API level. To ensure it is available, call isFeatureSupported.
| Parameters | |
|---|---|
documentClass: Class<Any!> |
a class, annotated with @Document, corresponding to the schema to set property weights for. |
propertyPathWeights: (Mutable)Map<String!, Double!> |
a |
| Throws | |
|---|---|
androidx.appsearch.exceptions.AppSearchException |
if no factory for this document class could be found on the classpath |
java.lang.IllegalArgumentException |
if a weight is equal to or less than 0.0. |
setRankingStrategy
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_ADVANCED_RANKING_EXPRESSION)
fun setRankingStrategy(advancedRankingExpression: String): SearchSpec.Builder
Enables advanced ranking to score based on advancedRankingExpression.
This method will set RankingStrategy to RANKING_STRATEGY_ADVANCED_RANKING_EXPRESSION.
The ranking expression is a mathematical expression that will be evaluated to a floating-point number of double type representing the score of each document.
Numeric literals, arithmetic operators, mathematical functions, document-based, and property-value-based functions are supported to build expressions.
The following are supported arithmetic operators:
- Addition(+)
- Subtraction(-)
- Multiplication(*)
- Floating Point Division(/)
Operator precedences are compliant with the Java Language, and parentheses are supported. For example, "2.2 + (3 - 4) / 2" evaluates to 1.7.
The following are supported basic mathematical functions:
- log(x) - the natural log of x
- log(x, y) - the log of y with base x
- pow(x, y) - x to the power of y
- sqrt(x)
- abs(x)
- sin(x), cos(x), tan(x)
- Example: "max(abs(-100), 10) + pow(2, 10)" will be evaluated to 1124
The following variadic mathematical functions are supported, with n >0. They also accept list value parameters. For example, if V is a value of list type, we can call sum(V) to get the sum of all the values in V. List literals are not supported, so a value of list type can only be constructed as a return value of some particular document-based functions.
- max(v1, v2, ..., vn) or max(V)
- min(v1, v2, ..., vn) or min(V)
- len(v1, v2, ..., vn) or len(V)
- sum(v1, v2, ..., vn) or sum(V)
- avg(v1, v2, ..., vn) or avg(V)
Document-based functions must be called via "this", which represents the current document being scored. The following are supported document-based functions:
- this.documentScore()
Get the app-provided document score of the current document. This is the same score that is returned for
RANKING_STRATEGY_DOCUMENT_SCORE. - this.creationTimestamp()
Get the creation timestamp of the current document. This is the same score that is returned for
RANKING_STRATEGY_CREATION_TIMESTAMP. - this.relevanceScore()
Get the BM25F relevance score of the current document in relation to the query string. This is the same score that is returned for
RANKING_STRATEGY_RELEVANCE_SCORE. - this.usageCount(type) and this.usageLastUsedTimestamp(type)
Get the number of usages or the timestamp of last usage by type for the current document, where type must be evaluated to an integer from 1 to 2. Type 1 refers to usages reported by
reportUsageAsync, and type 2 refers to usages reported byreportSystemUsageAsync. - this.childrenRankingSignals()
Returns a list of children ranking signals calculated by scoring the joined documents using the ranking strategy specified in the nested
SearchSpec. Currently, a document can only be a child of another document in the context of joins. If this function is called without the Join API enabled, a type error will be raised. - this.propertyWeights()
Returns a list of the normalized weights of the matched properties for the current document being scored. Property weights come from what's specified in
SearchSpec. After normalizing, each provided weight will be divided by the maximum weight, so that each of them will be <= 1. - this.matchedSemanticScores(getEmbeddingParameter({embedding_index}), {metric})
Returns a list of the matched similarity scores from "semanticSearch" in the query expression (see also
search) based on embedding_index and metric. If metric is omitted, it defaults to the metric specified insetDefaultEmbeddingSearchMetricType. If no "semanticSearch" is called for embedding_index and metric in the query, this function will return an empty list. If multiple "semanticSearch"s are called for the same embedding_index and metric, this function will return a list of their merged scores.Example: `this.matchedSemanticScores(getEmbeddingParameter(0), "COSINE")` will return a list of matched scores within the range of [0.5, 1], if `semanticSearch(getEmbeddingParameter(0), 0.5, 1, "COSINE")` is called in the query expression.
Property-value-based functions can be called via the function of getScorableProperty(schemaType, propertyPath)
- In order to use this function, ScorablePropertyRanking feature must be enabled via
setScorablePropertyRankingEnabled. - Param 'schemaType' must be a valid AppSearch SchemaType otherwise an error is returned.
- Param 'propertyPath' must be valid and scorable otherwise an error is returned. It is considered scorable when:
- It is to a property that is set to be enabled for scoring, or that
- It points to a scorable property of nested schema types.
- This function returns a list double values for the matched documents.
- If the matched document's schema is different from 'schemaType', or the property under the 'propertyPath' holds no element, an empty list is returned.
- Some examples below:
Suppose that there are two schemas: 'Gmail' and 'Person'. 'Gmail' schema has a property 'recipient' with schema type 'Person'. In the advanced ranking expression, you can have:
- "sum(getScorableProperty('Gmail', 'viewTimes'))"
- "maxOrDefault(getScorableProperty('Person', 'income'), 0)"
- "sum(getScorableProperty('Gmail', 'recipient.income'))"
- "this.documentScore() + sum(getScorableProperty('Gmail', 'viewTimes'))"
The following functions are provided for enhanced list manipulation.
- minOrDefault(V, default_score)
Returns the minimum value in the input list V or the default_score if the list is empty.
Example: "minOrDefault(this.matchedSemanticScores(getEmbeddingParameter(0)), 10)" will return the minimum matched semantic scores or 10 if there is no matched score for the current document.
This function requires the feature
SEARCH_SPEC_RANKING_FUNCTION_MAX_MIN_OR_DEFAULT. - maxOrDefault(V, default_score)
Returns the maximum value in the input list V or the default_score if the list is empty.
Example: "maxOrDefault(this.matchedSemanticScores(getEmbeddingParameter(0)), -10)" will return the maximum matched semantic scores or -10 if there is no matched score for the current document.
This function requires the feature
SEARCH_SPEC_RANKING_FUNCTION_MAX_MIN_OR_DEFAULT. - filterByRange(V, low, high)
Returns a sublist of V that only contains the elements that fall within the specified range [low, high].
Example: "filterByRange(this.matchedSemanticScores(getEmbeddingParameter(0)), 0, 1)" will return a list of matched semantic scores that are between 0 and 1, inclusive.
This function requires the feature
SEARCH_SPEC_RANKING_FUNCTION_FILTER_BY_RANGE.
Some errors may occur when using advanced ranking.
Syntax Error: the expression violates the syntax of the advanced ranking language. Below are some examples.
- "1 + " - missing operand
- "2 * (1 + 2))" - unbalanced parenthesis
- "2 ^ 3" - unknown operator
Type Error: the expression fails a static type check. Below are some examples.
- "sin(2, 3)" - wrong number of arguments for the sin function
- "this.childrenRankingSignals() + 1" - cannot add a list with a number
- "this.propertyWeights()" - the final type of the overall expression cannot be a list, which can be fixed by "max(this.propertyWeights())"
- "abs(this.propertyWeights())" - the abs function does not support list type arguments
- "print(2)" - unknown function
Evaluation Error: an error occurred while evaluating the value of the expression. Below are some examples.
- "1 / 0", "log(0)", "1 + sqrt(-1)" - getting a non-finite value in the middle of evaluation
- "this.usageCount(1 + 0.5)" - expect the argument to be an integer. Note that this is not a type error and "this.usageCount(1.5 + 1/2)" can succeed without any issues
- "this.documentScore()" - in case of an IO error, this will be an evaluation error
Syntax errors and type errors will fail the entire search and will cause getNextPageAsync to throw an AppSearchException with the result code of RESULT_INVALID_ARGUMENT.
Evaluation errors will result in the offending documents receiving the default score. For ORDER_DESCENDING, the default score will be 0, for ORDER_ASCENDING the default score will be infinity.
| Parameters | |
|---|---|
advancedRankingExpression: String |
a non-empty string representing the ranking expression. |
setRankingStrategy
fun setRankingStrategy(rankingStrategy: Int): SearchSpec.Builder
Sets ranking strategy for AppSearch results.
setResultCountPerPage
fun setResultCountPerPage(
resultCountPerPage: @IntRange(from = 0, to = 10000) Int
): SearchSpec.Builder
Sets the number of results per page in the returned object.
The default number of results per page is 10.
setResultGrouping
fun setResultGrouping(groupingTypeFlags: Int, limit: Int): SearchSpec.Builder
Sets the maximum number of results to return for each group, where groups are defined by grouping type.
Calling this method will override any previous calls. So calling
setResultGrouping(GROUPING_TYPE_PER_PACKAGE, 7) and then calling
setResultGrouping(GROUPING_TYPE_PER_PACKAGE, 2) will result in only the latter, a limit of two results per package, being applied. Or calling setResultGrouping
(GROUPING_TYPE_PER_PACKAGE, 1) and then calling setResultGrouping
(GROUPING_TYPE_PER_PACKAGE | GROUPING_PER_NAMESPACE, 5) will result in five results per package per namespace.
| Parameters | |
|---|---|
groupingTypeFlags: Int |
One or more combination of grouping types. |
limit: Int |
Number of results to return per |
| Throws | |
|---|---|
java.lang.IllegalArgumentException |
if groupingTypeFlags is zero. |
setRetrieveEmbeddingMatchInfos
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_EMBEDDING_MATCH_INFO)
@ExperimentalAppSearchApi
fun setRetrieveEmbeddingMatchInfos(retrieveEmbeddingMatchInfos: Boolean): SearchSpec.Builder
Sets whether to retrieve embedding match infos as a part of getMatchInfos.
Note that this does not modify the snippet count fields, and any retrieved embedding match infos also count toward the limit set in getSnippetCount and getSnippetCountPerProperty.
setScorablePropertyRankingEnabled
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SCHEMA_SCORABLE_PROPERTY_CONFIG)
@ExperimentalAppSearchApi
fun setScorablePropertyRankingEnabled(enabled: Boolean): SearchSpec.Builder
Sets the ScorablePropertyRanking feature as enabled or disabled.
If enabled, 'getScorableProperty' function can be used in the advanced ranking expression. For details, see setRankingStrategy.
| Parameters | |
|---|---|
enabled: Boolean |
Enables the feature if true, otherwise disables it. |
setSearchSourceLogTag
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_SET_SEARCH_SOURCE_LOG_TAG)
fun setSearchSourceLogTag(searchSourceLogTag: String): SearchSpec.Builder
Sets an optional log tag to indicate the source of this search.
Some AppSearch implementations may log a hash of this tag using statsd. This tag may be used for tracing performance issues and crashes to a component of an app.
Call this method and give a unique value if you want to distinguish this search scenario with other search scenarios during performance analysis.
Under no circumstances will AppSearch log the raw String value using statsd, but it will be provided as-is to custom AppSearchLogger implementations you have registered in your app.
| Parameters | |
|---|---|
searchSourceLogTag: String |
A String to indicate the source caller of this search. It is used to label the search statsd for performance analysis. It is not the tag we are using in |
setSnippetCount
fun setSnippetCount(snippetCount: @IntRange(from = 0, to = 10000) Int): SearchSpec.Builder
Sets the snippetCount such that the first snippetCount documents based on the ranking strategy will have snippet information provided.
The list returned from getMatchInfos will contain at most this many entries.
If set to 0 (default), snippeting is disabled and the list returned from getMatchInfos will be empty.
setSnippetCountPerProperty
fun setSnippetCountPerProperty(
snippetCountPerProperty: @IntRange(from = 0, to = 10000) Int
): SearchSpec.Builder
Sets snippetCountPerProperty. Only the first snippetCountPerProperty snippets for each property of each GenericDocument will contain snippet information.
If set to 0, snippeting is disabled and the list returned from getMatchInfos will be empty.
The default behavior is to snippet all matches a property contains, up to the maximum value of 10,000.
setTermMatch
fun setTermMatch(termMatchType: Int): SearchSpec.Builder
Sets how the query terms should match TermMatchCode in the index.
If this method is not called, the default term match type is TERM_MATCH_PREFIX.
setVerbatimSearchEnabled
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.VERBATIM_SEARCH)
fun setVerbatimSearchEnabled(enabled: Boolean): SearchSpec.Builder
Sets the VERBATIM_SEARCH feature as enabled/disabled according to the enabled parameter.
| Parameters | |
|---|---|
enabled: Boolean |
Enables the feature if true, otherwise disables it If disabled, disallows use of For example, The verbatim string operator '"foo/bar" OR baz' will ensure that 'foo/bar' is treated as a single 'verbatim' token. |