public final class SearchSpec


This class represents the specification logic for AppSearch. It can be used to set the type of search, like prefix or exact only or apply filters to search for a specific schema type only etc.

Summary

Nested types

public final class SearchSpec.Builder

Builder for objects.

Constants

static final int

Results should be grouped together by namespace for the purpose of enforcing a limit on the number of results returned per namespace.

static final int

Results should be grouped together by package for the purpose of enforcing a limit on the number of results returned per package.

static final int
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_GROUPING_TYPE_PER_SCHEMA)
GROUPING_TYPE_PER_SCHEMA = 4

Results should be grouped together by schema type for the purpose of enforcing a limit on the number of results returned per schema type.

static final int

Search results will be returned in an ascending order.

static final int

Search results will be returned in a descending order.

static final String

Schema type to be used in addProjection to apply property paths to all results, excepting any types that have had their own, specific property paths set.

static final int

Ranked by the advanced ranking expression provided.

static final int

Ranked by document creation timestamps.

static final int

Ranked by app-provided document scores.

static final int

Ranked by the aggregated ranking signal of the joined documents.

static final int

No Ranking, results are returned in arbitrary order.

static final int

Ranked by document relevance score.

static final int

Ranked by number of usages from a system UI surface.

static final int

Ranked by timestamp of last usage from a system UI surface.

static final int

Ranked by number of usages, as reported by the app.

static final int

Ranked by timestamp of last usage, as reported by the app.

static final int

Query terms will only match exact tokens in the index.

static final int

Query terms will match indexed tokens when the query term is a prefix of the token.

Public methods

@NonNull String

Get the advanced ranking expression, or "" if setRankingStrategy was not called.

@NonNull List<String>

Returns the list of namespaces to search over.

@NonNull List<String>

Returns the list of package name filters to search over.

@NonNull List<String>

Returns the list of schema types to search for.

@Nullable JoinSpec

Returns specification on which documents need to be joined.

int

Returns the maximum size of a snippet in characters.

int

Returns the order of returned search results (descending or ascending).

@NonNull Map<StringList<PropertyPath>>

Returns a map from schema type to property paths to be used for projection.

@NonNull Map<StringList<String>>

Returns a map from schema type to property paths to be used for projection.

@NonNull Map<StringMap<PropertyPathDouble>>

Returns properties weights to be used for scoring.

@NonNull Map<StringMap<StringDouble>>

Returns properties weights to be used for scoring.

int

Returns the ranking strategy.

int

Returns the number of results per page in the result set.

int

Get the maximum number of results to return for each group.

int

Get the type of grouping limit to apply, or 0 if setResultGrouping was not called.

int

Returns how many documents to generate snippets for.

int

Returns how many matches for each property of a matching document to generate snippets for.

int

Returns how the query terms should match terms in the index.

boolean

Returns whether the LIST_FILTER_QUERY_LANGUAGE feature is enabled.

boolean

Returns whether the NUMERIC_SEARCH feature is enabled.

boolean

Returns whether the VERBATIM_SEARCH feature is enabled.

Constants

GROUPING_TYPE_PER_NAMESPACE

Added in 1.1.0-alpha04
public static final int GROUPING_TYPE_PER_NAMESPACE = 2

Results should be grouped together by namespace for the purpose of enforcing a limit on the number of results returned per namespace.

GROUPING_TYPE_PER_PACKAGE

Added in 1.1.0-alpha04
public static final int GROUPING_TYPE_PER_PACKAGE = 1

Results should be grouped together by package for the purpose of enforcing a limit on the number of results returned per package.

GROUPING_TYPE_PER_SCHEMA

Added in 1.1.0-alpha04
@RequiresFeature(enforcement = "androidx.appsearch.app.Features#isFeatureSupported", name = Features.SEARCH_SPEC_GROUPING_TYPE_PER_SCHEMA)
public static final int GROUPING_TYPE_PER_SCHEMA = 4

Results should be grouped together by schema type for the purpose of enforcing a limit on the number of results returned per schema type.

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

ORDER_ASCENDING

Added in 1.1.0-alpha04
public static final int ORDER_ASCENDING = 1

Search results will be returned in an ascending order.

ORDER_DESCENDING

Added in 1.1.0-alpha04
public static final int ORDER_DESCENDING = 0

Search results will be returned in a descending order.

PROJECTION_SCHEMA_TYPE_WILDCARD

Added in 1.1.0-alpha04
public static final String PROJECTION_SCHEMA_TYPE_WILDCARD = "*"

Schema type to be used in addProjection to apply property paths to all results, excepting any types that have had their own, specific property paths set.

RANKING_STRATEGY_ADVANCED_RANKING_EXPRESSION

Added in 1.1.0-alpha04
public static final int RANKING_STRATEGY_ADVANCED_RANKING_EXPRESSION = 9

Ranked by the advanced ranking expression provided.

RANKING_STRATEGY_CREATION_TIMESTAMP

Added in 1.1.0-alpha04
public static final int RANKING_STRATEGY_CREATION_TIMESTAMP = 2

Ranked by document creation timestamps.

RANKING_STRATEGY_DOCUMENT_SCORE

Added in 1.1.0-alpha04
public static final int RANKING_STRATEGY_DOCUMENT_SCORE = 1

Ranked by app-provided document scores.

RANKING_STRATEGY_JOIN_AGGREGATE_SCORE

Added in 1.1.0-alpha04
public static final int RANKING_STRATEGY_JOIN_AGGREGATE_SCORE = 8

Ranked by the aggregated ranking signal of the joined documents.

Which aggregation strategy is used to determine a ranking signal is specified in the JoinSpec set by setJoinSpec. This ranking strategy may not be used if no JoinSpec is provided.

See also
build

RANKING_STRATEGY_NONE

Added in 1.1.0-alpha04
public static final int RANKING_STRATEGY_NONE = 0

No Ranking, results are returned in arbitrary order.

RANKING_STRATEGY_RELEVANCE_SCORE

Added in 1.1.0-alpha04
public static final int RANKING_STRATEGY_RELEVANCE_SCORE = 3

Ranked by document relevance score.

RANKING_STRATEGY_SYSTEM_USAGE_COUNT

Added in 1.1.0-alpha04
public static final int RANKING_STRATEGY_SYSTEM_USAGE_COUNT = 6

Ranked by number of usages from a system UI surface.

RANKING_STRATEGY_SYSTEM_USAGE_LAST_USED_TIMESTAMP

Added in 1.1.0-alpha04
public static final int RANKING_STRATEGY_SYSTEM_USAGE_LAST_USED_TIMESTAMP = 7

Ranked by timestamp of last usage from a system UI surface.

RANKING_STRATEGY_USAGE_COUNT

Added in 1.1.0-alpha04
public static final int RANKING_STRATEGY_USAGE_COUNT = 4

Ranked by number of usages, as reported by the app.

RANKING_STRATEGY_USAGE_LAST_USED_TIMESTAMP

Added in 1.1.0-alpha04
public static final int RANKING_STRATEGY_USAGE_LAST_USED_TIMESTAMP = 5

Ranked by timestamp of last usage, as reported by the app.

TERM_MATCH_EXACT_ONLY

Added in 1.1.0-alpha04
public static final int TERM_MATCH_EXACT_ONLY = 1

Query terms will only match exact tokens in the index.

For example, a query term "foo" will only match indexed token "foo", and not "foot" or "football".

TERM_MATCH_PREFIX

Added in 1.1.0-alpha04
public static final int TERM_MATCH_PREFIX = 2

Query terms will match indexed tokens when the query term is a prefix of the token.

For example, a query term "foo" will match indexed tokens like "foo", "foot", and "football".

Public methods

getAdvancedRankingExpression

Added in 1.1.0-alpha04
public @NonNull String getAdvancedRankingExpression()

Get the advanced ranking expression, or "" if setRankingStrategy was not called.

getFilterNamespaces

Added in 1.1.0-alpha04
public @NonNull List<StringgetFilterNamespaces()

Returns the list of namespaces to search over.

If empty, the query will search over all namespaces.

getFilterPackageNames

Added in 1.1.0-alpha04
public @NonNull List<StringgetFilterPackageNames()

Returns the list of package name filters to search over.

If empty, 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.

getFilterSchemas

Added in 1.1.0-alpha04
public @NonNull List<StringgetFilterSchemas()

Returns the list of schema types to search for.

If empty, the query will search over all schema types.

getJoinSpec

Added in 1.1.0-alpha04
public @Nullable JoinSpec getJoinSpec()

Returns specification on which documents need to be joined.

getMaxSnippetSize

Added in 1.1.0-alpha04
public int getMaxSnippetSize()

Returns the maximum size of a snippet in characters.

getOrder

Added in 1.1.0-alpha04
public int getOrder()

Returns the order of returned search results (descending or ascending).

getProjectionPaths

Added in 1.1.0-alpha04
public @NonNull Map<StringList<PropertyPath>> getProjectionPaths()

Returns a map from schema type to property paths to be used for projection.

If the map is empty, then all properties will be retrieved for all results.

Calling this function repeatedly is inefficient. Prefer to retain the Map returned by this function, rather than calling it multiple times.

Returns
@NonNull Map<StringList<PropertyPath>>

A mapping of schema types to lists of projection PropertyPath objects.

getProjections

Added in 1.1.0-alpha04
public @NonNull Map<StringList<String>> getProjections()

Returns a map from schema type to property paths to be used for projection.

If the map is empty, then all properties will be retrieved for all results.

Calling this function repeatedly is inefficient. Prefer to retain the Map returned by this function, rather than calling it multiple times.

Returns
@NonNull Map<StringList<String>>

A mapping of schema types to lists of projection strings.

getPropertyWeightPaths

Added in 1.1.0-alpha04
public @NonNull Map<StringMap<PropertyPathDouble>> getPropertyWeightPaths()

Returns properties weights to be used for scoring.

Calling this function repeatedly is inefficient. Prefer to retain the Map returned by this function, rather than calling it multiple times.

Returns
@NonNull Map<StringMap<PropertyPathDouble>>

a Map of schema type to an inner-map of property paths of the schema type to the weight to set for that property.

getPropertyWeights

Added in 1.1.0-alpha04
public @NonNull Map<StringMap<StringDouble>> getPropertyWeights()

Returns properties weights to be used for scoring.

Calling this function repeatedly is inefficient. Prefer to retain the Map returned by this function, rather than calling it multiple times.

Returns
@NonNull Map<StringMap<StringDouble>>

a Map of schema type to an inner-map of property paths of the schema type to the weight to set for that property.

getRankingStrategy

Added in 1.1.0-alpha04
public int getRankingStrategy()

Returns the ranking strategy.

getResultCountPerPage

Added in 1.1.0-alpha04
public int getResultCountPerPage()

Returns the number of results per page in the result set.

getResultGroupingLimit

Added in 1.1.0-alpha04
public int getResultGroupingLimit()

Get the maximum number of results to return for each group.

Returns
int

the maximum number of results to return for each group or Integer.MAX_VALUE if setResultGrouping was not called.

getResultGroupingTypeFlags

Added in 1.1.0-alpha04
public int getResultGroupingTypeFlags()

Get the type of grouping limit to apply, or 0 if setResultGrouping was not called.

getSnippetCount

Added in 1.1.0-alpha04
public int getSnippetCount()

Returns how many documents to generate snippets for.

getSnippetCountPerProperty

Added in 1.1.0-alpha04
public int getSnippetCountPerProperty()

Returns how many matches for each property of a matching document to generate snippets for.

getTermMatch

Added in 1.1.0-alpha04
public int getTermMatch()

Returns how the query terms should match terms in the index.

isListFilterQueryLanguageEnabled

Added in 1.1.0-alpha04
public boolean isListFilterQueryLanguageEnabled()

Returns whether the LIST_FILTER_QUERY_LANGUAGE feature is enabled.

isNumericSearchEnabled

Added in 1.1.0-alpha04
public boolean isNumericSearchEnabled()

Returns whether the NUMERIC_SEARCH feature is enabled.

isVerbatimSearchEnabled

Added in 1.1.0-alpha04
public boolean isVerbatimSearchEnabled()

Returns whether the VERBATIM_SEARCH feature is enabled.