AppSearch

AppSearch est une bibliothèque de recherche intégrée à l'appareil qui permet de gérer les données structurées stockées localement, avec des API permettant d'indexer et de récupérer les données à l'aide de la recherche en texte intégral. Avec AppSearch, créez des fonctionnalités de recherche in-app personnalisées pour vos utilisateurs.
Dernière mise à jour Version stable Version finale Version bêta Version alpha
2 juillet 2025 1.1.0 - - -

Déclarer des dépendances

Pour ajouter une dépendance sur AppSearch, vous devez ajouter le dépôt Google Maven à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.

Ajoutez les dépendances des artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou module :

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

}

Pour en savoir plus sur les dépendances, consultez la page Ajouter des dépendances de compilation.

Commentaires

Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.

Signaler un nouveau problème

Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.

Version 1.1

Version 1.1.0

2 juillet 2025

Publication d'androidx.appsearch:appsearch-*:1.1.0. La version 1.1.0 contient ces commits.

Version 1.1.0-rc01

20 mai 2025

Publication d'androidx.appsearch:appsearch-*:1.1.0-rc01. La version 1.1.0-rc01 contient ces commits.

Nouvelles fonctionnalités

  • Le module AppSearch passe en version RC.
  • Ajout d'une nouvelle API expérimentale pour cumuler les actions de la méthode PutDocumentsRequest#addTakenAction (I7b726)
  • Ajout de SearchResult#TextMatchInfo et SearchResult#EmbeddingMatchInfo ; restructuration de SearchResult#MatchInfo pour fournir des informations sur les correspondances d'intégrations (I8f78d)
  • Présentation des fonctions de classement pour la manipulation de listes (Ifa4ab)

Modifications apportées à l'API

  • Prise en charge du processeur d'annotations AppSearch pour la propriété de gestion des blobs. (I9520b)
  • Mettez à jour le processeur d'annotations AppSearch pour prendre en charge la quantification. (Ie0c85)
  • Ajout d'une méthode getFeatures() statique à PlatformStorage et LocalStorage (I5a206)

Correction de bugs

  • Cette bibliothèque utilise désormais les annotations de nullité JSpecify, qui sont de type "type-use". Les développeurs Kotlin doivent utiliser les arguments de compilateur suivants pour garantir une utilisation correcte : -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (I91f42, b/326456246).

Version 1.1.0-beta01

15 janvier 2025

Publication d'androidx.appsearch:appsearch-*:1.1.0-beta01. La version 1.1.0-beta01 contient ces commits.

Nouvelles fonctionnalités

  • Le module AppSearch passe en version bêta.

Modifications apportées à l'API

  • Désactivation de l'API de propagation de suppression AppSearch expérimentale en raison de problèmes de stabilité. (Iea386)
  • Créez l'API GlobalSearchApplicationInfo, une méthode expérimentale et facultative permettant aux producteurs et aux consommateurs d'indiquer leur intérêt pour certains types. (I116fd)
  • Modifications mineures apportées aux API AST (outil de requête) expérimentales (Ibd852)

Correction de bugs

  • Cette bibliothèque utilise désormais les annotations de nullité JSpecify, qui sont de type "type-use". Les développeurs Kotlin doivent utiliser l'argument de compilateur suivant pour garantir une utilisation correcte : -Xjspecify-annotations=strict (il s'agit de la valeur par défaut à partir de la version 2.1.0 du compilateur Kotlin). (Ic2976, b/326456246)
  • Ajout de l'autorisation requise à searchPersonCorpus (I4431d)

Version 1.1.0-alpha07

11 décembre 2024

Publication d'androidx.appsearch:appsearch-*:1.1.0-alpha07. La version 1.1.0-alpha07 contient ces commits.

Nouvelles fonctionnalités

  • Ajoutez l'annotation ExperimentalAppSearchApi aux nouvelles surfaces d'API qui ne sont pas encore stabilisées. (Ib09f4)
  • Prise en charge du stockage et du partage efficaces des données de blob binaires via AppSearchSession#openBlobForWriteAsync et les méthodes associées
  • Prise en charge du filtrage des résultats de requête par expression de score via la fonction matchScoreExpression (Id525a)
  • Prise en charge de la propagation de la suppression du document parent aux documents enfants. (Ia032d)
  • Prise en charge de l'API de quantification d'embedding pour améliorer les performances d'embedding avec une légère perte de qualité. (Id8a07)
  • Prise en charge de la restriction des recherches à certains documents à l'aide de l'API addFilterDocumentIds dans SearchSpec. (I7c6f1)

Modifications apportées à l'API

  • Déplacez les informations sur le type de parent de GenericDocument vers SearchResult. (I34a1d)
  • Prise en charge de nouveaux types d'actions dans l'API TakenAction, y compris DismissAction et ImpressionAction. (I0c6c7)
  • Ajout du nouveau schéma intégré AppSearch WebPage. (I28127)

Version 1.1.0-alpha06

16 octobre 2024

Publication d'androidx.appsearch:appsearch-*:1.1.0-alpha06. La version 1.1.0-alpha06 contient ces commits.

Modifications apportées à l'API

  • Ajout d'un nœud représentant la fonction de requête PropertyDefined. (I1aeaf)
  • Ajoutez des nœuds pour représenter la recherche numérique et la restriction de propriété. (I963a9)
  • Ajoutez un nœud représentant la fonction de requête GetSearchStringParameter. (I4f99b)
  • Ajoutez un nœud représentant la fonction de requête HasProperty. (I9c1c5)
  • Ajout d'une interface pour implémenter des fonctions dans AST. (I9d42e)
  • Ajoutez les opérateurs AND et OR. (Iaa442)
  • Ajoutez NegationNode pour représenter la négation logique des requêtes dans l'AST. (Ia855a)
  • Ajoutez l'interface Node à AppSearch pour définir les nœuds. (If42fb)
  • Ajout d'une annotation d'API expérimentale pour AppSearch. (I3e57c)

Correction de bugs

  • Ajoutez TextNodes pour les conditions de conservation. (Iefd02)

Correctif de sécurité

  • Suite à cette modification, androidx est compilé avec protobuf 4.28.2 afin de résoudre CVE-2024-7254. Mettez à niveau votre dépendance sur androidx.appsearch:appsearch-external-protobuf vers la dernière version 1.1.0-alpha06 pour résoudre le risque de faille.

Version 1.1.0-alpha05

4 septembre 2024

Publication d'androidx.appsearch:appsearch-*:1.1.0-alpha05. La version 1.1.0-alpha05 contient ces commits.

Modifications apportées à l'API

  • Rend obsolètes les setEmbeddingSearchEnabled et getEmbeddingSearchEnabled inutiles. Supprime setListFilterTokenizeFunctionEnabled et getListFilterTokenizeFunctionEnabled. Suppression de la fonction de requête "tokenize". Remplacé par la fonction de requête getSearchStringParameter et la fonction addSearchStringParameter. (I09f5a)
  • Alarm#getComputingDevice a été renommé getOriginatingDevice. (I63121)

Version 1.1.0-alpha04

7 août 2024

Publication d'androidx.appsearch:appsearch-*:1.1.0-alpha04. La version 1.1.0-alpha04 contient ces commits.

Nouvelles fonctionnalités

  • Prise en charge de la nouvelle implémentation PlayServicesStorage, qui permet d'utiliser AppSearch sur des appareils plus anciens sans entraîner le coût important de la taille de l'APK de LocalStorage. Cette implémentation du stockage fonctionne en stockant les données de l'application dans l'application Services Play.
  • Prise en charge des nouvelles API sur les appareils équipés d'Android 15.
  • La recherche dans la base de données est possible par vecteurs d'embedding, ce qui permet une correspondance approximative. (I2b41b)
  • Prise en charge des types parents et du polymorphisme dans le modèle de schéma AppSearch. (I06118)
  • Prise en charge de l'API TakenAction, qui permet aux applications de signaler les résultats sur lesquels les utilisateurs ont cliqué ou qu'ils ont abandonnés, afin d'améliorer la qualité des recherches ultérieures. (I54091)
  • Prise en charge des classes avec des builders dans le processeur d'annotations en introduisant la nouvelle annotation @Document.BuilderProducer. (Iec30a)
  • Permet de contrôler plus précisément les propriétés d'un document imbriqué qui sont indexées. (Iec30a)
  • Prise en charge du filtrage des recherches sur certaines propriétés de document. (Ib2659)
  • Prise en charge de paramètres de visibilité plus précis en autorisant les opérateurs OR et AND pour les paramètres de visibilité. (I0274b)
  • Prise en charge de l'octroi de la visibilité des données à toutes les applications qui peuvent voir l'existence de l'application propriétaire (visibilité publique). (I992e4)
  • Prise en charge de la récupération des résultats pour lesquels une propriété spécifique est renseignée. (I7d94f)
  • Prise en charge de la récupération des contacts professionnels dans le profil personnel. (Idd587)

Modifications apportées à l'API

  • Ajoutez les paramètres d'annotation indexableNestedPropertiesList et inheritIndexableNestedPropertiesFromSuperclass à l'annotation Document.DocumentProperty d'AppSearch pour permettre l'indexation de chemins de propriété imbriqués spécifiques. (Iec30a)
  • Ajout de la prise en charge du constructeur de compilateur pour créer des instances de compilateur dans le processeur d'annotation AppSearch (I265c9)
  • Mise à jour du processeur d'annotations AppSearch pour permettre la définition de types parents pour le polymorphisme (I06118)
  • Ajout de la méthode GetSchemaRequest pour effacer les paramètres de visibilité (I38379)
  • Prise en charge de addParentType dans AppSearch pour le polymorphisme (Ida14a)
  • Ajout d'API pour des expressions de classement supplémentaires (I5d9f4)
  • Ajout de l'API SearchAction (I54091)
  • Ajout d'un champ de description pour les types AppSearch (I84762)
  • Intégrer les API de requête et de classement de recherche d'intégration à AppSearch (I0f6c3)
  • Suppression de getDeletionPropagation (I21192)

Version 1.1.0-alpha03

24 mai 2023

Publication d'androidx.appsearch:appsearch-*:1.1.0-alpha03. Liste des commits de la version 1.1.0-alpha03

Nouvelles fonctionnalités

  • Prise en charge d'une API de requête avancée, d'une API de scoring avancé et de la recherche numérique. (I02d48)
  • Ajoute l'API LocalStorage.createGlobalSearchSession pour effectuer des recherches dans toutes les bases de données du stockage local d'une même application. (Id3c89)
  • Ajout d'une API pour joindre des documents par ID (Iaecfa)
  • Prise en charge des pondérations de propriétés pour indiquer que certaines propriétés sont plus importantes lors de l'utilisation de RANKING_STRATEGY_RELEVANCE_SCORING. (I069b9)
  • Ajoutez Person et ContactPoint pour interroger le corpus Person dans AppSearch. (Ia58f9)
  • Ajout du nouveau type de document ImageObject, basé sur http://schema.org/ImageObject. (I6a0c0)
  • Ajoutez un tokenizer VERBATIM qui permet d'ajouter des propriétés sans interprétation par AppSearch. (I47bc0)
  • Ajout de RFC822_TOKENIZATION en tant que type de tokenizer, ce qui permet de tokeniser les adresses e-mail. (I8a390)
  • Activez la recherche globale dans la vue Débogage. (I51fb2)

Modifications apportées à l'API

  • Suppression des méthodes qui renvoient ListenableFuture et qui n'ont pas de suffixe "Async". (I0515f)
  • Ajout de la possibilité de configurer des projections par une classe Document. (I94576)
  • Ajout de champs de Thing à Alarm, AlarmInstance, Timer, Stopwatch, StopwatchLap, ContactPoint et Person (Id876c)

Correction de bugs

  • Prise en charge complète des fonctionnalités d'Android 13 dans appsearch-platform-storage (Ia8e61)
  • Résolution des problèmes liés au remplacement des noms de schémas et des champs privés lors de l'utilisation de l'héritage.

Version 1.1.0-alpha02

24 août 2022

Publication de androidx.appsearch:appsearch-*:1.1.0-alpha02. Liste des commits de la version 1.1.0-alpha02

Nouvelles fonctionnalités

  • Accélération du processus Optimize à l'aide du compactage d'index au lieu de recréer l'index à partir de zéro.
  • Remplacement de la balise de journalisation native "icing" par "AppSearchIcing", journalisation des messages INFO par défaut.

Modifications apportées à l'API

  • Ajout d'un nouvel objet PropertyPath pour utiliser les chemins, ainsi que de nouvelles méthodes addProjection pour accepter PropertyPath. (I45588)
  • Ajout de builtin:Thing aux types AppSearch intégrés. (I55427)
  • Les noms de propriété vides sont évités plus tôt dans GenericDocument : auparavant, ils étaient bloqués au moment de l'indexation. Désormais, ils le sont pendant la phase GenericDocument.Builder.build(). (I9e780).

Corrections de bugs

  • Suppression de la mise en forme superflue des chaînes pour améliorer les performances d'attribution de scores pour la pertinence.
  • Pagination plus efficace en cas de documents illisibles ou supprimés.
  • Implémentation de la récupération de mémoire pour les requêtes abandonnées.
  • Résolution de la prise en charge de l'indexation imbriquée pour les documents. Auparavant, la propriété indexNestedProperties était ignorée. (Iae9a6)

Contribution externe

  • Shea Smith : résolution de la prise en charge de l'indexation imbriquée pour les documents. (Iae9a6)

Version 1.1.0-alpha01

15 juin 2022

Publication de androidx.appsearch:appsearch-*:1.1.0-alpha01. La version 1.1.0-alpha01 a été développée dans une branche de version préliminaire privée et ne comporte aucun commit public.

Modifications apportées à l'API

  • Toutes les méthodes renvoyant ListenableFuture ont été renommées pour inclure le suffixe "Async". Par exemple, getSchema a été renommé getSchemaAsync. Les versions précédentes ont été abandonnées et seront supprimées dans une prochaine version.

Nouvelles fonctionnalités

  • Première version d'appsearch-builtin-types. Ce projet contient des types intégrés basés sur schema.org, que les clients peuvent trouver pratiques à utiliser au lieu d'avoir à définir leurs propres types pour les objets communs. D'autres types intégrés seront ajoutés dans les prochaines versions.
  • Possibilité d'utiliser ShortcutAdapter pour convertir un document AppSearch en ShortcutInfoCompat. Les clients peuvent ainsi partager des documents AppSearch avec Google à l'aide de la bibliothèque core-google-shortcuts.
  • Possibilité d'utiliser l'héritage avec les classes @Document. Les champs ne peuvent pas être remplacés ni modifiés, mais vous pouvez en ajouter en étendant une classe annotée avec @Document.
  • Nouvelle API Observer qui permet aux clients de demander à recevoir des notifications en cas de modification des types auxquels ils ont accès ou en cas d'ajout, de modification ou de suppression de documents de ces types. IMPORTANT : l'implémentation actuelle n'envoie des notifications que lorsque votre application est en cours d'exécution. Il n'existe actuellement aucun moyen d'inspecter les modifications qui se sont produites lorsque votre application était à l'arrêt. Par conséquent, ne vous attendez pas à ce que cette API fournisse des informations exhaustives.
  • API d'analyseur de propriétés, qui vous permet de gérer et d'inspecter entièrement les chemins de propriété renvoyés par MatchInfo#getPropertyPath.
  • API getById et getSchema globales permettant de récupérer des documents et des schémas à partir d'autres applications qui vous ont donné l'accès en lecture.
  • Possibilité de récupérer les informations de visibilité dans getSchema pour les données auxquelles vous avez accès.
  • Possibilité d'accorder un accès en lecture aux applications disposant d'une autorisation Android spécifique (limitée à un ensemble restreint d'autorisations figurant sur la liste d'autorisation).
  • Prise en charge des getters de style isFoo() pour les champs booléens dans le processeur d'annotations, en plus du style hasFoo() pris en charge précédent.
  • Prise en charge des nouvelles fonctionnalités protégées par @RequiresFeature. Utilisation d'AppSearchSession#getFeatures pour déterminer ce que le backend actuel prend en charge.
  • Suppression de la limite d'environ 13 000 jetons au niveau des documents individuels.
  • Possibilité de mise en correspondance au niveau des caractères non ASCII et non alphanumériques, tels que les emoji.

Corrections de bugs

  • Correction d'un bug qui entraînait l'échec de SetSchema lors du remplacement d'un type incompatible imbriqué.
  • Corrections visant à assurer la compatibilité totale avec les classes annotées @AutoValue utilisées comme classes @Document AppSearch.
  • Corrections de certains plantages liés à des listes répétées de classes de document et d'autres problèmes.
  • Correction d'un bug qui provoquait un plantage de la recherche de préfixe dans certaines circonstances.
  • Correction d'un bug mineur dans GetStorageInfo qui renvoyait des valeurs incorrectes en cas d'échec des E/S.
  • Résolution des problèmes BUSADDERR lors de la lecture d'un document.
  • Résolution du problème de corruption des journaux logcat en raison de l'impression d'une empreinte digitale non mise en forme.
  • Correction d'une exception NPE causée par des échecs d'E/S.
  • Résolution du problème de fuite de mémoire dans GetSchemaType, Get, Delete, DeleteByNamespace et DeleteBySchemaType.

Version 1.0.0

Version 1.0.0-alpha04

3 novembre 2021

Publication de androidx.appsearch:appsearch-*:1.0.0-alpha04. Liste des commits de la version 1.0.0-alpha04

Nouvelles fonctionnalités

  • Dépendance Guava ListenableFuture automatiquement ajoutée comme dépendance d'API.

Modifications apportées à l'API

  • Ajout de SearchResult#getSubmatchRange() et SearchResult#getSubmatch() pour fournir plus d'informations sur chaque correspondance. (I2fef6)
  • Clarification de la documentation sur la génération d'empreintes digitales PackageIdentifier pour le partage de données par nom de package et certificat.

Corrections de bugs

  • Résolution du problème de plantage si l'utilisateur tente de récupérer des pages de résultats après la fin de l'ensemble de résultats.
  • Résolution du problème d'interrogation de tous les espaces de noms si seuls des espaces de noms non valides étaient fournis en tant que filtres de requête.
  • Résolution du problème lié à la suppression de tous les espaces de noms si seuls des espaces de noms non valides étaient fournis en tant que filtres "remove-by-query".
  • Résolution du problème d'arrêt de l'indexation des données des documents très volumineux après un certain stade.
  • Résolution d'un problème où la tokenisation abandonnait les segments contenant des caractères numériques non ASCII.
  • Ajout d'une vérification des tentatives d'initialisation infructueuses consécutives pour sortir d'un état potentiellement défectueux qui empêche une initialisation réussie.

Version 1.0.0-alpha03

21 juillet 2021

Publication de androidx.appsearch:appsearch-*:1.0.0-alpha03. Liste des commits de la version 1.0.0-alpha03

Nouvelles fonctionnalités

  • Lancement du backend de stockage de la plate-forme pour permettre aux clients d'utiliser l'API AppSearch avec le nouveau service android.app.appsearch.AppSearchManager lancé sur Android S. Pour en savoir plus, consultez le guide du développeur AppSearch.
  • Prise en charge d'AutoValue avec le processeur d'annotations.
  • Suppression de la limite de taille maximale d'une propriété à chaîne unique.
  • Nouveau format de stockage permettant de réduire la latence d'initialisation.
  • Migration interne ponctuelle des données de l'ancien format de stockage vers le nouveau.

Corrections de bugs

  • Mise en application correcte de la limite maximale de documents lors l'ajout de nouveaux documents.
  • Résolution du problème de plantage qui survenait lors de la création d'une session AppSearch.
  • Correction de bugs dans SetSchema qui ne détectaient pas certains cas d'incompatibilité ascendante et d'incompatibilité de l'index.

Version 1.0.0-alpha02

30 juin 2021

Publication d'androidx.appsearch:appsearch:1.0.0-alpha02, androidx.appsearch:appsearch-compiler:1.0.0-alpha02 et androidx.appsearch:appsearch-local-storage:1.0.0-alpha02. Liste des commits de la version 1.0.0-alpha02

Nouvelles fonctionnalités

  • Compatibilité totale avec le chinois, le coréen, le japonais et le thaï.
  • Réduction de la taille d'androidx.appsearch:appsearch-local-storage.
  • Suppression de la limite de taille maximale des propriétés répétées.
  • Possibilité de réutiliser les classes de compilateur.
  • Amélioration de toString() pour certains objets afin de faciliter le débogage.
  • Améliorations apportées à la documentation Javadoc.

Modifications apportées à l'API

  • Remplacement du nom SearchResult#getMatches par SearchResult#getMatchInfos.
  • Remplacement du nom @Document.Int64Property par @Document.LongProperty.

Corrections de bugs

  • Améliorations et corrections du calcul des extraits de résultats.
  • Corrections de bugs liés à l'initialisation de la session AppSearch.

Version 1.0.0-alpha01

5 mai 2021

Publication d'androidx.appsearch:appsearch:1.0.0-alpha01, androidx.appsearch:appsearch-compiler:1.0.0-alpha01 et androidx.appsearch:appsearch-local-storage:1.0.0-alpha01. Liste des commits de la version 1.0.0-alpha01

Nouvelles fonctionnalités

AppSearch est une bibliothèque de recherche qui permet de gérer les données structurées stockées localement, avec des API permettant d'indexer et de récupérer les données à l'aide de la recherche en texte intégral. Avec AppSearch, créez des fonctionnalités de recherche in-app personnalisées pour vos utilisateurs. La version initiale est 1.0.0-alpha01.