Provides access to the centralized AppSearch index maintained by the system.
AppSearch is an offline, on-device search library for managing structured data featuring:
- APIs to index and retrieve data via full-text search.
 - An API for applications to explicitly grant read-access permission of their data to
        other applications. See: 
SetSchemaRequest.Builder.setSchemaTypeVisibilityForPackage(String, boolean, PackageIdentifier) - An API for applications to opt into or out of having their data displayed on System UI
        surfaces by the System-designated global querier. See: 
SetSchemaRequest.Builder.setSchemaTypeDisplayedBySystem(String, boolean) 
Applications create a database by opening an AppSearchClient.
Example:
 AppSearchManager appSearchManager = context.getSystemService(AppSearchManager.class);
 AppSearchManager.SearchContext searchContext = new AppSearchManager.SearchContext.Builder().
    setDatabaseName(dbName).build());
 appSearchManager.createSearchSession(searchContext, mExecutor, AppSearchClientResult -> {
      mAppSearchClient = AppSearchClientResult.getResultValue();
 });After opening the session, a schema must be set in order to define the organizational
      structure of data. The schema is set by calling 
      AppSearchClient.setSchema(SetSchemaRequest, String). The schema is composed of a
      collection of AppSearchSchema
      objects, each of which defines a unique type of data.
Example:
 AppSearchSchema emailSchemaType = new AppSearchSchema.Builder("Email")
     .addProperty(new StringPropertyConfig.Builder("subject")
        .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
        .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
        .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
    .build()
 ).build();
 SetSchemaRequest request = new SetSchemaRequest.Builder().addSchema(emailSchemaType).build();
 mAppSearchClient.set(request, mExecutor, appSearchResult -> {
      if (appSearchResult.isSuccess()) {
           // Schema has been successfully set.
      }
 });The basic unit of data in AppSearch is represented as a GenericDocument
      object, containing an ID, namespace, time-to-live, score, and properties. A namespace
      organizes a logical group of documents. For example, a namespace can be created to group
      documents on a per-account basis. An ID identifies a single document within a namespace. The
      combination of namespace and ID uniquely identifies a GenericDocument
      in the database.
Once the schema has been set, GenericDocument
      objects can be put into the database and indexed by calling 
      AppSearchClient.put(PutDocumentsRequest, String).
Example:
 // Although for this example we use GenericDocument directly, we recommend extending
 // GenericDocument to create specific types (i.e. Email) with specific setters/getters.
 GenericDocument email = new GenericDocument.Builder<>(NAMESPACE, ID, EMAIL_SCHEMA_TYPE)
     .setPropertyString(“subject”, EMAIL_SUBJECT)
     .setScore(EMAIL_SCORE)
     .build();
 PutDocumentsRequest request = new PutDocumentsRequest.Builder().addGenericDocuments(email)
     .build();
 mAppSearchClient.put(request, mExecutor, appSearchBatchResult -> {
      if (appSearchBatchResult.isSuccess()) {
           // All documents have been successfully indexed.
      }
 });Searching within the database is done by calling 
      AppSearchClient.search(String, SearchSpec, String) and providing the query string
      to search for, as well as a SearchSpec.
Alternatively, 
      AppSearchClient.getByDocumentId(GetByDocumentIdRequest, String) can be called to
      retrieve documents by namespace and ID.
Document removal is done either by time-to-live expiration, or explicitly calling a remove
      operation. Remove operations can be done by namespace and ID via 
      AppSearchClient.remove(RemoveByDocumentIdRequest, String), or by query via
      
      AppSearchClient.remove(String, SearchSpec, String).
Nested Class Summary
| class | AppSearchManager.SearchContext | Contains information about how to create the search session. | |