AppSearch

AppSearch è una libreria di ricerca sul dispositivo per la gestione di dati strutturati archiviati localmente, con API per l'indicizzazione e il recupero dei dati utilizzando la ricerca full-text. Utilizzalo per creare funzionalità di ricerca in-app personalizzate per i tuoi utenti.
Ultimo aggiornamento Release stabile Candidato per la release Versione beta Alpha Release
2 luglio 2025 1.1.0 - - -

Dichiarazione di dipendenze

Per aggiungere una dipendenza da AppSearch, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.

Aggiungi le dipendenze per gli artefatti che ti servono nel file build.gradle per la tua app o il tuo modulo:

Alla moda

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")

}

Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze di build.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa libreria. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa libreria. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Creare un nuovo problema

Per ulteriori informazioni, consulta la documentazione di Issue Tracker.

Versione 1.1

Versione 1.1.0

2 luglio 2025

androidx.appsearch:appsearch-*:1.1.0 viene ritirata. La versione 1.1.0 contiene questi commit.

Versione 1.1.0-rc01

20 maggio 2025

androidx.appsearch:appsearch-*:1.1.0-rc01 viene ritirata. La versione 1.1.0-rc01 contiene questi commit.

Nuove funzionalità

  • Il modulo AppSearch entra in RC.
  • Aggiunge una nuova API sperimentale per accumulare azioni per il metodo PutDocumentsRequest#addTakenAction (I7b726)
  • Aggiungi SearchResult#TextMatchInfo, SearchResult#EmbeddingMatchInfo; ristruttura SearchResult#MatchInfo per fornire informazioni sulle corrispondenze per le corrispondenze degli incorporamenti (I8f78d)
  • Introduzione delle funzioni di classificazione per la manipolazione delle liste (Ifa4ab)

Modifiche alle API

  • Supporto del processore di annotazioni AppSearch per la proprietà di gestione dei blob. (I9520b)
  • Aggiorna il processore di annotazioni AppSearch per supportare la quantizzazione. (Ie0c85)
  • Aggiunge un metodo statico getFeatures() sia a PlatformStorage che a LocalStorage (I5a206)

Correzioni di bug

  • Questa libreria ora utilizza le annotazioni di nullabilità JSpecify, che sono di tipo use. Gli sviluppatori Kotlin devono utilizzare i seguenti argomenti del compilatore per garantire un utilizzo corretto: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (I91f42, b/326456246)

Versione 1.1.0-beta01

15 gennaio 2025

androidx.appsearch:appsearch-*:1.1.0-beta01 viene ritirata. La versione 1.1.0-beta01 contiene questi commit.

Nuove funzionalità

  • Il modulo AppSearch entra in versione beta.

Modifiche alle API

  • Disabilita l'API di propagazione dell'eliminazione AppSearch sperimentale a causa di problemi di stabilità. (Iea386)
  • Crea l'API GlobalSearchApplicationInfo, un modo sperimentale e facoltativo per i producer e i consumer di indicare l'interesse per determinati tipi. (I116fd)
  • Modifiche secondarie alle API AST (generatore di query) sperimentali (Ibd852)

Correzioni di bug

  • Questa libreria ora utilizza le annotazioni di nullabilità JSpecify, che sono di tipo use. Gli sviluppatori Kotlin devono utilizzare il seguente argomento del compilatore per imporre l'utilizzo corretto: -Xjspecify-annotations=strict (questo è il valore predefinito a partire dalla versione 2.1.0 del compilatore Kotlin). (Ic2976, b/326456246)
  • Aggiunge l'autorizzazione richiesta a searchPersonCorpus (I4431d)

Versione 1.1.0-alpha07

11 dicembre 2024

androidx.appsearch:appsearch-*:1.1.0-alpha07 viene ritirata. La versione 1.1.0-alpha07 contiene questi commit.

Nuove funzionalità

  • Aggiungi l'annotazione ExperimentalAppSearchApi alle nuove superfici API che non sono ancora state stabilizzate. (Ib09f4)
  • Supporto per l'archiviazione e la condivisione efficienti di dati binari di tipo BLOB tramite AppSearchSession#openBlobForWriteAsync e metodi correlati
  • Supporto del filtraggio dei risultati delle query in base all'espressione di punteggio tramite la funzione matchScoreExpression (Id525a)
  • Supporto per la propagazione dell'eliminazione dal documento principale ai documenti secondari. (Ia032d)
  • Supporto dell'API di quantizzazione degli incorporamenti per aumentare le prestazioni degli incorporamenti con una leggera perdita di qualità. (Id8a07)
  • Supporto per la limitazione delle ricerche a determinati documenti utilizzando l'API addFilterDocumentIds in SearchSpec. (I7c6f1)

Modifiche alle API

  • Sposta le informazioni sul tipo di genitore da GenericDocument a SearchResult. (I34a1d)
  • Supporto per nuovi tipi di azioni nell'API TakenAction, tra cui DismissAction e ImpressionAction. (I0c6c7)
  • È stato aggiunto un nuovo schema integrato AppSearch WebPage. (I28127)

Versione 1.1.0-alpha06

16 ottobre 2024

androidx.appsearch:appsearch-*:1.1.0-alpha06 viene ritirata. La versione 1.1.0-alpha06 contiene questi commit.

Modifiche alle API

  • È stato aggiunto un nodo che rappresenta la funzione di query PropertyDefined. (I1aeaf)
  • Aggiungi nodi per rappresentare la ricerca numerica e la limitazione delle proprietà. (I963a9)
  • Aggiungi il nodo che rappresenta la funzione di query GetSearchStringParameter. (I4f99b)
  • Aggiungi il nodo che rappresenta la funzione di query HasProperty. (I9c1c5)
  • Aggiunta un'interfaccia per l'implementazione di funzioni in AST. (I9d42e)
  • Aggiungi gli operatori AND e OR. (Iaa442)
  • Aggiungi NegationNode per rappresentare la negazione logica delle query in AST. (Ia855a)
  • Aggiungi l'interfaccia Node a AppSearch per definire i nodi. (If42fb)
  • Aggiunge un'annotazione API sperimentale per AppSearch. (I3e57c)

Correzioni di bug

  • Aggiungi TextNodes per i termini di conservazione. (Iefd02)

Correzione di sicurezza

  • A partire da questa modifica, androidx viene compilato in base a protobuf 4.28.2 per risolvere CVE-2024-7254. Esegui l'upgrade della dipendenza da androidx.appsearch:appsearch-external-protobuf all'ultima versione 1.1.0-alpha06 per risolvere il rischio di vulnerabilità.

Versione 1.1.0-alpha05

4 settembre 2024

androidx.appsearch:appsearch-*:1.1.0-alpha05 viene ritirata. La versione 1.1.0-alpha05 contiene questi commit.

Modifiche alle API

  • Depreca setEmbeddingSearchEnabled e getEmbeddingSearchEnabled non necessari. Elimina setListFilterTokenizeFunctionEnabled e getListFilterTokenizeFunctionEnabled. È stata eliminata la funzione di query "tokenize". Sostituito con la funzione di query getSearchStringParameter e la funzione addSearchStringParameter. (I09f5a)
  • Rinomina Alarm#getComputingDevice in getOriginatingDevice. (I63121)

Versione 1.1.0-alpha04

7 agosto 2024

androidx.appsearch:appsearch-*:1.1.0-alpha04 viene ritirata. La versione 1.1.0-alpha04 contiene questi commit.

Nuove funzionalità

  • Supporto della nuova implementazione PlayServicesStorage, che consente di utilizzare AppSearch su dispositivi meno recenti senza incorrere nel costo significativo delle dimensioni dell'apk di LocalStorage. Questa implementazione dell'archiviazione funziona memorizzando i dati delle app all'interno dell'app Google Play Services.
  • Supporto per nuove API sui dispositivi con Android 15.
  • Supporta la ricerca nel database in base ai vettori di embedding, consentendo la corrispondenza parziale. (I2b41b)
  • Supporta i tipi padre e il polimorfismo all'interno del modello di schema AppSearch. (I06118)
  • Supporta l'API TakenAction, che consente alle app di segnalare quando i risultati sono stati selezionati o abbandonati, per migliorare la qualità delle ricerche successive. (I54091)
  • Supporta le classi con i builder nel processore di annotazioni introducendo la nuova annotazione @Document.BuilderProducer. (Iec30a)
  • Supporta un controllo più granulare sulle proprietà di un documento nidificato che vengono indicizzate. (Iec30a)
  • Supporto per il filtraggio delle ricerche in base a determinate proprietà dei documenti. (Ib2659)
  • Supporta impostazioni di visibilità più granulari consentendo OR e AND delle impostazioni di visibilità. (I0274b)
  • Supporto per la concessione della visibilità dei dati a tutte le app che possono vedere l'esistenza dell'app proprietaria (visibilità pubblica). (I992e4)
  • Supporto per il recupero solo dei risultati in cui sono stati inseriti dati in una determinata proprietà. (I7d94f)
  • Supporto per il recupero dei contatti aziendali nel profilo personale. (Idd587)

Modifiche alle API

  • Aggiungi i parametri di annotazione indexableNestedPropertiesList e inheritIndexableNestedPropertiesFromSuperclass all'annotazione Document.DocumentProperty di AppSearch per consentire l'indicizzazione di percorsi di proprietà nidificati specifici. (Iec30a)
  • Supporta il costruttore di builder per creare istanze di builder nel processore di annotazioni AppSearch (I265c9)
  • Aggiorna il processore di annotazioni AppSearch per supportare l'impostazione dei tipi principali per il polimorfismo (I06118)
  • Aggiunta del metodo GetSchemaRequest per cancellare le impostazioni di visibilità (I38379)
  • Supporto di addParentType in AppSearch per il polimorfismo (Ida14a)
  • Aggiungi API per espressioni di ranking aggiuntive (I5d9f4)
  • Aggiungi l'API SearchAction (I54091)
  • Aggiunge il campo Descrizione per i tipi AppSearch (I84762)
  • Esegui l'onboarding delle API di ranking e query di ricerca degli incorporamenti in AppSearch (I0f6c3)
  • Rimuove getDeletionPropagation (I21192)

Versione 1.1.0-alpha03

24 maggio 2023

androidx.appsearch:appsearch-*:1.1.0-alpha03 viene ritirata. La versione 1.1.0-alpha03 contiene questi commit.

Nuove funzionalità

  • Supporto per un'API di query avanzata, un'API di classificazione avanzata e la ricerca numerica. (I02d48)
  • Aggiunge l'API LocalStorage.createGlobalSearchSession per eseguire ricerche in tutti i database all'interno dell'archivio locale di una singola app. (Id3c89)
  • È stata aggiunta un'API per unire i documenti per ID (Iaecfa)
  • Supporta i pesi delle proprietà per indicare che alcune proprietà sono più importanti quando si utilizza RANKING_STRATEGY_RELEVANCE_SCORING. (I069b9)
  • Aggiungi Persona e ContactPoint per eseguire query sul corpus Persona in AppSearch. (Ia58f9)
  • È stato aggiunto il nuovo tipo di documento ImageObject modellato su http://schema.org/ImageObject. (I6a0c0)
  • Aggiungi un tokenizer VERBATIM che consente di aggiungere proprietà senza interpretazione da parte di AppSearch. (I47bc0)
  • È stato aggiunto RFC822_TOKENIZATION come tipo di tokenizer, consentendo la tokenizzazione degli indirizzi email. (I8a390)
  • Attiva la ricerca globale nella visualizzazione di debug. (I51fb2)

Modifiche alle API

  • Sono stati rimossi i metodi che restituiscono ListenableFuture e non hanno il suffisso Async. (I0515f)
  • Aggiunge la possibilità di configurare le proiezioni in base a una classe Document. (I94576)
  • Aggiungi i campi da Thing a Alarm, AlarmInstance, Timer, Stopwatch, StopwatchLap, ContactPoint e Person (Id876c)

Correzioni di bug

  • Supporto completo delle funzionalità di Android 13 in appsearch-platform-storage (Ia8e61)
  • Risolvi i problemi relativi all'override dei nomi degli schemi e dei campi privati quando utilizzi l'ereditarietà.

Versione 1.1.0-alpha02

24 agosto 2022

androidx.appsearch:appsearch-*:1.1.0-alpha02 viene ritirata. La versione 1.1.0-alpha02 contiene questi commit.

Nuove funzionalità

  • Il processo di ottimizzazione è stato velocizzato utilizzando la compattazione dell'indice anziché la sua ricostruzione da zero
  • Tag di logging nativo modificato da "icing" a "AppSearchIcing", registra i messaggi INFO per impostazione predefinita

Modifiche alle API

  • Aggiunge un nuovo oggetto PropertyPath per lavorare con i percorsi e nuovi metodi addProjection per accettare PropertyPath. (I45588)
  • Aggiunta di builtin:Thing ai tipi integrati AppSearch (I55427)
  • Impedisci i nomi delle proprietà vuoti in GenericDocument prima: in precedenza venivano impediti al momento dell'indicizzazione, ora vengono impediti al momento di GenericDocument.Builder.build() (I9e780)

Correzioni di bug

  • Rimossa la formattazione non necessaria delle stringhe per migliorare il rendimento del punteggio di PERTINENZA
  • Impaginazione più efficiente quando si incontrano documenti illeggibili o eliminati
  • Implementata la garbage collection per le query abbandonate
  • È stato corretto il supporto dell'indicizzazione nidificata per Documenti. In precedenza, indexNestedProperties veniva ignorato. (Iae9a6)

Contributo esterno

  • Shea Smith: correggi il supporto dell'indicizzazione nidificata per Documenti. (Iae9a6)

Versione 1.1.0-alpha01

15 giugno 2022

androidx.appsearch:appsearch-*:1.1.0-alpha01 viene ritirata. La versione 1.1.0-alpha01 è stata sviluppata in un ramo di pre-release privato e non ha commit pubblici.

Modifiche alle API

  • Tutti i metodi che restituiscono ListenableFuture sono stati rinominati in modo da avere il suffisso Async. Ad esempio, getSchema è stato rinominato in getSchemaAsync. Le versioni precedenti sono state ritirate e verranno rimosse in una release futura.

Nuove funzionalità

  • Prima release di appsearch-builtin-types. Questo progetto contiene alcuni tipi integrati basati su schema.org che i client potrebbero trovare comodi da utilizzare anziché definire i propri tipi per gli oggetti comuni. Nelle release future verranno aggiunti altri tipi.
  • Possibilità di utilizzare ShortcutAdapter per convertire un documento AppSearch in un ShortcutInfoCompat. In questo modo, i client possono condividere documenti AppSearch con Google utilizzando la libreria core-google-shortcuts
  • Possibilità di utilizzare l'ereditarietà con le classi @Document. I campi non possono essere sostituiti o modificati, ma è possibile aggiungerne di nuovi estendendo una classe annotata con @Document.
  • Nuova API Observer che consente ai client di registrarsi per ricevere notifiche quando i tipi a cui hanno accesso sono stati modificati o quando vengono aggiunti, modificati o rimossi documenti di questi tipi. IMPORTANTE: l'implementazione attuale invia notifiche solo quando l'app è in esecuzione. Al momento non è possibile esaminare le modifiche apportate mentre l'app era arrestata. Di conseguenza, non dovresti fare affidamento su questa API per la completezza.
  • API Property Parser che consente di gestire e ispezionare completamente i percorsi delle proprietà restituiti da MatchInfo#getPropertyPath.
  • API getById globale e getSchema globale per recuperare documenti e schemi da altre app che ti hanno concesso la visibilità.
  • Possibilità di recuperare le informazioni sulla visibilità in getSchema per i dati a cui hai accesso
  • Possibilità di concedere visibilità alle app che dispongono di una determinata autorizzazione Android (limitata a un insieme ristretto di autorizzazioni consentite)
  • Supporto di getter in stile isFoo() per i campi booleani nel processore di annotazioni, oltre allo stile hasFoo() supportato in precedenza
  • Supporto per nuove funzionalità protette da @RequiresFeature. Utilizza AppSearchSession#getFeatures per determinare cosa supporta il backend attuale.
  • Rimuovere il limite di circa 13.000 token per i singoli documenti
  • Consente la corrispondenza con caratteri non ASCII e non alfanumerici, come le emoji

Correzioni di bug

  • È stato corretto un bug che causava l'errore SetSchema durante l'override di un tipo incompatibile nidificato.
  • Correzioni per supportare completamente le classi annotate con @AutoValue utilizzate come classi @Document di AppSearch
  • Correzioni per alcuni arresti anomali relativi a elenchi ripetuti di classi di documenti e altri problemi
  • Correzione del bug che causava l'arresto anomalo della ricerca per prefisso in determinate circostanze
  • Correzione di un bug minore in GetStorageInfo che restituiva valori errati in caso di errori di I/O
  • Risolvere i problemi relativi a BUSADDERR durante la lettura di un documento
  • Correzione del danneggiamento di logcat causato dalla stampa di un'impronta non formattata
  • Correggi NPE causato da errori di I/O
  • Correzione della perdita di memoria in GetSchemaType, Get, Delete, DeleteByNamespace e DeleteBySchemaType

Versione 1.0.0

Versione 1.0.0-alpha04

3 novembre 2021

androidx.appsearch:appsearch-*:1.0.0-alpha04 viene ritirata. La versione 1.0.0-alpha04 contiene questi commit.

Nuove funzionalità

  • La dipendenza Guava ListenableFuture viene importata automaticamente come dipendenza API

Modifiche alle API

  • Aggiungi SearchResult#getSubmatchRange() e SearchResult#getSubmatch() per fornire maggiori informazioni su ogni corrispondenza. (I2fef6)
  • Chiarire la documentazione su come generare le impronte PackageIdentifier per la condivisione dei dati in base a nome del pacchetto e certificato

Correzioni di bug

  • Correzione dell'arresto anomalo se l'utente tenta di recuperare le pagine dei risultati dopo la fine del set di risultati
  • È stato risolto il problema relativo all'esecuzione di query su tutti gli spazi dei nomi se sono stati forniti solo spazi dei nomi non validi come filtri di query
  • È stato risolto il problema relativo alla rimozione di tutti gli spazi dei nomi se sono stati forniti solo spazi dei nomi non validi come filtri remove-by-query.
  • È stato risolto il problema a causa del quale l'indicizzazione dei dati dei documenti si interrompeva dopo un certo punto per i documenti di grandi dimensioni
  • Risolto il problema per cui la tokenizzazione eliminava i segmenti con caratteri numerici non ASCII
  • Aggiungi un controllo per i tentativi di inizializzazione consecutivi non riusciti per uscire da un potenziale stato errato che impedisce l'inizializzazione.

Versione 1.0.0-alpha03

21 luglio 2021

androidx.appsearch:appsearch-*:1.0.0-alpha03 viene ritirata. La versione 1.0.0-alpha03 contiene questi commit.

Nuove funzionalità

  • Rilascio del backend di archiviazione della piattaforma per consentire ai client di utilizzare l'API AppSearch con il nuovo servizio android.app.appsearch.AppSearchManager in fase di lancio in Android S. Per maggiori dettagli, consulta la Guida per gli sviluppatori di AppSearch.
  • Supporto del processore di annotazioni per AutoValue
  • Rimozione del limite di dimensione massima della proprietà stringa singola
  • Nuovo formato di archiviazione per ridurre la latenza di inizializzazione
  • Una migrazione interna dei dati una tantum dal vecchio formato di archiviazione a quello nuovo

Correzioni di bug

  • Applica correttamente il limite massimo di documenti quando vengono inseriti nuovi documenti
  • Arresto anomalo corretto durante la creazione di AppSearchSession
  • Corretti bug in SetSchema che non rilevavano alcuni casi di incompatibilità con le versioni precedenti e incompatibilità dell'indice

Versione 1.0.0-alpha02

30 giugno 2021

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 sono rilasciati. La versione 1.0.0-alpha02 contiene questi commit.

Nuove funzionalità

  • Supporto completo delle lingue cinese, giapponese, coreana e thailandese
  • Dimensioni ridotte di androidx.appsearch:appsearch-local-storage
  • Rimozione del limite di dimensioni massimo delle proprietà ripetute
  • Consenti il riutilizzo delle classi di builder
  • Miglioramenti in toString() di determinati oggetti per semplificare il debug
  • Miglioramenti alla documentazione Javadoc

Modifiche alle API

  • SearchResult#getMatches rinominato in SearchResult#getMatchInfos
  • @Document.Int64Property rinominato in @Document.LongProperty

Correzioni di bug

  • Miglioramenti e correzioni al calcolo degli snippet dei risultati
  • Correzioni di bug nell'inizializzazione di AppSearchSession

Versione 1.0.0-alpha01

5 maggio 2021

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 sono rilasciati. La versione 1.0.0-alpha01 contiene questi commit.

Nuove funzionalità

AppSearch è una libreria di ricerca per la gestione dei dati strutturati archiviati localmente, con API per l'indicizzazione e il recupero dei dati tramite la ricerca full-text. Utilizzalo per creare funzionalità di ricerca in-app personalizzate per i tuoi utenti. Questa release iniziale è 1.0.0-alpha01.