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
24 de mayo de 2023 - - - 1.1.0-alpha03

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

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

    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-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).
  • Cuando se usa RANKING_STRATEGY_RELEVANCE_SCORING, es más importante admitir las ponderaciones de propiedades para marcar ciertas propiedades. (I069b9).
  • Se agregaron Person y ContactPoint para consultar el corpus de Person en AppSearch. (Ia58f9).
  • Se agregó un nuevo tipo de documento ImageObject modelado a partir de http://schema.org/ImageObject. (I6a0c0).
  • Agrega un tokenizador VERBATIM que permita agregar propiedades sin interpretación por parte de AppSearch. (I47bc0).
  • Se agregó RFC822_TOKENIZATION como tipo de tokenizador, lo que permite la asignación de token de direcciones de correo electrónico. (I8a390).
  • Habilitar 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 mediante una clase Document. (I94576).
  • Agrega campos de Thing a Alarm, AlarmInstance, Timer, Stopwatch, StopwatchLap, ContactPoint y Person (Id876c).

Correcciones de errores

  • Compatibilidad total con funciones de Android 13 en appsearch-platform-storage (Ia8e61).
  • Soluciona los problemas con la anulación de los nombres de esquema y los campos privados cuando se usa la herencia.

Versión 1.1.0-alpha02

24 de agosto de 2022

Lanzamiento de 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

Lanzamiento de 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.