Ricerca app

AppSearch è una libreria di ricerca on-device per la gestione dei 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 Versione alpha
11 dicembre 2024 - - - 1.1.0-alpha07

Dichiarazione delle dipendenze

Per aggiungere una dipendenza da AppSearch, devi aggiungere il repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il repository Maven di Google.

Aggiungi le dipendenze per gli elementi necessari nel file build.gradle per la tua app o il tuo modulo:

Alla moda

dependencies {
    def appsearch_version = "1.1.0-alpha05"

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

Kotlin

dependencies {
    val appsearch_version = "1.1.0-alpha05"

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

Per ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze di compilazione.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa raccolta. 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 del Monitoraggio problemi.

Versione 1.1

Versione 1.1.0-alpha07

11 dicembre 2024

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

Nuove funzionalità

  • Aggiungi l'annotazione ExperimentalAppSearchApi alle nuove API che non sono ancora stabili. (Ib09f4)
  • Supporto per l'archiviazione e la condivisione efficienti dei dati dei blob binari tramite AppSearchSession#openBlobForWriteAsync e metodi correlati
  • Supporto per il filtraggio dei risultati di 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 dell'embedding per aumentare le prestazioni dell'embedding con una lieve perdita di qualità. (Id8a07)
  • Supporto per la limitazione delle ricerche a determinati documenti utilizzando l'API addFilterDocumentIds in SearchSpec. (I7c6f1)

Modifiche all'API

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

Versione 1.1.0-alpha06

16 ottobre 2024

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

Modifiche all'API

  • È stato aggiunto un nodo che rappresenta la funzione di query PropertyDefined. (I1aeaf)
  • Aggiungi nodi per rappresentare la ricerca numerica e la limitazione della proprietà. (I963a9)
  • Aggiungi il nodo che rappresenta la funzione di query GetSearchStringParameter. (I4f99b)
  • Aggiungi il nodo che rappresenta la funzione di query HasProperty. (I9c1c5)
  • Interfaccia aggiunta per l'implementazione di funzioni in AST. (I9d42e)
  • Aggiungi gli operatori AND e OR. (Iaa442)
  • Aggiungi NegationNode per rappresentare la negazione logica delle query nell'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 blocco. (Iefd02)

Correzione di sicurezza

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

Versione 1.1.0-alpha05

4 settembre 2024

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

Modifiche all'API

  • Ritirata la funzionalità setEmbeddingSearchEnabled e getEmbeddingSearchEnabled non necessaria. 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 rilasciato. La versione 1.1.0-alpha04 contiene questi commit.

Nuove funzionalità

  • Supporto per la nuova implementazione di PlayServicesStorage, che consente di utilizzare AppSearch sui dispositivi meno recenti senza incorrere nel costo significativo delle dimensioni dell'apk di LocalStorage. Questa implementazione dello spazio di archiviazione funziona archiviando i dati dell'app all'interno dell'app Play Services.
  • Supporto di nuove API sui dispositivi con Android 15.
  • Supporta la ricerca nel database tramite embedding di vettori, consentendo la corrispondenza approssimativa. (I2b41b)
  • Supporta i tipi di elementi principali 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à durante le ricerche successive. (I54091)
  • Supporta i classi con i builder nell'elaboratore di annotazioni introducendo la nuova annotazione @Document.BuilderProducer. (Iec30a)
  • Supporta un controllo più granulare sulle proprietà di un documento nidificato da indicizzare. (Iec30a)
  • Supporto per filtrare le ricerche in base a determinate proprietà dei documenti. (Ib2659)
  • Supporta impostazioni di visibilità più granulari consentendo l'uso di OR e AND. (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 con dati compilati in una determinata proprietà. (I7d94f)
  • Supporto per il recupero dei contatti aziendali nel profilo personale. (Idd587)

Modifiche all'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 del generatore per creare istanze del generatore nell'elaboratore di annotazioni AppSearch (I265c9)
  • Aggiornamento del processore di annotazioni AppSearch per supportare l'impostazione dei tipi di elementi 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)
  • Aggiungere API per espressioni di ranking aggiuntive (I5d9f4)
  • Aggiungere l'API SearchAction (I54091)
  • Aggiunge il campo Descrizione per i tipi AppSearch (I84762)
  • Esegui l'onboarding delle API di query di ricerca e ranking incorporate in AppSearch (I0f6c3)
  • Rimuove getDeletionPropagation (I21192)

Versione 1.1.0-alpha03

24 maggio 2023

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

Nuove funzionalità

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

Modifiche all'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)
  • Risolvere i problemi relativi all'override dei nomi degli schemi e dei campi privati quando si utilizza l'eredità.

Versione 1.1.0-alpha02

24 agosto 2022

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

Nuove funzionalità

  • Accelerare il processo di ottimizzazione utilizzando la compattazione dell'indice anziché ricostruire l'indice da zero
  • È stato modificato il tag di registrazione nativo da "icing" a "AppSearchIcing", vengono registrati i messaggi INFO per impostazione predefinita

Modifiche all'API

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

Correzioni di bug

  • È stata rimossa la formattazione delle stringhe non necessaria per migliorare il rendimento del punteggio RELEVANZA
  • Paginazione più efficiente in caso di documenti illeggibili o eliminati
  • È stata implementata la garbage collection per le query abbandonate
  • Correzione del supporto dell'indicizzazione nidificata per Documenti. In precedenza, indexNestedProperties veniva ignorato. (Iae9a6)

Contributo esterno

  • Shea Smith: correzione del supporto dell'indicizzazione nidificata per Documenti. (Iae9a6)

Versione 1.1.0-alpha01

15 giugno 2022

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

Modifiche all'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 clienti potrebbero trovare comodi da utilizzare anziché definire i propri tipi per gli oggetti comuni. Altri tipi verranno aggiunti nelle release future.
  • Possibilità di utilizzare ShortcutAdapter per convertire un documento AppSearch in un ShortcutInfoCompat. In questo modo, i client hanno un modo per 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 i documenti di questi tipi vengono aggiunti, modificati o rimossi. IMPORTANTE: l'implementazione attuale invia notifiche solo quando l'app è in esecuzione. Al momento non è possibile ispezionare le modifiche che si sono verificate mentre l'app era in pausa. Di conseguenza, non dovresti fare affidamento sulla completezza di questa API.
  • API di analisi delle proprietà che consente di gestire e ispezionare completamente i percorsi delle proprietà restituiti da MatchInfo#getPropertyPath.
  • API getById e getSchema globali per il recupero di documenti e schemi da altre app che ti hanno concesso la visibilità.
  • Possibilità di recuperare informazioni sulla visibilità in getSchema per i dati a cui hai accesso
  • Possibilità di concedere la visibilità alle app che dispongono di una determinata autorizzazione Android (limitata a un ristretto insieme di autorizzazioni consentite)
  • Supporto dei getter in stile isFoo() per i campi booleani nell'elaboratore di annotazioni, oltre allo stile hasFoo() supportato in precedenza
  • Supporto per le 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
  • Consentire la corrispondenza su caratteri non ASCII e non alfanumerici, ad esempio emoji

Correzioni di bug

  • È stato corretto un bug che causava un errore SetSchema durante l'override di un tipo incompatibile nidificato.
  • Correzioni per supportare completamente le classi con annotazioni @AutoValue utilizzate come classi @Document di AppSearch
  • Correzioni per alcuni arresti anomali relativi a elenchi ripetuti di classi di documenti e altri problemi
  • Correzione di un bug che causava l'arresto anomalo della ricerca dei prefissi in determinate circostanze
  • È stato corretto un piccolo bug in GetStorageInfo che restituiva valori errati in caso di errori di I/O
  • Risolvere i problemi BUSADDERR durante la lettura di un documento
  • Correzione della corruzione di logcat causata dalla stampa di un'impronta non formattata
  • Correggere l'errore 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 rilasciato. La versione 1.0.0-alpha04 contiene questi commit.

Nuove funzionalità

  • dipendenza Guava ListenableFuture importata automaticamente come dipendenza dell'API

Modifiche all'API

  • Aggiungi SearchResult#getSubmatchRange() e SearchResult#getSubmatch() per fornire ulteriori informazioni su ogni corrispondenza. (I2fef6)
  • Chiarire la documentazione su come generare le impronte di PackageIdentifier per la condivisione dei dati in base a packagename+certificate

Correzioni di bug

  • Correggere l'arresto anomalo se l'utente tenta di recuperare le pagine dei risultati dopo la fine dell'insieme di risultati
  • È stato risolto il problema relativo alla query di tutti gli spazi dei nomi se come filtri di query sono stati forniti solo spazi dei nomi non validi
  • È stato risolto il problema relativo alla rimozione di tutti gli spazi dei nomi se venivano forniti solo spazi dei nomi non validi come filtri di rimozione tramite query
  • È stato risolto il problema per cui i dati dei documenti non venivano più indicizzati dopo un determinato 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 aiutarti a 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 rilasciato. La versione 1.0.0-alpha03 contiene questi commit.

Nuove funzionalità

  • Uscita del backend di archiviazione della piattaforma per consentire ai client di utilizzare l'API AppSearch con il nuovo servizio android.app.appsearch.AppSearchManager lanciato 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 al nuovo formato di archiviazione

Correzioni di bug

  • Imposta correttamente il limite massimo di documenti quando vengono inseriti nuovi documenti
  • Arresto anomalo corretto durante la creazione di AppSearchSession
  • Sono stati corretti i bug in SetSchema che non rilevavano alcuni casi di incompatibilità con le versioni precedenti e con gli indici

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

Nuove funzionalità

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

Modifiche all'API

  • SearchResult#getMatches è stato rinominato SearchResult#getMatchInfos
  • @Document.Int64Property è stato rinominato @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 vengono 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 ricerca a testo intero. Utilizzalo per creare funzionalità di ricerca in-app personalizzate per i tuoi utenti. Questa release iniziale è 1.0.0-alpha01.