AppSearch

A AppSearch é uma biblioteca de pesquisa no dispositivo para gerenciar dados estruturados armazenados localmente, com APIs para indexar e extrair dados usando a pesquisa de texto completo. Use-a para criar recursos personalizados de pesquisa no app para os usuários.
Atualização mais recente Versão estável Versão candidata a lançamento Versão Beta Versão Alfa
2 de julho de 2025 1.1.0 - - -

Declarar dependências

Para incluir uma dependência na AppSearch, adicione o repositório Maven do Google ao projeto. Leia a seção Repositório Maven do Google para ver mais informações.

Adicione as dependências dos artefatos necessários no arquivo build.gradle para seu app ou módulo:

Groovy

dependencies {
    def appsearch_version = "1.1.0"

    implementation "androidx.appsearch:appsearch:$appsearch_version"
    // Use kapt instead of annotationProcessor if writing Kotlin classes
    annotationProcessor "androidx.appsearch:appsearch-compiler:$appsearch_version"

    implementation "androidx.appsearch:appsearch-local-storage:$appsearch_version"
    // PlatformStorage is compatible with Android 12+ devices, and offers additional features
    // to LocalStorage.
    implementation "androidx.appsearch:appsearch-platform-storage:$appsearch_version"

    // PlayServicesStorage is compatible with all devices that support Google Play Services on
    // all API levels. It offers the same features as PlatformStorage and is the recommended
    // solution for lower API levels on which PlatformStorage is not supported.
    implementation "androidx.appsearch:appsearch-play-services-storage:$appsearch_version"
}

Kotlin

dependencies {
    val appsearch_version = "1.1.0"

    implementation("androidx.appsearch:appsearch:$appsearch_version")
    // Use annotationProcessor instead of kapt if writing Java classes
    kapt("androidx.appsearch:appsearch-compiler:$appsearch_version")

    implementation("androidx.appsearch:appsearch-local-storage:$appsearch_version")
    // PlatformStorage is compatible with Android 12+ devices, and offers additional features
    // to LocalStorage.
    implementation("androidx.appsearch:appsearch-platform-storage:$appsearch_version")

    // PlayServicesStorage is compatible with all devices that support Google Play Services on
    // all API levels. It offers the same features as PlatformStorage and is the recommended
    // solution for lower API levels on which PlatformStorage is not supported.
    implementation("androidx.appsearch:appsearch-play-services-storage:$appsearch_version")

}

Para ver mais informações sobre dependências, consulte Adicionar dependências de build.

Feedback

Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.

Criar novo problema

Consulte a documentação do Issue Tracker para saber mais.

Versão 1.1

Versão 1.1.0

2 de julho de 2025

Lançamento de androidx.appsearch:appsearch-*:1.1.0. A versão 1.1.0 contém estas confirmações.

Versão 1.1.0-rc01

20 de maio de 2025

Lançamento de androidx.appsearch:appsearch-*:1.1.0-rc01. A versão 1.1.0-rc01 contém estas confirmações.

Novos recursos

  • O módulo AppSearch entra em RC.
  • Adiciona uma nova API experimental para acumular ações do método PutDocumentsRequest#addTakenAction (I7b726).
  • Adição de SearchResult#TextMatchInfo e SearchResult#EmbeddingMatchInfo; reestruturação de SearchResult#MatchInfo para fornecer informações de correspondência para correspondências de incorporações (I8f78d).
  • Introdução de funções de classificação para manipulação de listas (Ifa4ab)

Mudanças na API

  • Suporte ao processador de anotações AppSearch para a propriedade de identificador de blob. (I9520b).
  • Atualize o processador de anotações AppSearch para oferecer suporte à quantização. (Ie0c85).
  • Adição de um método getFeatures() estático a PlatformStorage e LocalStorage (I5a206)

Correções de bugs

  • Agora, essa biblioteca usa anotações de nulidade do JSpecify, que são de uso de tipo. Os desenvolvedores Kotlin precisam usar os seguintes argumentos do compilador para aplicar o uso correto: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (I91f42, b/326456246)

Versão 1.1.0-beta01

15 de janeiro de 2025

Lançamento de androidx.appsearch:appsearch-*:1.1.0-beta01. A versão 1.1.0-beta01 contém estas confirmações.

Novos recursos

  • O módulo AppSearch entra na versão Beta.

Mudanças na API

  • Desativamos a API experimental de propagação de exclusão AppSearch devido a problemas de estabilidade. (Iea386)
  • Crie a API GlobalSearchApplicationInfo, uma maneira experimental e opcional para produtores e consumidores indicarem interesse em determinados tipos. (I116fd).
  • Pequenas mudanças nas APIs experimentais de AST (criador de consultas) (Ibd852)

Correções de bugs

  • Agora, essa biblioteca usa anotações de nulidade do JSpecify, que são de uso de tipo. Os desenvolvedores Kotlin precisam usar o seguinte argumento do compilador para garantir o uso correto: -Xjspecify-annotations=strict (esse é o padrão a partir da versão 2.1.0 do compilador Kotlin). (Ic2976, b/326456246).
  • Adiciona a permissão necessária a searchPersonCorpus (I4431d).

Versão 1.1.0-alpha07

11 de dezembro de 2024

Lançamento de androidx.appsearch:appsearch-*:1.1.0-alpha07. A versão 1.1.0-alpha07 contém estas confirmações.

Novos recursos

  • Adicione a anotação ExperimentalAppSearchApi às novas superfícies de API que ainda não foram estabilizadas. (Ib09f4).
  • Suporte para armazenar e compartilhar dados de blob binários de maneira eficiente usando AppSearchSession#openBlobForWriteAsync e métodos relacionados
  • Suporte para filtrar resultados de consultas por expressão de pontuação usando a função matchScoreExpression (Id525a)
  • Suporte para propagar a exclusão do documento principal para os documentos filhos. (Ia032d)
  • Suporte para a API de quantização de incorporação para aumentar a performance com uma pequena perda de qualidade. (Id8a07).
  • Suporte para restringir pesquisas a determinados documentos usando a API addFilterDocumentIds em SearchSpec. (I7c6f1).

Mudanças na API

  • Mova as informações do tipo principal de GenericDocument para SearchResult. (I34a1d).
  • Suporte a novos tipos de ação na API TakenAction, incluindo DismissAction e ImpressionAction. (I0c6c7)
  • Adição do novo esquema integrado do AppSearch WebPage. (I28127).

Versão 1.1.0-alpha06

16 de outubro de 2024

Lançamento de androidx.appsearch:appsearch-*:1.1.0-alpha06. A versão 1.1.0-alpha06 contém estas confirmações.

Mudanças na API

  • Adicionamos o nó que representa a função de consulta PropertyDefined. (I1aeaf).
  • Adicione nós para representar a pesquisa numérica e a restrição de propriedade. (I963a9).
  • Adiciona o nó que representa a função de consulta GetSearchStringParameter. (I4f99b).
  • Adicione o nó que representa a função de consulta HasProperty. (I9c1c5).
  • Adicionada interface para implementar funções em AST. (I9d42e).
  • Adicione operadores AND e OR. (Iaa442).
  • Adicione NegationNode para representar a negação lógica de consultas em AST. (Ia855a).
  • Adicione a interface Node a AppSearch para definir nós. (If42fb).
  • Adiciona uma anotação de API experimental para AppSearch. (I3e57c).

Correções de bugs

  • Adição de TextNodes para termos de retenção. (Iefd02).

Correção de segurança

  • A partir desta mudança, o androidx é compilado com o protobuf 4.28.2 para resolver a CVE-2024-7254. Faça upgrade da sua dependência do androidx.appsearch:appsearch-external-protobuf para a versão mais recente, 1.1.0-alpha06, e resolva o risco de vulnerabilidade.

Versão 1.1.0-alpha05

4 de setembro de 2024

Lançamento de androidx.appsearch:appsearch-*:1.1.0-alpha05. A versão 1.1.0-alpha05 contém estas confirmações.

Mudanças na API

  • Descontinua setEmbeddingSearchEnabled e getEmbeddingSearchEnabled desnecessários. Exclui setListFilterTokenizeFunctionEnabled e getListFilterTokenizeFunctionEnabled. Excluímos a função de consulta "tokenize". Substituído pela função de consulta getSearchStringParameter e pela função addSearchStringParameter. (I09f5a)
  • Alarm#getComputingDevice foi renomeado como getOriginatingDevice. (I63121).

Versão 1.1.0-alpha04

7 de agosto de 2024

Lançamento de androidx.appsearch:appsearch-*:1.1.0-alpha04. A versão 1.1.0-alpha04 contém estas confirmações.

Novos recursos

  • Suporte para a nova implementação de PlayServicesStorage, que permite usar AppSearch em dispositivos mais antigos sem incorrer no custo significativo de tamanho do APK de LocalStorage. Essa implementação de armazenamento funciona armazenando dados do app no app Google Play Services.
  • Suporte para novas APIs em dispositivos com Android 15.
  • Suporte à pesquisa no banco de dados por vetores de incorporação, permitindo correspondência aproximada. (I2b41b).
  • Compatibilidade com tipos de elementos principais e polimorfismo no modelo de esquema AppSearch. (I06118).
  • Suporte à API TakenAction, que permite que os apps informem quando os resultados foram clicados ou abandonados, para aumentar a qualidade durante pesquisas subsequentes. (I54091).
  • Suporte a classes com builders no processador de anotações ao introduzir a nova anotação @Document.BuilderProducer. (Iec30a).
  • Suporte a um controle mais refinado sobre quais propriedades de um documento aninhado são indexadas. (Iec30a).
  • Suporte para filtrar pesquisas em determinadas propriedades de documentos. (Ib2659).
  • Permitir configurações de visibilidade mais refinadas com OR e AND. (I0274b).
  • Suporte para conceder visibilidade de dados a todos os apps que podem ver a existência do app proprietário (visibilidade pública). (I992e4).
  • Suporte para recuperar apenas resultados com dados preenchidos em uma determinada propriedade. (I7d94f).
  • Suporte para recuperar contatos corporativos no perfil pessoal. (Idd587).

Mudanças na API

  • Adicione os parâmetros de anotação indexableNestedPropertiesList e inheritIndexableNestedPropertiesFromSuperclass à anotação Document.DocumentProperty do AppSearch para permitir a indexação de caminhos de propriedades aninhadas específicos. (Iec30a).
  • Adição de suporte ao construtor de builder para criar instâncias de builder no processador de anotações AppSearch (I265c9)
  • Atualização do processador de anotações AppSearch para oferecer suporte à definição de tipos principais para polimorfismo (I06118).
  • Adiciona o método GetSchemaRequest para limpar as configurações de visibilidade (I38379).
  • Suporte a addParentType no AppSearch para polimorfismo (Ida14a).
  • Adição de APIs para outras expressões de classificação (I5d9f4).
  • Adição da API SearchAction (I54091).
  • Adição do campo de descrição para tipos AppSearch (I84762)
  • Integração das APIs de consulta e classificação de pesquisa de embeddings ao AppSearch (I0f6c3)
  • Remove getDeletionPropagation (I21192)

Versão 1.1.0-alpha03

24 de maio de 2023

Lançamento de androidx.appsearch:appsearch-*:1.1.0-alpha03. A versão 1.1.0-alpha03 contém estas confirmações.

Novos recursos

  • Suporte para uma API de consulta avançada, uma API de pontuação avançada e pesquisa numérica. (I02d48).
  • Adiciona a API LocalStorage.createGlobalSearchSession para pesquisar em todos os bancos de dados no armazenamento local de um único app. (Id3c89)
  • Adicionamos uma API para unir documentos por ID (Iaecfa)
  • Suporte a ponderações de propriedades para marcar determinadas propriedades como mais importantes ao usar RANKING_STRATEGY_RELEVANCE_SCORING. (I069b9)
  • Adicione "Person" e ContactPoint para consultar o corpus de pessoas em AppSearch. (Ia58f9).
  • Adição do novo tipo de documento ImageObject, modelado de acordo com http://schema.org/ImageObject. (I6a0c0).
  • Adicione um tokenizador VERBATIM que permite adicionar propriedades sem interpretação pelo AppSearch. (I47bc0).
  • Adicionamos RFC822_TOKENIZATION como um tipo de tokenizador, permitindo a tokenização de endereços de e-mail. (I8a390).
  • Ative a pesquisa global na visualização de depuração. (I51fb2).

Mudanças na API

  • Remoção de métodos que retornam ListenableFuture e não têm o sufixo "Async". (I0515f)
  • Adiciona a capacidade de configurar projeções por uma classe Document. (I94576)
  • Adição de campos de Thing a Alarm, AlarmInstance, Timer, Stopwatch, StopwatchLap, ContactPoint e Person (Id876c)

Correções de bugs

  • Suporte total aos recursos do Android 13 em appsearch-platform-storage (Ia8e61)
  • Correção de problemas com a substituição de nomes de esquema e campos particulares ao usar herança.

Versão 1.1.0-alpha02

24 de agosto de 2022

Lançamento de androidx.appsearch:appsearch-*:1.1.0-alpha02. A versão 1.1.0-alpha02 contém estas confirmações.

Novos recursos

  • Aceleração do processo do Optimize usando a compactação de índices em vez de recriar o índice do zero.
  • A tag de geração de registros nativa mudou de "icing" para "AppSearchIcing". O registro das mensagens de informação é feito por padrão.

Mudanças na API

  • Adição de um novo objeto PropertyPath para trabalhar com caminhos e novos métodos addProjection para aceitar PropertyPath (I45588).
  • Adição de builtin:Thing aos tipos AppSearch integrados (I55427).
  • A prevenção de nomes de propriedade vazios na classe GenericDocument ocorre mais cedo. Antes, eles eram proibidos no momento da indexação, agora isso é feito no momento do GenericDocument.Builder.build() (I9e780).

Correções de bugs

  • A formatação de string desnecessária foi removida para melhorar a performance da pontuação de relevância.
  • Paginação mais eficiente ao encontrar documentos ilegíveis ou excluídos.
  • Coleta de lixo implementada para consultas abandonadas.
  • O suporte à indexação aninhada para documentos foi corrigido. Antes, as indexNestedProperties eram ignoradas (Iae9a6).

Contribuição externa

  • Shea Smith: correção do suporte à indexação aninhada para documentos (Iae9a6).

Versão 1.1.0-alpha01

15 de junho de 2022

Lançamento de androidx.appsearch:appsearch-*:1.1.0-alpha01. A versão 1.1.0-alpha01 foi desenvolvida em uma ramificação de pré-lançamento particular e não tem confirmações públicas.

Mudanças na API

  • Todos os métodos que retornam ListenableFuture foram renomeados com o sufixo "Async". Por exemplo, getSchema foi renomeado como getSchemaAsync. As versões anteriores foram descontinuadas e serão removidas em uma versão futura.

Novos recursos

  • Primeira versão de appsearch-builtin-types. Esse projeto contém alguns tipos integrados com base no schema.org, que os clientes podem considerar como convenientes para uso, em vez de definir os próprios tipos para objetos comuns. Mais tipos serão adicionados em versões futuras.
  • Capacidade de usar ShortcutAdapter para converter um documento AppSearch em um ShortcutInfoCompat. Assim, os clientes podem compartilhar documentos da AppSearch com o Google usando a biblioteca core-google-shortcuts.
  • Capacidade de usar a herança com classes @Document. Os campos não podem ser substituídos ou modificados, mas é possível adicionar novos campos estendendo uma classe com a anotação @Document.
  • Nova API Observer, que permite que os clientes se registrem para receber notificações quando os tipos aos quais eles têm acesso tiverem mudado ou quando documentos desses tipos forem adicionados, modificados ou removidos. IMPORTANTE: a implementação atual só envia notificações quando o app está em execução. No momento, não é possível inspecionar as mudanças que ocorreram enquanto seu app estava parado. Portanto, não confie nessa API para garantir a integridade.
  • API Property Parser, que permite processar e inspecionar completamente os caminhos de propriedade retornados por MatchInfo#getPropertyPath.
  • APIs globais getById e getSchema para recuperar documentos e esquemas de outros apps que concederam visibilidade a você.
  • Capacidade de recuperar informações de visibilidade na getSchema para dados aos quais você tem acesso.
  • Capacidade de conceder visibilidade a apps que detêm uma determinada permissão do Android. Isso é restrito a um pequeno grupo na lista de permissões.
  • Suporte a getters no estilo isFoo() para campos booleanos no processador de anotações, além do estilo hasFoo() que já tinha suporte.
  • Suporte a novos recursos protegidos por @RequiresFeature. Use AppSearchSession#getFeatures para determinar a que o back-end atual tem suporte.
  • Remoção do limite de aproximadamente 13 mil tokens em documentos individuais.
  • Permissão da correspondência de caracteres que não são ASCII nem alfanuméricos, como emojis.

Correções de bugs

  • Correção do bug que causava falhas em SetSchema ao substituir um tipo incompatível aninhado.
  • Correções para oferecer suporte total a classes com a anotação @AutoValue que são usadas como classes @Document da AppSearch.
  • Correções de algumas falhas relacionadas a listas repetidas de classes de documentos e outros problemas.
  • Correção de um bug que causava falhas na pesquisa de prefixo em determinadas circunstâncias.
  • Correção de um pequeno bug em GetStorageInfo, que retornava valores incorretos ao encontrar falhas de E/S.
  • Correção de problemas BUSADDERR ao ler um documento.
  • Correção da corrupção do Logcat causada ao imprimir uma impressão digital não formatada.
  • Correção do NPE causado por falhas de E/S.
  • Correção do vazamento de memória em GetSchemaType, Get, Delete, DeleteByNamespace e DeleteBySchemaType.

Versão 1.0.0

Versão 1.0.0-alpha04

3 novembro de 2021

Lançamento de androidx.appsearch:appsearch-*:1.0.0-alpha04. A versão 1.0.0-alpha04 contém estas confirmações.

Novos recursos

  • A dependência ListenableFuture do Guava foi adicionada automaticamente como uma dependência da API.

Mudanças na API

  • SearchResult#getSubmatchRange() e SearchResult#getSubmatch() foram adicionados para fornecer mais informações sobre cada correspondência (I2fef6).
  • A documentação sobre como gerar impressões digitais do PackageIdentifier para compartilhar dados por nome do pacote + certificado foi esclarecida.

Correções de bugs

  • Correção do erro que ocorria quando o usuário tentava buscar páginas de resultados após o fim do conjunto de resultados.
  • Correção do problema que fazia com que todos os namespaces fossem consultados quando apenas namespaces inválidos eram fornecidos como filtros de consulta.
  • Correção do problema que fazia com que todos os namespaces fossem removidos quando apenas namespaces inválidos eram fornecidos como filtros de remoção de consulta.
  • Correção do problema que fazia com que os dados do documento parassem de ser indexados após um determinado ponto em documentos muito grandes.
  • Correção do problema que fazia com que a tokenização soltasse segmentos com caracteres numéricos não ASCII.
  • Foi adicionada uma verificação de tentativas consecutivas de inicialização com falha para ajudar a eliminar o estado possivelmente inadequado que impede a inicialização.

Versão 1.0.0-alpha03

21 de julho de 2021

Lançamento de androidx.appsearch:appsearch-*:1.0.0-alpha03. A versão 1.0.0-alpha03 contém estas confirmações.

Novos recursos

  • Lançamento do back-end de armazenamento na plataforma para possibilitar que os clientes usem a API AppSearch com o novo serviço android.app.appsearch.AppSearchManager, lançado no Android S. Para mais detalhes, acesse o guia do desenvolvedor do AppSearch.
  • Suporte do processador de anotações a AutoValue.
  • Remoção do limite de tamanho máximo da propriedade de string única.
  • Novo formato de armazenamento para reduzir a latência de inicialização.
  • Migração única de dados internos do formato antigo de armazenamento para o novo.

Correções de bugs

  • Aplicação correta do limite máximo de documentos ao inserir novos documentos.
  • Correção da falha durante a criação do AppSearchSession.
  • Correção de bugs no SetSchema que não detectavam alguns casos de incompatibilidade com versões anteriores e incompatibilidade de índice.

Versão 1.0.0-alpha02

30 de junho de 2021

Lançamento de androidx.appsearch:appsearch:1.0.0-alpha02, androidx.appsearch:appsearch-compiler:1.0.0-alpha02 e androidx.appsearch:appsearch-local-storage:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estas confirmações.

Novos recursos

  • Compatibilidade total com os idiomas chinês/japonês/coreano/tailandês.
  • O tamanho de androidx.appsearch:appsearch-local-storage foi reduzido.
  • O limite de tamanho máximo de propriedades repetidas foi removido.
  • A reutilização de classes builder agora é permitida.
  • Melhorias no método toString() de determinados objetos para facilitar a depuração.
  • Melhorias na documentação do Javadoc.

Mudanças na API

  • SearchResult#getMatches foi renomeado como SearchResult#getMatchInfos.
  • @Document.Int64Property foi renomeado como @Document.LongProperty.

Correções de bugs

  • Melhorias e correções no cálculo de snippets de resultado.
  • Correções de bugs na inicialização de AppSearchSession.

Versão 1.0.0-alpha01

5 de maio de 2021

Lançamento de androidx.appsearch:appsearch:1.0.0-alpha01, androidx.appsearch:appsearch-compiler:1.0.0-alpha01 e androidx.appsearch:appsearch-local-storage:1.0.0-alpha01. A versão 1.0.0-alpha01 contém estas confirmações.

Novos recursos

A AppSearch é uma biblioteca de pesquisa para gerenciar dados estruturados armazenados localmente, com APIs para indexar e recuperar dados usando a pesquisa de texto completo. Use-a para criar recursos personalizados de pesquisa no app para os usuários. Essa versão inicial é 1.0.0-alpha01.