Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Ctors](https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#pubctors) \| [Methods](https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#inhmethods)

# SearchSpec.Builder

*** ** * ** ***

[Kotlin](https://developer.android.com/reference/kotlin/android/app/appsearch/SearchSpec.Builder "View this page in Kotlin") \|Java


`
public
static
final

class
SearchSpec.Builder
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.app.appsearch.SearchSpec.Builder |

<br />

*** ** * ** ***

Builder for `https://developer.android.com/reference/android/app/appsearch/SearchSpec`.

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#Builder()() ` Constructs a new `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` for `https://developer.android.com/reference/android/app/appsearch/SearchSpec` objects. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#Builder(android.app.appsearch.SearchSpec)(https://developer.android.com/reference/android/app/appsearch/SearchSpec searchSpec) ` Constructs a new `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` from the given `https://developer.android.com/reference/android/app/appsearch/SearchSpec`. |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addEmbeddingParameters(android.app.appsearch.EmbeddingVector[])(https://developer.android.com/reference/android/app/appsearch/EmbeddingVector searchEmbeddings) ` Adds an embedding search to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry, which will be referred in the query expression and the ranking expression for embedding search. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addEmbeddingParameters(java.util.Collection<android.app.appsearch.EmbeddingVector>)(https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/android/app/appsearch/EmbeddingVector> searchEmbeddings) ` Adds an embedding search to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry, which will be referred in the query expression and the ranking expression for embedding search. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addFilterDocumentIds(java.lang.String[])(https://developer.android.com/reference/java/lang/String documentIds) ` Adds a document id filter to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addFilterDocumentIds(java.util.Collection<java.lang.String>)(https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/java/lang/String> documentIds) ` Adds a document id filter to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addFilterNamespaces(java.lang.String[])(https://developer.android.com/reference/java/lang/String namespaces) ` Adds a namespace filter to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addFilterNamespaces(java.util.Collection<java.lang.String>)(https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/java/lang/String> namespaces) ` Adds a namespace filter to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addFilterPackageNames(java.lang.String[])(https://developer.android.com/reference/java/lang/String packageNames) ` Adds a package name filter to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addFilterPackageNames(java.util.Collection<java.lang.String>)(https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/java/lang/String> packageNames) ` Adds a package name filter to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addFilterProperties(java.lang.String,%20java.util.Collection<java.lang.String>)(https://developer.android.com/reference/java/lang/String schema, https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/java/lang/String> propertyPaths) ` Adds property paths for the specified type to the property filter of `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addFilterPropertyPaths(java.lang.String,%20java.util.Collection<android.app.appsearch.PropertyPath>)(https://developer.android.com/reference/java/lang/String schema, https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/android/app/appsearch/PropertyPath> propertyPaths) ` Adds property paths for the specified type to the property filter of `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addFilterSchemas(java.util.Collection<java.lang.String>)(https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/java/lang/String> schemas) ` Adds a Schema type filter to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addFilterSchemas(java.lang.String[])(https://developer.android.com/reference/java/lang/String schemas) ` Adds a Schema type filter to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addInformationalRankingExpressions(java.lang.String[])(https://developer.android.com/reference/java/lang/String informationalRankingExpressions) ` Adds informational ranking expressions to be evaluated for each document in the search result. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addInformationalRankingExpressions(java.util.Collection<java.lang.String>)(https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/java/lang/String> informationalRankingExpressions) ` Adds informational ranking expressions to be evaluated for each document in the search result. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addProjection(java.lang.String,%20java.util.Collection<java.lang.String>)(https://developer.android.com/reference/java/lang/String schema, https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/java/lang/String> propertyPaths) ` Adds property paths for the specified type to be used for projection. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addProjectionPaths(java.lang.String,%20java.util.Collection<android.app.appsearch.PropertyPath>)(https://developer.android.com/reference/java/lang/String schema, https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/android/app/appsearch/PropertyPath> propertyPaths) ` Adds property paths for the specified type to be used for projection. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addSearchStringParameters(java.util.List<java.lang.String>)(https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/java/lang/String> searchStringParameters) ` Adds Strings to the list of String parameters that can be referenced in the query through the "getSearchStringParameter({index})" function. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addSearchStringParameters(java.lang.String[])(https://developer.android.com/reference/java/lang/String searchStringParameters) ` Adds Strings to the list of String parameters that can be referenced in the query through the "getSearchStringParameter({index})" function. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#build()() ` Constructs a new `https://developer.android.com/reference/android/app/appsearch/SearchSpec` from the contents of this builder. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#clearEmbeddingParameters()() ` Clears the embedding parameters. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#clearFilterDocumentIds()() ` Clears the document id filters. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#clearFilterNamespaces()() ` Clears all namespace filters. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#clearFilterPackageNames()() ` Clears all package name filters. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#clearFilterProperties()() ` Clears the property filters for all schema types. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#clearFilterSchemas()() ` Clears all schema type filters. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#clearInformationalRankingExpressions()() ` Clears all informational ranking expressions. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#clearJoinSpec()() ` Clears the `https://developer.android.com/reference/android/app/appsearch/JoinSpec`. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#clearProjections()() ` Clears the projections for all schema types. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#clearPropertyWeights()() ` Clears the property weights for all schema types. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#clearResultGrouping()() ` Clears the result grouping and limit. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#clearSearchSourceLogTag()() ` Clears the log tag that indicates the source of this search. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#clearSearchStringParameters()() ` Clears the list of String parameters that can be referenced in the query through the "getSearchStringParameter({index})" function. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setDefaultEmbeddingSearchMetricType(int)(int defaultEmbeddingSearchMetricType) ` Sets the default embedding metric type used for embedding search (see `https://developer.android.com/reference/android/app/appsearch/AppSearchSession#search(java.lang.String,%20android.app.appsearch.SearchSpec)`) and ranking (see `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setRankingStrategy(java.lang.String)`). |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setJoinSpec(android.app.appsearch.JoinSpec)(https://developer.android.com/reference/android/app/appsearch/JoinSpec joinSpec) ` Specifies which documents to join with, and how to join. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setListFilterHasPropertyFunctionEnabled(boolean)(boolean enabled) ` Sets the LIST_FILTER_HAS_PROPERTY_FUNCTION feature as enabled/disabled according to the enabled parameter. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setListFilterMatchScoreExpressionFunctionEnabled(boolean)(boolean enabled) ` Sets the LIST_FILTER_MATCH_SCORE_EXPRESSION_FUNCTION feature as enabled/disabled according to the enabled parameter. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setListFilterQueryLanguageEnabled(boolean)(boolean enabled) ` Sets the LIST_FILTER_QUERY_LANGUAGE feature as enabled/disabled according to the enabled parameter. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setMaxSnippetSize(int)(int maxSnippetSize) ` Sets `maxSnippetSize`, the maximum snippet size. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setNumericSearchEnabled(boolean)(boolean enabled) ` Sets the NUMERIC_SEARCH feature as enabled/disabled according to the enabled parameter. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setOrder(int)(int order) ` Sets the order of returned search results, the default is `https://developer.android.com/reference/android/app/appsearch/SearchSpec#ORDER_DESCENDING`, meaning that results with higher scores come first. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setPropertyWeightPaths(java.lang.String,%20java.util.Map<android.app.appsearch.PropertyPath,java.lang.Double>)(https://developer.android.com/reference/java/lang/String schemaType, https://developer.android.com/reference/java/util/Map<https://developer.android.com/reference/android/app/appsearch/PropertyPath, https://developer.android.com/reference/java/lang/Double> propertyPathWeights) ` Sets property weights by schema type and property path. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setPropertyWeights(java.lang.String,%20java.util.Map<java.lang.String,java.lang.Double>)(https://developer.android.com/reference/java/lang/String schemaType, https://developer.android.com/reference/java/util/Map<https://developer.android.com/reference/java/lang/String, https://developer.android.com/reference/java/lang/Double> propertyPathWeights) ` Sets property weights by schema type and property path. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setRankingStrategy(java.lang.String)(https://developer.android.com/reference/java/lang/String advancedRankingExpression) ` Enables advanced ranking to score based on `advancedRankingExpression`. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setRankingStrategy(int)(int rankingStrategy) ` Sets ranking strategy for AppSearch results. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setResultCountPerPage(int)(int resultCountPerPage) ` Sets the number of results per page in the returned object. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setResultGrouping(int,%20int)(int groupingTypeFlags, int limit) ` Sets the maximum number of results to return for each group, where groups are defined by grouping type. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setRetrieveEmbeddingMatchInfos(boolean)(boolean retrieveEmbeddingMatchInfos) ` Sets whether to retrieve embedding match infos as a part of `https://developer.android.com/reference/android/app/appsearch/SearchResult#getMatchInfos()`. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setScorablePropertyRankingEnabled(boolean)(boolean enabled) ` Sets the ScorablePropertyRanking feature as enabled or disabled. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setSearchSourceLogTag(java.lang.String)(https://developer.android.com/reference/java/lang/String searchSourceLogTag) ` Sets an optional log tag to indicate the source of this search. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setSnippetCount(int)(int snippetCount) ` Sets the `snippetCount` such that the first `snippetCount` documents based on the ranking strategy will have snippet information provided. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setSnippetCountPerProperty(int)(int snippetCountPerProperty) ` Sets `snippetCountPerProperty`. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setTermMatch(int)(int termMatchType) ` Sets how the query terms should match `TermMatchCode` in the index. |
| ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | ` https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setVerbatimSearchEnabled(boolean)(boolean enabled) ` Sets the VERBATIM_SEARCH feature as enabled/disabled according to the enabled parameter. |

| ### Inherited methods |
|---|---|
| From class ` https://developer.android.com/reference/java/lang/Object ` |---|---| | ` https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/java/lang/Object#clone()() ` Creates and returns a copy of this object. | | ` boolean` | ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) ` Indicates whether some other object is "equal to" this one. | | ` void` | ` https://developer.android.com/reference/java/lang/Object#finalize()() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. | | ` final https://developer.android.com/reference/java/lang/Class<?>` | ` https://developer.android.com/reference/java/lang/Object#getClass()() ` Returns the runtime class of this `Object`. | | ` int` | ` https://developer.android.com/reference/java/lang/Object#hashCode()() ` Returns a hash code value for the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notify()() ` Wakes up a single thread that is waiting on this object's monitor. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notifyAll()() ` Wakes up all threads that are waiting on this object's monitor. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/lang/Object#toString()() ` Returns a string representation of the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait()() ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*. | ||

## Public constructors

### Builder

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public Builder ()
```

Constructs a new `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` for `https://developer.android.com/reference/android/app/appsearch/SearchSpec` objects.

<br />

### Builder

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public Builder (SearchSpec searchSpec)
```

Constructs a new `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` from the given `https://developer.android.com/reference/android/app/appsearch/SearchSpec`.

<br />

| Parameters ||
|---|---|
| `searchSpec` | `SearchSpec`: This value cannot be `null`. <br /> |

## Public methods

### addEmbeddingParameters

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 16](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder addEmbeddingParameters (EmbeddingVector... searchEmbeddings)
```

Adds an embedding search to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry, which will be referred in the query
expression and the ranking expression for embedding search.

<br />

| Parameters ||
|---|---|
| `searchEmbeddings` | `EmbeddingVector`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/app/appsearch/AppSearchSession#search(java.lang.String,%20android.app.appsearch.SearchSpec)`
- `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setRankingStrategy(java.lang.String)`

### addEmbeddingParameters

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 16](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder addEmbeddingParameters (Collection<EmbeddingVector> searchEmbeddings)
```

Adds an embedding search to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry, which will be referred in the query
expression and the ranking expression for embedding search.

<br />

| Parameters ||
|---|---|
| `searchEmbeddings` | `Collection`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/app/appsearch/AppSearchSession#search(java.lang.String,%20android.app.appsearch.SearchSpec)`
- `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setRankingStrategy(java.lang.String)`

### addFilterDocumentIds

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder addFilterDocumentIds (String... documentIds)
```

Adds a document id filter to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry. Only search for documents that
have the specified document ids.

If unset, the query will search over all documents.

<br />

| Parameters ||
|---|---|
| `documentIds` | `String`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### addFilterDocumentIds

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder addFilterDocumentIds (Collection<String> documentIds)
```

Adds a document id filter to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry. Only search for documents that
have the specified document ids.

If unset, the query will search over all documents.

<br />

| Parameters ||
|---|---|
| `documentIds` | `Collection`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### addFilterNamespaces

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SearchSpec.Builder addFilterNamespaces (String... namespaces)
```

Adds a namespace filter to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry. Only search for documents that have
the specified namespaces.

If unset, the query will search over all namespaces.

<br />

| Parameters ||
|---|---|
| `namespaces` | `String`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### addFilterNamespaces

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SearchSpec.Builder addFilterNamespaces (Collection<String> namespaces)
```

Adds a namespace filter to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry. Only search for documents that have
the specified namespaces.

If unset, the query will search over all namespaces.

<br />

| Parameters ||
|---|---|
| `namespaces` | `Collection`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### addFilterPackageNames

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SearchSpec.Builder addFilterPackageNames (String... packageNames)
```

Adds a package name filter to `https://developer.android.com/reference/android/app/appsearch/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.

<br />

| Parameters ||
|---|---|
| `packageNames` | `String`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### addFilterPackageNames

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SearchSpec.Builder addFilterPackageNames (Collection<String> packageNames)
```

Adds a package name filter to `https://developer.android.com/reference/android/app/appsearch/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.

<br />

| Parameters ||
|---|---|
| `packageNames` | `Collection`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### addFilterProperties

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 13](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder addFilterProperties (String schema, 
                Collection<String> propertyPaths)
```

Adds property paths for the specified type to the property filter of `https://developer.android.com/reference/android/app/appsearch/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 `https://developer.android.com/reference/android/app/appsearch/SearchSpec#SCHEMA_TYPE_WILDCARD`, then
those property paths will apply to all results, excepting any types that have their own,
specific property paths set.

<br />

| Parameters ||
|---|---|
| `schema` | `String`: the `https://developer.android.com/reference/android/app/appsearch/AppSearchSchema` that contains the target properties. This value cannot be `null`. <br /> |
| `propertyPaths` | `Collection`: The String version of `https://developer.android.com/reference/android/app/appsearch/PropertyPath`. A dot-delimited sequence of property names. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | <br /> |

### addFilterPropertyPaths

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 13](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder addFilterPropertyPaths (String schema, 
                Collection<PropertyPath> propertyPaths)
```

Adds property paths for the specified type to the property filter of `https://developer.android.com/reference/android/app/appsearch/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.

<br />

| Parameters ||
|---|---|
| `schema` | `String`: the `https://developer.android.com/reference/android/app/appsearch/AppSearchSchema` that contains the target properties. This value cannot be `null`. <br /> |
| `propertyPaths` | `Collection`: The `https://developer.android.com/reference/android/app/appsearch/PropertyPath` to search search over. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addFilterProperties(java.lang.String,%20java.util.Collection<java.lang.String>)`

### addFilterSchemas

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SearchSpec.Builder addFilterSchemas (Collection<String> schemas)
```

Adds a Schema type filter to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry. Only search for documents that
have the specified schema types.

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

<br />

| Parameters ||
|---|---|
| `schemas` | `Collection`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### addFilterSchemas

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SearchSpec.Builder addFilterSchemas (String... schemas)
```

Adds a Schema type filter to `https://developer.android.com/reference/android/app/appsearch/SearchSpec` Entry. Only search for documents that
have the specified schema types.

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

<br />

| Parameters ||
|---|---|
| `schemas` | `String`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### addInformationalRankingExpressions

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 16](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder addInformationalRankingExpressions (String... informationalRankingExpressions)
```

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 `https://developer.android.com/reference/android/app/appsearch/SearchResult#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 `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setRankingStrategy(java.lang.String)`.

<br />

| Parameters ||
|---|---|
| `informationalRankingExpressions` | `String`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### addInformationalRankingExpressions

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 16](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder addInformationalRankingExpressions (Collection<String> informationalRankingExpressions)
```

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 `https://developer.android.com/reference/android/app/appsearch/SearchResult#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 `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setRankingStrategy(java.lang.String)`.

<br />

| Parameters ||
|---|---|
| `informationalRankingExpressions` | `Collection`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### addProjection

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SearchSpec.Builder addProjection (String schema, 
                Collection<String> propertyPaths)
```

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.

<br />

| Parameters ||
|---|---|
| `schema` | `String`: a string corresponding to the schema to add projections to. This value cannot be `null`. <br /> |
| `propertyPaths` | `Collection`: the projections to add. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | <br /> |

**See also:**

- `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#addProjectionPaths(java.lang.String,%20java.util.Collection<android.app.appsearch.PropertyPath>)`

### addProjectionPaths

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 7](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder addProjectionPaths (String schema, 
                Collection<PropertyPath> propertyPaths)
```

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 `https://developer.android.com/reference/android/app/appsearch/SearchSpec#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"
     }
     
<br />

<br />

| Parameters ||
|---|---|
| `schema` | `String`: a string corresponding to the schema to add projections to. This value cannot be `null`. <br /> |
| `propertyPaths` | `Collection`: the projections to add. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | <br /> |

### addSearchStringParameters

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 16](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder addSearchStringParameters (List<String> searchStringParameters)
```

Adds Strings to the list of String parameters that can be referenced in the query through
the "getSearchStringParameter({index})" function.

<br />

| Parameters ||
|---|---|
| `searchStringParameters` | `List`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/app/appsearch/AppSearchSession#search(java.lang.String,%20android.app.appsearch.SearchSpec)`

### addSearchStringParameters

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 16](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder addSearchStringParameters (String... searchStringParameters)
```

Adds Strings to the list of String parameters that can be referenced in the query through
the "getSearchStringParameter({index})" function.

<br />

| Parameters ||
|---|---|
| `searchStringParameters` | `String`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/app/appsearch/AppSearchSession#search(java.lang.String,%20android.app.appsearch.SearchSpec)`

### build

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SearchSpec build ()
```

Constructs a new `https://developer.android.com/reference/android/app/appsearch/SearchSpec` from the contents of this builder.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec` | This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if property weights are provided with a ranking strategy that isn't RANKING_STRATEGY_RELEVANCE_SCORE. |
| `https://developer.android.com/reference/java/lang/IllegalStateException` | if the ranking strategy is `https://developer.android.com/reference/android/app/appsearch/SearchSpec#RANKING_STRATEGY_JOIN_AGGREGATE_SCORE` and `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setJoinSpec(android.app.appsearch.JoinSpec)` has never been called. |
| `https://developer.android.com/reference/java/lang/IllegalStateException` | if the aggregation scoring strategy has been set in `https://developer.android.com/reference/android/app/appsearch/JoinSpec#getAggregationScoringStrategy()` but the ranking strategy is not `https://developer.android.com/reference/android/app/appsearch/SearchSpec#RANKING_STRATEGY_JOIN_AGGREGATE_SCORE`. |

### clearEmbeddingParameters

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder clearEmbeddingParameters ()
```

Clears the embedding parameters.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### clearFilterDocumentIds

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder clearFilterDocumentIds ()
```

Clears the document id filters.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### clearFilterNamespaces

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder clearFilterNamespaces ()
```

Clears all namespace filters.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### clearFilterPackageNames

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder clearFilterPackageNames ()
```

Clears all package name filters.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### clearFilterProperties

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder clearFilterProperties ()
```

Clears the property filters for all schema types.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### clearFilterSchemas

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder clearFilterSchemas ()
```

Clears all schema type filters.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### clearInformationalRankingExpressions

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder clearInformationalRankingExpressions ()
```

Clears all informational ranking expressions.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### clearJoinSpec

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder clearJoinSpec ()
```

Clears the `https://developer.android.com/reference/android/app/appsearch/JoinSpec`.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### clearProjections

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder clearProjections ()
```

Clears the projections for all schema types.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### clearPropertyWeights

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder clearPropertyWeights ()
```

Clears the property weights for all schema types.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### clearResultGrouping

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder clearResultGrouping ()
```

Clears the result grouping and limit.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### clearSearchSourceLogTag

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder clearSearchSourceLogTag ()
```

Clears the log tag that indicates the source of this search.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### clearSearchStringParameters

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder clearSearchStringParameters ()
```

Clears the list of String parameters that can be referenced in the query through the
"getSearchStringParameter({index})" function.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setDefaultEmbeddingSearchMetricType

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 16](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder setDefaultEmbeddingSearchMetricType (int defaultEmbeddingSearchMetricType)
```

Sets the default embedding metric type used for embedding search (see `https://developer.android.com/reference/android/app/appsearch/AppSearchSession#search(java.lang.String,%20android.app.appsearch.SearchSpec)`) and ranking (see `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setRankingStrategy(java.lang.String)`).

If this method is not called, the default embedding search metric type is `https://developer.android.com/reference/android/app/appsearch/SearchSpec#EMBEDDING_SEARCH_METRIC_TYPE_COSINE`. Metrics specified within
"semanticSearch" or "matchedSemanticScores" functions in search/ranking expressions will
override this default.

<br />

| Parameters ||
|---|---|
| `defaultEmbeddingSearchMetricType` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#EMBEDDING_SEARCH_METRIC_TYPE_DEFAULT` - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#EMBEDDING_SEARCH_METRIC_TYPE_COSINE` - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#EMBEDDING_SEARCH_METRIC_TYPE_DOT_PRODUCT` - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#EMBEDDING_SEARCH_METRIC_TYPE_EUCLIDEAN` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setJoinSpec

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 7](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder setJoinSpec (JoinSpec joinSpec)
```

Specifies which documents to join with, and how to join.

If the ranking strategy is `https://developer.android.com/reference/android/app/appsearch/SearchSpec#RANKING_STRATEGY_JOIN_AGGREGATE_SCORE`, and the
JoinSpec is null, `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#build()` will throw an `https://developer.android.com/reference/android/app/appsearch/exceptions/AppSearchException`.

<br />

| Parameters ||
|---|---|
| `joinSpec` | `JoinSpec`: a specification on how to perform the Join operation. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | <br /> |

### setListFilterHasPropertyFunctionEnabled

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 13](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder setListFilterHasPropertyFunctionEnabled (boolean enabled)
```

Sets the LIST_FILTER_HAS_PROPERTY_FUNCTION feature as enabled/disabled according to the
enabled parameter.

<br />

| Parameters ||
|---|---|
| `enabled` | `boolean`: Enables the feature if true, otherwise disables it If disabled, disallows the use of the "hasProperty" function. See `https://developer.android.com/reference/android/app/appsearch/AppSearchSession#search(java.lang.String,%20android.app.appsearch.SearchSpec)` for more details about the function. |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setListFilterMatchScoreExpressionFunctionEnabled

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder setListFilterMatchScoreExpressionFunctionEnabled (boolean enabled)
```

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
`https://developer.android.com/reference/android/app/appsearch/AppSearchSession#search(java.lang.String,%20android.app.appsearch.SearchSpec)` for more details about the function.

<br />

| Parameters ||
|---|---|
| `enabled` | `boolean`: Enables the feature if true, otherwise disables it <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setListFilterQueryLanguageEnabled

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 7](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder setListFilterQueryLanguageEnabled (boolean enabled)
```

Sets the LIST_FILTER_QUERY_LANGUAGE feature as enabled/disabled according to the enabled
parameter.

<br />

| 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: - addition of explicit 'AND' and 'NOT' operators - property restricts are allowed with grouping (ex. "prop:(a OR b)") - addition of custom functions to control matching The newly added custom functions covered by this feature are: - createList(String...) - termSearch(String, `List<String>`) 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\\"))" |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setMaxSnippetSize

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SearchSpec.Builder setMaxSnippetSize (int maxSnippetSize)
```

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.

<br />

| Parameters ||
|---|---|
| `maxSnippetSize` | `int`: Value is between 0 and `https://developer.android.com/` inclusive <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setNumericSearchEnabled

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 7](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder setNumericSearchEnabled (boolean enabled)
```

Sets the NUMERIC_SEARCH feature as enabled/disabled according to the enabled parameter.

<br />

| Parameters ||
|---|---|
| `enabled` | `boolean`: Enables the feature if true, otherwise disables it. If disabled, disallows use of `https://developer.android.com/reference/android/app/appsearch/AppSearchSchema.LongPropertyConfig#INDEXING_TYPE_RANGE` and all other numeric querying features. |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setOrder

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SearchSpec.Builder setOrder (int order)
```

Sets the order of returned search results, the default is `https://developer.android.com/reference/android/app/appsearch/SearchSpec#ORDER_DESCENDING`,
meaning that results with higher scores come first.

This order field will be ignored if RankingStrategy = `RANKING_STRATEGY_NONE`.

<br />

| Parameters ||
|---|---|
| `order` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#ORDER_DESCENDING` - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#ORDER_ASCENDING` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setPropertyWeightPaths

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 7](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder setPropertyWeightPaths (String schemaType, 
                Map<PropertyPath, Double> propertyPathWeights)
```

Sets property weights by schema type and property path.

Property weights are used to promote and demote query term matches within a `https://developer.android.com/reference/android/app/appsearch/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 `https://developer.android.com/reference/android/app/appsearch/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 `https://developer.android.com/reference/android/app/appsearch/AppSearchSchema` will
be discarded and not affect scoring.

**NOTE:** Property weights only affect scoring for query-dependent scoring
strategies, such as `https://developer.android.com/reference/android/app/appsearch/SearchSpec#RANKING_STRATEGY_RELEVANCE_SCORE`.

<br />

| Parameters ||
|---|---|
| `schemaType` | `String`: the schema type to set property weights for. This value cannot be `null`. <br /> |
| `propertyPathWeights` | `Map`: a `https://developer.android.com/reference/java/util/Map` of property paths of the schema type to the weight to set for that property. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if a weight is equal to or less than 0.0. |

### setPropertyWeights

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 7](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder setPropertyWeights (String schemaType, 
                Map<String, Double> propertyPathWeights)
```

Sets property weights by schema type and property path.

Property weights are used to promote and demote query term matches within a `https://developer.android.com/reference/android/app/appsearch/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 `https://developer.android.com/reference/android/app/appsearch/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 `https://developer.android.com/reference/android/app/appsearch/AppSearchSchema` will
be discarded and not affect scoring.

**NOTE:** Property weights only affect scoring for query-dependent scoring
strategies, such as `https://developer.android.com/reference/android/app/appsearch/SearchSpec#RANKING_STRATEGY_RELEVANCE_SCORE`.

<br />

| Parameters ||
|---|---|
| `schemaType` | `String`: the schema type to set property weights for. This value cannot be `null`. <br /> |
| `propertyPathWeights` | `Map`: a `https://developer.android.com/reference/java/util/Map` of property paths of the schema type to the weight to set for that property. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if a weight is equal to or less than 0.0. |

### setRankingStrategy

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 7](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder setRankingStrategy (String advancedRankingExpression)
```

Enables advanced ranking to score based on `advancedRankingExpression`.

This method will set RankingStrategy to `https://developer.android.com/reference/android/app/appsearch/SearchSpec#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 `https://developer.android.com/reference/android/app/appsearch/SearchSpec#RANKING_STRATEGY_DOCUMENT_SCORE`.

- this.creationTimestamp() Get the creation timestamp of the current document. This is the same score that
  is returned for `https://developer.android.com/reference/android/app/appsearch/SearchSpec#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 `https://developer.android.com/reference/android/app/appsearch/SearchSpec#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 `https://developer.android.com/reference/android/app/appsearch/AppSearchSession#reportUsage(android.app.appsearch.ReportUsageRequest,%20java.util.concurrent.Executor,%20java.util.function.Consumer<android.app.appsearch.AppSearchResult<java.lang.Void>>)`, and type 2 refers to
  usages reported by `https://developer.android.com/reference/android/app/appsearch/GlobalSearchSession#reportSystemUsage(android.app.appsearch.ReportSystemUsageRequest,%20java.util.concurrent.Executor,%20java.util.function.Consumer<android.app.appsearch.AppSearchResult<java.lang.Void>>)`.

- this.childrenRankingSignals() Returns a list of children ranking signals calculated by scoring the joined
  documents using the ranking strategy specified in the nested `https://developer.android.com/reference/android/app/appsearch/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
  `https://developer.android.com/reference/android/app/appsearch/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 `https://developer.android.com/reference/android/app/appsearch/AppSearchSession#search(java.lang.String,%20android.app.appsearch.SearchSpec)`) based on
  embedding_index and metric. If metric is omitted, it defaults to the metric
  specified in `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setDefaultEmbeddingSearchMetricType(int)`.
  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 `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setScorablePropertyRankingEnabled(boolean)`.
- 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 `https://developer.android.com/`.
- 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 `https://developer.android.com/`.
- 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 `https://developer.android.com/`.

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 `https://developer.android.com/reference/android/app/appsearch/SearchResults#getNextPage(java.util.concurrent.Executor,%20java.util.function.Consumer<android.app.appsearch.AppSearchResult<java.util.List<android.app.appsearch.SearchResult>>>)` to throw an `https://developer.android.com/reference/android/app/appsearch/exceptions/AppSearchException` with the result code of
`https://developer.android.com/reference/android/app/appsearch/AppSearchResult#RESULT_INVALID_ARGUMENT`.

Evaluation errors will result in the offending documents receiving the default score.
For `https://developer.android.com/reference/android/app/appsearch/SearchSpec#ORDER_DESCENDING`, the default score will be 0, for `https://developer.android.com/reference/android/app/appsearch/SearchSpec#ORDER_ASCENDING`
the default score will be infinity.

<br />

| Parameters ||
|---|---|
| `advancedRankingExpression` | `String`: a non-empty string representing the ranking expression. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setRankingStrategy

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 7](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder setRankingStrategy (int rankingStrategy)
```

Sets ranking strategy for AppSearch results.

<br />

| Parameters ||
|---|---|
| `rankingStrategy` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#RANKING_STRATEGY_NONE` - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#RANKING_STRATEGY_DOCUMENT_SCORE` - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#RANKING_STRATEGY_CREATION_TIMESTAMP` - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#RANKING_STRATEGY_RELEVANCE_SCORE` - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#RANKING_STRATEGY_USAGE_COUNT` - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#RANKING_STRATEGY_USAGE_LAST_USED_TIMESTAMP` - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#RANKING_STRATEGY_SYSTEM_USAGE_COUNT` - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#RANKING_STRATEGY_SYSTEM_USAGE_LAST_USED_TIMESTAMP` - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#RANKING_STRATEGY_JOIN_AGGREGATE_SCORE` - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#RANKING_STRATEGY_ADVANCED_RANKING_EXPRESSION` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setResultCountPerPage

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SearchSpec.Builder setResultCountPerPage (int resultCountPerPage)
```

Sets the number of results per page in the returned object.

The default number of results per page is 10.

<br />

| Parameters ||
|---|---|
| `resultCountPerPage` | `int`: Value is between 0 and `https://developer.android.com/` inclusive <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setResultGrouping

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SearchSpec.Builder setResultGrouping (int groupingTypeFlags, 
                int limit)
```

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.

<br />

| Parameters ||
|---|---|
| `groupingTypeFlags` | `int`: One or more combination of grouping types. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#GROUPING_TYPE_PER_PACKAGE` - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#GROUPING_TYPE_PER_NAMESPACE` - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#GROUPING_TYPE_PER_SCHEMA` |
| `limit` | `int`: Number of results to return per `groupingTypeFlags`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if groupingTypeFlags is zero. |

### setRetrieveEmbeddingMatchInfos

Added in [version 36.1](https://developer.android.com/topic/libraries/support-library/revisions)  
Also in [T Extensions 18](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder setRetrieveEmbeddingMatchInfos (boolean retrieveEmbeddingMatchInfos)
```

Sets whether to retrieve embedding match infos as a part of `https://developer.android.com/reference/android/app/appsearch/SearchResult#getMatchInfos()`.

Note that this does not modify the snippet count fields, and any retrieved embedding
match infos also count toward the limit set in `https://developer.android.com/reference/android/app/appsearch/SearchSpec#getSnippetCount()` and
`https://developer.android.com/reference/android/app/appsearch/SearchSpec#getSnippetCountPerProperty()`.

<br />

| Parameters ||
|---|---|
| `retrieveEmbeddingMatchInfos` | `boolean` <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setScorablePropertyRankingEnabled

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder setScorablePropertyRankingEnabled (boolean enabled)
```

Sets the ScorablePropertyRanking feature as enabled or disabled.

If enabled, 'getScorableProperty' function can be used in the advanced ranking
expression. For details, see `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder#setRankingStrategy(java.lang.String)`.

<br />

| Parameters ||
|---|---|
| `enabled` | `boolean`: Enables the feature if true, otherwise disables it. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setSearchSourceLogTag

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 13](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder setSearchSourceLogTag (String searchSourceLogTag)
```

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.

<br />

| 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 `https://developer.android.com/reference/android/util/Log`. The length of the teg should between 1 and 100. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setSnippetCount

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SearchSpec.Builder setSnippetCount (int snippetCount)
```

Sets the `snippetCount` such that the first `snippetCount` documents based on
the ranking strategy will have snippet information provided.

The list returned from `https://developer.android.com/reference/android/app/appsearch/SearchResult#getMatchInfos()` will contain at most this
many entries.

If set to 0 (default), snippeting is disabled and the list returned from `https://developer.android.com/reference/android/app/appsearch/SearchResult#getMatchInfos()` will be empty.

<br />

| Parameters ||
|---|---|
| `snippetCount` | `int`: Value is between 0 and `https://developer.android.com/` inclusive <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setSnippetCountPerProperty

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SearchSpec.Builder setSnippetCountPerProperty (int snippetCountPerProperty)
```

Sets `snippetCountPerProperty`. Only the first `snippetCountPerProperty`
snippets for each property of each `https://developer.android.com/reference/android/app/appsearch/GenericDocument` will contain snippet
information.

If set to 0, snippeting is disabled and the list returned from `https://developer.android.com/reference/android/app/appsearch/SearchResult#getMatchInfos()` will be empty.

The default behavior is to snippet all matches a property contains, up to the maximum
value of 10,000.

<br />

| Parameters ||
|---|---|
| `snippetCountPerProperty` | `int`: Value is between 0 and `https://developer.android.com/` inclusive <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setTermMatch

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SearchSpec.Builder setTermMatch (int termMatchType)
```

Sets how the query terms should match `TermMatchCode` in the index.

If this method is not called, the default term match type is `https://developer.android.com/reference/android/app/appsearch/SearchSpec#TERM_MATCH_PREFIX`.

<br />

| Parameters ||
|---|---|
| `termMatchType` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#TERM_MATCH_EXACT_ONLY` - `https://developer.android.com/reference/android/app/appsearch/SearchSpec#TERM_MATCH_PREFIX` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |

### setVerbatimSearchEnabled

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 7](https://developer.android.com/sdkExtensions)

```
public SearchSpec.Builder setVerbatimSearchEnabled (boolean enabled)
```

Sets the VERBATIM_SEARCH feature as enabled/disabled according to the enabled parameter.

<br />

| Parameters ||
|---|---|
| `enabled` | `boolean`: Enables the feature if true, otherwise disables it If disabled, disallows use of `https://developer.android.com/reference/android/app/appsearch/AppSearchSchema.StringPropertyConfig#TOKENIZER_TYPE_VERBATIM` and all other verbatim search features within the query language that allows clients to search using the verbatim string operator. For example, The verbatim string operator '"foo/bar" OR baz' will ensure that 'foo/bar' is treated as a single 'verbatim' token. |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/app/appsearch/SearchSpec.Builder` | This value cannot be `null`. <br /> |