AppSearch

AppSearch es una biblioteca de búsqueda integrada en el dispositivo para administrar datos estructurados almacenados de forma local con APIs que indexan y recuperan datos a través de la búsqueda en el texto completo. Usa esta biblioteca para ofrecer a tus usuarios búsquedas personalizadas en la app.
Actualización más reciente Versión estable Versión potencial Versión beta Versión alfa
16 de octubre de 2024 - - - 1.1.0-alpha06

Cómo declarar dependencias

Para agregar una dependencia en AppSearch, debes agregar el repositorio Maven de Google a tu proyecto. Lee el repositorio Maven de Google para obtener más información.

Agrega las dependencias de los artefactos que necesites en el archivo build.gradle de tu app o módulo:

Groovy

dependencies {
    def appsearch_version = "1.1.0-alpha06"

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

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

Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.

Comentarios

Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.

Crear un error nuevo

Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.

Versión 1.1

Versión 1.1.0-alpha06

16 de octubre de 2024

Lanzamiento de androidx.appsearch:appsearch-*:1.1.0-alpha06. La versión 1.1.0-alpha06 contiene estas confirmaciones.

Cambios en la API

  • Se agregó un nodo que representa la función de consulta PropertyDefined. (I1aeaf)
  • Agrega nodos para representar la búsqueda numérica y la restricción de propiedades. (I963a9)
  • Agrega un nodo que represente la función de consulta GetSearchStringParameter. (I4f99b).
  • Agrega un nodo que represente la función de consulta HasProperty. (I9c1c5).
  • Se agregó una interfaz para implementar funciones en AST. (I9d42e)
  • Agrega operadores Y y O. (Iaa442).
  • Agrega NegationNode para representar la negación lógica de las consultas en AST. (Ia855a).
  • Se agregó la interfaz de nodos a AppSearch para definir nodos. (If42fb).
  • Se agregó una anotación de API experimental para AppSearch. (I3e57c).

Correcciones de errores

  • Agrega TextNodes para los términos de retención. (Iefd02).

Corrección de seguridad

  • A partir de este cambio, androidx compila con protobuf 4.28.2 para abordar el CVE-2024-7254. Actualiza tu dependencia en androidx.appsearch:appsearch-external-protobuf a la versión más reciente 1.1.0-alpha06 para abordar el riesgo de vulnerabilidad.

Versión 1.1.0-alpha05

4 de septiembre de 2024

Lanzamiento de androidx.appsearch:appsearch-*:1.1.0-alpha05. La versión 1.1.0-alpha05 contiene estas confirmaciones.

Cambios en la API

  • Deja de estar disponible setEmbeddingSearchEnabled y getEmbeddingSearchEnabled innecesarios. Borra setListFilterTokenizeFunctionEnabled y getListFilterTokenizeFunctionEnabled. Se borró la función de consulta "tokenize". Se reemplazó por la función de consulta getSearchStringParameter y la función addSearchStringParameter. (I09f5a).
  • Se cambió el nombre de Alarm#getComputingDevice por getOriginatingDevice. (I63121).

Versión 1.1.0-alpha04

7 de agosto de 2024

Lanzamiento de androidx.appsearch:appsearch-*:1.1.0-alpha04. La versión 1.1.0-alpha04 contiene estas confirmaciones.

Nuevas funciones

  • Se agregó compatibilidad con la nueva implementación de PlayServicesStorage, que permite usar AppSearch en dispositivos más antiguos sin incurrir en el costo significativo del tamaño del APK de LocalStorage. Esta implementación de almacenamiento funciona almacenando los datos de la app dentro de la app de Servicios de Play.
  • Compatibilidad con APIs nuevas en dispositivos que ejecutan Android 15.
  • Admite la búsqueda en la base de datos mediante la incorporación de vectores, lo que permite la concordancia aproximada. (I2b41b).
  • Admite tipos superiores y polimorfismo dentro del modelo de esquema AppSearch. (I06118).
  • Se admite la API de TakenAction, que permite a las apps informar cuándo se hace clic o se abandonan los resultados para mejorar la calidad en búsquedas posteriores. (I54091).
  • Se agregó la nueva anotación @Document.BuilderProducer para admitir clases con compiladores en el procesador de anotaciones. (Iec30a).
  • Admite un control más detallado sobre qué propiedades de un documento anidado se indexan. (Iec30a).
  • Compatibilidad con el filtrado de búsquedas en ciertas propiedades de documentos (Ib2659).
  • Admite una configuración de visibilidad más detallada permitiendo el uso de O y Y en la configuración de visibilidad. (I0274b).
  • Compatibilidad para otorgar visibilidad de datos a todas las apps que pueden ver la existencia de la app propietaria (visibilidad pública) (I992e4)
  • Se admite la recuperación de solo los resultados que tienen datos propagados en una propiedad determinada. (I7d94f).
  • Compatibilidad para recuperar contactos empresariales en el perfil personal (Idd587).

Cambios en la API

  • Agrega los parámetros de anotación indexableNestedPropertiesList y inheritIndexableNestedPropertiesFromSuperclass a la anotación Document.DocumentProperty de AppSearch para permitir la indexación de rutas de propiedades anidadas específicas. (Iec30a).
  • Se admite el constructor de compilador para crear instancias de compilador en el procesador de anotaciones AppSearch (I265c9).
  • Se actualizó el procesador de anotaciones AppSearch para admitir la configuración de tipos superiores para el polimorfismo (I06118).
  • Se agregó el método GetSchemaRequest para borrar la configuración de visibilidad (I38379).
  • Se agregó compatibilidad con addParentType en AppSearch para el polimorfismo. (Ida14a)
  • Se agregaron APIs para expresiones de clasificación adicionales (I5d9f4).
  • Se agregó la API de SearchAction (I54091).
  • Se agregó un campo de descripción para los tipos AppSearch (I84762).
  • Se incorporaron las APIs de búsqueda de incorporación y clasificación a AppSearch (I0f6c3).
  • Se quitó getDeletionPropagation (I21192).

Versión 1.1.0-alpha03

24 de mayo de 2023

Lanzamiento de androidx.appsearch:appsearch-*:1.1.0-alpha03. La versión 1.1.0-alpha03 contiene estas confirmaciones.

Nuevas funciones

  • Compatibilidad con una API de consulta avanzada, una API de puntuación avanzada y una búsqueda numérica. (I02d48).
  • Se agregó la API de LocalStorage.createGlobalSearchSession para buscar en todas las bases de datos dentro del almacenamiento local de una sola app. (Id3c89)
  • Se agregó una API para unir documentos por ID (Iaecfa).
  • Los pesos de las propiedades de compatibilidad para marcar ciertas propiedades son más importantes cuando se usa RANKING_STRATEGY_RELEVANCE_SCORING. (I069b9).
  • Se agregó Person y ContactPoint para consultar el corpus de Person en AppSearch. (Ia58f9).
  • Se agregó un nuevo tipo de documento ImageObject basado en http://schema.org/ImageObject. (I6a0c0).
  • Agrega un tokenizador VERBATIM que permita agregar propiedades sin que AppSearch lo interprete. (I47bc0).
  • Se agregó RFC822_TOKENIZATION como un tipo de tokenizador, lo que permite la asignación de token de direcciones de correo electrónico. (I8a390).
  • Habilita la Búsqueda global en la vista de depuración. (I51fb2).

Cambios en la API

  • Se quitaron los métodos que muestran ListenableFuture y no tienen el sufijo Async. (I0515f).
  • Se agregó la capacidad de configurar proyecciones por una clase Document. (I94576).
  • Se agregaron campos de Thing a Alarm, AlarmInstance, Timer, Stopwatch, StopwatchLap, ContactPoint y Person (Id876c).

Correcciones de errores

  • Es totalmente compatible con las funciones de Android 13 en appsearch-platform-storage (Ia8e61).
  • Se corrigieron problemas con la anulación de nombres de esquemas y campos privados cuando se usa la herencia.

Versión 1.1.0-alpha02

24 de agosto de 2022

Se lanzó androidx.appsearch:appsearch-*:1.1.0-alpha02. La versión 1.1.0-alpha02 contiene estas confirmaciones.

Nuevas funciones

  • Se aceleró el proceso de Optimize, para lo que se compactó el índice en lugar de volver a compilarlo desde cero.
  • Se cambió la etiqueta de registro nativo de "icing" a "AppSearchIcing", y se registran mensajes INFO de forma predeterminada.

Cambios en la API

  • Agregamos un objeto PropertyPath nuevo para trabajar con rutas de acceso y nuevos métodos addProjection para aceptar PropertyPath. (I45588).
  • Se agregó builtin:Thing a tipos integrados AppSearch (I55427).
  • Se impiden antes los nombres de propiedades vacíos en GenericDocument. Anteriormente, se impedían en el momento de la indexación, pero ahora se impiden a la hora de GenericDocument.Builder.build() (I9e780).

Correcciones de errores

  • Se quitó el formato de string innecesario para mejorar el rendimiento de la puntuación de RELEVANCE.
  • Se optimizó la paginación cuando se detectan documentos ilegibles o borrados.
  • Se implementó la recolección de elementos no utilizados para consultas abandonadas.
  • Se corrigió la compatibilidad de indexación anidada para documentos. Anteriormente, se ignoraba indexNestedProperties (Iae9a6).

Contribución externa

  • Shea Smith: Se corrigió la compatibilidad de indexación anidada para documentos (Iae9a6).

Versión 1.1.0-alpha01

15 de junio de 2022

Se lanzó androidx.appsearch:appsearch-*:1.1.0-alpha01. La versión 1.1.0-alpha01 se desarrolló en una rama privada previa al lanzamiento y no tiene confirmaciones públicas.

Cambios en la API

  • Se cambió el nombre de todos los métodos que muestran ListenableFuture para que tengan el sufijo Async. Por ejemplo, se cambió el nombre de getSchema a getSchemaAsync. Las versiones anteriores dejaron de estar disponibles y se quitarán en una versión futura.

Nuevas funciones

  • Primer lanzamiento de appsearch-builtin-types. Este proyecto contiene algunos tipos integrados basados en schema.org que a los clientes les puede convenir usar en lugar de definir sus propios tipos para objetos comunes. Se agregarán más tipos en versiones futuras
  • Capacidad de usar ShortcutAdapter para convertir un documento AppSearch en ShortcutInfoCompat. De esta manera, los clientes pueden usar la biblioteca core-google-shortcuts para compartir documentos AppSearch con Google
  • Capacidad de usar la herencia con clases @Document. Los campos no se pueden reemplazar ni modificar, pero se pueden agregar campos nuevos sa través de la extensión una clase con una anotación @Document.
  • Nueva API de Observer que permite a los clientes registrarse para recibir notificaciones cuando los tipos a los que tienen acceso hayan cambiado o cuando se agreguen, modifiquen o quiten documentos de esos tipos. IMPORTANTE: La implementación actual solo envía notificaciones cuando se está ejecutando la app. Actualmente, no hay forma de inspeccionar los cambios que se produjeron mientras la app estaba detenida. Por lo tanto, no debes confiar en que esta API complete la implementación
  • La API de analizador de propiedades, que te permite controlar e inspeccionar por completo las rutas de acceso de propiedades que muestra MatchInfo#getPropertyPath
  • Las APIs globales getById y getSchema para recuperar documentos y esquemas de otras apps que te otorgaron visibilidad
  • Capacidad de recuperar la información de visibilidad en getSchema para los datos a los que tienes acceso
  • Capacidad de otorgar visibilidad a las apps que tienen un determinado permiso de Android (restringido a un conjunto limitado de permisos incluidos en la lista de entidades permitidas)
  • Se admiten métodos get de estilo isFoo() para campos booleanos en el procesador de anotaciones, además del estilo hasFoo() admitido previamente
  • Se admite la compatibilidad con funciones nuevas protegidas por @RequiresFeature. Se utiliza AppSearchSession#getFeatures para determinar qué admite el backend actual
  • Se quitó el límite de token de ~13,000 en documentos individuales
  • Se permiten las coincidencias con caracteres alfanuméricos que no sean de ASCII+, como emojis

Correcciones de errores

  • Se corrigió el error que ocasionaba problemas con SetSchema cuando se anulaba un tipo incompatible anidado.
  • Se realizaron correcciones para admitir por completo clases con anotación @AutoValue que se usen como clases @Document de AppSearch.
  • Se corrigieron algunas fallas relacionadas con las listas repetidas de clases de documentos y otros problemas.
  • Se corrigió el error que bloqueaba la búsqueda de prefijos en ciertas circunstancias.
  • Se corrigió un error menor en GetStorageInfo que mostraba valores incorrectos cuando se encontraban fallas de IO.
  • Se solucionaron problemas de BUSADDERR cuando se leía un documento.
  • Se corrigió la corrupción de Logcat causada por la impresión de una huella digital sin formato.
  • Se corrigió la NPE causada por fallas de IO.
  • Se corrigieron fugas de memoria en GetSchemaType, Get, Delete, DeleteByNamespace y DeleteBySchemaType.

Versión 1.0.0

Versión 1.0.0-alpha04

3 de noviembre de 2021

Lanzamiento de androidx.appsearch:appsearch-*:1.0.0-alpha04. La versión 1.0.0-alpha04 contiene estas confirmaciones.

Nuevas funciones

  • La dependencia de Guava ListenableFuture se incorporó automáticamente como una dependencia de API.

Cambios en la API

  • Se agregó SearchResult#getSubmatchRange() y SearchResult#getSubmatch() para proporcionar más información sobre cada coincidencia (I2fef6).
  • Se agregó documentación clarificatoria sobre la generación de huellas digitales de PackageIdentifier para compartir datos por packagename+certificate

Correcciones de errores

  • Se corrigió la falla si el usuario intenta recuperar páginas de resultados después del final del conjunto de resultados.
  • Se solucionó el problema con todos los espacios de nombres que se consultan si solo se proporcionaron espacios de nombres no válidos como filtros de consulta.
  • Se solucionó el problema que quitaba todos los espacios de nombres si solo se proporcionaban espacios de nombres no válidos como filtros para borrar consultas.
  • Se solucionó el problema que causaba que los datos de documentos dejaran de indexarse después de cierto punto en documentos muy grandes.
  • Se solucionó el problema por el que la asignación de token descartaba segmentos con caracteres numéricos que no eran de ASCII.
  • Se agregó una verificación en caso de intentos consecutivos de inicialización fallidos para ayudar a quitar el posible estado incorrecto que impide la inicialización exitosa.

Versión 1.0.0-alpha03

21 de julio de 2021

Lanzamiento de androidx.appsearch:appsearch-*:1.0.0-alpha03. La versión 1.0.0-alpha03 contiene estas confirmaciones.

Nuevas funciones

  • Lanzamiento del backend de almacenamiento de la plataforma para que los clientes puedan usar la API de AppSearch con el nuevo servicio android.app.appsearch.AppSearchManager, que se lanzará en Android S. Para obtener más detalles, visita la guía para desarrolladores de AppSearch.
  • Compatibilidad del procesador de anotaciones con AutoValue
  • Descarte del límite de tamaño máximo de la propiedad de string única
  • Nuevo formato de almacenamiento para reducir la latencia de inicialización
  • Migración interna de datos desde el formato de almacenamiento anterior hacia el nuevo que se hace una sola vez

Correcciones de errores

  • Se aplica correctamente el límite máximo de documentos al insertar documentos nuevos.
  • Se corrigió una falla durante la creación de AppSearchSession.
  • Se corrigieron errores en SetSchema que no detectaban algunos casos de incompatibilidad con versiones anteriores y con índices.

Versión 1.0.0-alpha02

30 de junio de 2021

Lanzamiento de androidx.appsearch:appsearch:1.0.0-alpha02, androidx.appsearch:appsearch-compiler:1.0.0-alpha02 y androidx.appsearch:appsearch-local-storage:1.0.0-alpha02. La versión 1.0.0-alpha02 contiene estas confirmaciones.

Nuevas funciones

  • Total compatibilidad con los idiomas chino, japonés, coreano y tailandés
  • Reducción del tamaño de androidx.appsearch:appsearch-local-storage
  • Eliminación del límite de tamaño máximo de las propiedades repetidas
  • Permiso para volver a utilizar las clases de compiladores
  • Mejoras de toString() de ciertos objetos para facilitar la depuración
  • Mejoras de la documentación de Javadoc

Cambios en la API

  • Se cambió el nombre de SearchResult#getMatches por SearchResult#getMatchInfos
  • Se cambió el nombre de @Document.Int64Property por @Document.LongProperty

Correcciones de errores

  • Mejoras y correcciones del cálculo de los fragmentos de resultados
  • Corrección de errores en la inicialización de AppSearchSession

Versión 1.0.0-alpha01

5 de mayo de 2021

Lanzamiento de androidx.appsearch:appsearch:1.0.0-alpha01, androidx.appsearch:appsearch-compiler:1.0.0-alpha01 y androidx.appsearch:appsearch-local-storage:1.0.0-alpha01. La versión 1.0.0-alpha01 contiene estas confirmaciones.

Nuevas funciones

AppSearch es una biblioteca de búsqueda destinada a administrar datos estructurados almacenados de forma local con APIs que indexan y recuperan datos a través de la búsqueda en el texto completo. Usa esta biblioteca para ofrecer a tus usuarios búsquedas personalizadas en la app. Esta versión inicial es 1.0.0-alpha01.