AppSearch

AppSearch — это поисковая библиотека на устройстве для управления локально хранящимися структурированными данными с API для индексации данных и извлечения данных с помощью полнотекстового поиска. Используйте ее для создания настраиваемых возможностей поиска в приложении для ваших пользователей.
Последнее обновление Стабильный релиз Кандидат на релиз Бета-релиз Альфа-релиз
20 мая 2025 г. - 1.1.0-rc01 - -

Объявление зависимостей

Чтобы добавить зависимость от AppSearch, необходимо добавить репозиторий Google Maven в свой проект. Прочитайте репозиторий Google Maven для получения дополнительной информации.

Добавьте зависимости для необходимых артефактов в файл build.gradle для вашего приложения или модуля:

классный

dependencies {
    def appsearch_version = "1.1.0-rc01"

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

Котлин

dependencies {
    val appsearch_version = "1.1.0-rc01"

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

}

Дополнительную информацию о зависимостях см. в разделе Добавление зависимостей сборки .

Обратная связь

Ваши отзывы помогают сделать Jetpack лучше. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.

Создать новый выпуск

Более подробную информацию смотрите в документации Issue Tracker .

Версия 1.1

Версия 1.1.0-rc01

20 мая 2025 г.

Выпущен androidx.appsearch:appsearch-*:1.1.0-rc01 . Версия 1.1.0-rc01 содержит эти коммиты .

Новые возможности

  • Модуль AppSearch входит в RC.
  • Добавляет новый экспериментальный API для накопления действий для метода PutDocumentsRequest#addTakenAction ( I7b726 )
  • Добавить SearchResult#TextMatchInfo , SearchResult#EmbeddingMatchInfo ; реструктурировать SearchResult#MatchInfo для предоставления информации о совпадениях для встраиваний ( I8f78d )
  • Ввести функции ранжирования для манипулирования списками ( Ifa4ab )

Изменения API

  • Поддержка процессора аннотаций AppSearch для свойства дескриптора двоичного двоичного объекта. ( I9520b )
  • Обновите процессор аннотаций AppSearch для поддержки квантования. ( Ie0c85 )
  • Добавляет статический метод getFeatures() к PlatformStorage и LocalStorage ( I5a206 )

Исправление ошибок

  • Эта библиотека теперь использует аннотации nullness JSpecify , которые являются type-use. Разработчики Kotlin должны использовать следующие аргументы компилятора для обеспечения правильного использования: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode ( I91f42 , b/326456246 )

Версия 1.1.0-beta01

15 января 2025 г.

Выпущен androidx.appsearch:appsearch-*:1.1.0-beta01 . Версия 1.1.0-beta01 содержит эти коммиты .

Новые возможности

  • Модуль AppSearch переходит в стадию бета-тестирования.

Изменения API

  • Отключить экспериментальный API распространения удаления AppSearch из-за проблем со стабильностью. ( Iea386 )
  • Создать API GlobalSearchApplicationInfo , экспериментальный и необязательный способ для производителей и потребителей указывать интерес к определенным типам. ( I116fd )
  • Незначительные изменения в экспериментальных API AST (конструктор запросов) ( Ibd852 )

Исправление ошибок

  • Эта библиотека теперь использует аннотации nullness JSpecify , которые являются type-use. Разработчики Kotlin должны использовать следующий аргумент компилятора для обеспечения правильного использования: -Xjspecify-annotations=strict (это значение по умолчанию, начиная с версии 2.1.0 компилятора Kotlin). ( Ic2976 , b/326456246 )
  • Добавляет требуемое разрешение для searchPersonCorpus ( I4431d )

Версия 1.1.0-альфа07

11 декабря 2024 г.

Выпущен androidx.appsearch:appsearch-*:1.1.0-alpha07 . Версия 1.1.0-alpha07 содержит эти коммиты .

Новые возможности

  • Добавьте аннотацию ExperimentalAppSearchApi к новым поверхностям API, которые еще не стабилизировались. ( Ib09f4 )
  • Поддержка эффективного хранения и совместного использования двоичных данных BLOB-объектов с помощью AppSearchSession#openBlobForWriteAsync и связанных методов
  • Поддержка фильтрации результатов запроса путем оценки выражения с помощью функции matchScoreExpression ( Id525a )
  • Поддержка распространения удаления из родительского документа на дочерние документы. ( Ia032d )
  • Поддержка API квантования встраивания для повышения производительности встраивания с небольшой потерей качества. ( Id8a07 )
  • Поддержка ограничения поиска определенными документами с помощью API addFilterDocumentIds в SearchSpec . ( I7c6f1 )

Изменения API

  • Переместить информацию о родительском типе из GenericDocument в SearchResult . ( I34a1d )
  • Поддержка новых типов действий в API TakenAction , включая DismissAction и ImpressionAction . ( I0c6c7 )
  • Добавлена ​​новая встроенная схема AppSearch WebPage . ( I28127 )

Версия 1.1.0-альфа06

16 октября 2024 г.

Выпущен androidx.appsearch:appsearch-*:1.1.0-alpha06 . Версия 1.1.0-alpha06 содержит эти коммиты .

Изменения API

  • Добавлен узел, представляющий функцию запроса PropertyDefined . ( I1aeaf )
  • Добавьте узлы для представления числового поиска и ограничения свойств. ( I963a9 )
  • Добавьте узел, представляющий функцию запроса GetSearchStringParameter . ( I4f99b )
  • Добавьте узел, представляющий функцию запроса HasProperty . ( I9c1c5 )
  • Добавлен интерфейс для реализации функций в AST. ( I9d42e )
  • Добавьте операторы И и ИЛИ. ( Iaa442 )
  • Добавить NegationNode для представления логического отрицания запросов в AST. ( Ia855a )
  • Добавьте интерфейс Node в AppSearch для определения узлов. ( If42fb )
  • Добавляет аннотацию экспериментального API для AppSearch . ( I3e57c )

Исправление ошибок

  • Добавьте TextNodes для хранения терминов. ( Iefd02 )

Исправление безопасности

  • С этого изменения androidx компилируется с protobuf 4.28.2 для устранения CVE-2024-7254 . Обновите свою зависимость от androidx.appsearch:appsearch-external-protobuf до последней версии 1.1.0-alpha06 для устранения риска уязвимости.

Версия 1.1.0-альфа05

4 сентября 2024 г.

Выпущен androidx.appsearch:appsearch-*:1.1.0-alpha05 . Версия 1.1.0-alpha05 содержит эти коммиты .

Изменения API

  • Удаляет ненужные setEmbeddingSearchEnabled и getEmbeddingSearchEnabled . Удаляет setListFilterTokenizeFunctionEnabled и getListFilterTokenizeFunctionEnabled . Удаляет функцию запроса 'tokenize'. Заменена на функцию запроса getSearchStringParameter и функцию addSearchStringParameter . ( I09f5a )
  • Переименуйте Alarm#getComputingDevice в getOriginatingDevice . ( I63121 )

Версия 1.1.0-альфа04

7 августа 2024 г.

Выпущен androidx.appsearch:appsearch-*:1.1.0-alpha04 . Версия 1.1.0-alpha04 содержит эти коммиты .

Новые возможности

  • Поддержка новой реализации PlayServicesStorage , которая позволяет использовать AppSearch на старых устройствах без значительных затрат на размер apk LocalStorage . Эта реализация хранилища работает путем хранения данных приложений в приложении Play Services.
  • Поддержка новых API на устройствах под управлением Android 15.
  • Поддержка поиска в базе данных путем внедрения векторов, что позволяет выполнять нечеткое сопоставление. ( I2b41b )
  • Поддержка родительских типов и полиморфизма в модели схемы AppSearch . ( I06118 )
  • Поддержка API TakenAction , который позволяет приложениям сообщать о переходах по результатам поиска или отказе от них, что повышает качество последующих поисков. ( I54091 )
  • Поддержка классов с построителями в процессоре аннотаций путем введения новой аннотации @Document.BuilderProducer . ( Iec30a )
  • Поддержка более точного контроля над тем, какие свойства вложенного документа индексируются. ( Iec30a )
  • Поддержка фильтрации поиска по определенным свойствам документа. ( Ib2659 )
  • Поддерживать более детальные настройки видимости, разрешая использование ИЛИ и И для настроек видимости. ( I0274b )
  • Поддержка предоставления видимости данных всем приложениям, которые могут видеть существование приложения-владельца (публичная видимость). ( I992e4 )
  • Поддержка извлечения только тех результатов, которые содержат данные, содержащиеся в определенном свойстве. ( I7d94f )
  • Поддержка извлечения корпоративных контактов в личном профиле. ( Idd587 )

Изменения API

  • Добавьте параметры аннотации indexableNestedPropertiesList и inheritIndexableNestedPropertiesFromSuperclass в аннотацию Document.DocumentProperty AppSearch, чтобы разрешить индексацию определенных вложенных путей свойств. ( Iec30a )
  • Поддержка конструктора строителя для создания экземпляров строителя в процессоре аннотаций AppSearch ( I265c9 )
  • Обновление процессора аннотаций AppSearch для поддержки установки родительских типов для полиморфизма ( I06118 )
  • Добавляет метод GetSchemaRequest для очистки настроек видимости ( I38379 )
  • Поддержка addParentType в AppSearch для полиморфизма ( Ida14a )
  • Добавить API для дополнительных выражений ранжирования ( I5d9f4 )
  • Добавить API SearchAction ( I54091 )
  • Добавляет поле описания для типов AppSearch ( I84762 )
  • Встроенные API поисковых запросов и ранжирования в AppSearch ( I0f6c3 )
  • Удаляет getDeletionPropagation ( I21192 )

Версия 1.1.0-альфа03

24 мая 2023 г.

Выпущен androidx.appsearch:appsearch-*:1.1.0-alpha03 . Версия 1.1.0-alpha03 содержит эти коммиты.

Новые возможности

  • Поддержка API расширенных запросов, API расширенной оценки и числового поиска. ( I02d48 )
  • Добавляет API LocalStorage.createGlobalSearchSession для поиска по всем базам данных в локальном хранилище одного приложения. ( Id3c89 )
  • Добавлен API для объединения документов по идентификатору ( Iaecfa )
  • Поддержка весов свойств для обозначения определенных свойств, которые более важны при использовании RANKING_STRATEGY_RELEVANCE_SCORING . ( I069b9 )
  • Добавьте Person и ContactPoint для запроса корпуса Person в AppSearch . ( Ia58f9 )
  • Добавлен новый тип документа ImageObject , созданный по образцу http://schema.org/ImageObject. ( I6a0c0 )
  • Добавить токенизатор VERBATIM , который позволяет добавлять свойства без интерпретации AppSearch . ( I47bc0 )
  • Добавлен RFC822_TOKENIZATION в качестве типа токенизатора, позволяющий токенизировать адреса электронной почты. ( I8a390 )
  • Включить глобальный поиск в представлении отладки. ( I51fb2 )

Изменения API

  • Удалены методы, возвращающие ListenableFuture и не имеющие суффикса Async. ( I0515f )
  • Добавляет возможность настраивать проекции по классу Document . ( I94576 )
  • Добавьте поля из Thing в Alarm , AlarmInstance , Timer , Stopwatch , StopwatchLap , ContactPoint и Person ( Id876c )

Исправление ошибок

  • Полная поддержка функций Android 13 в appsearch-platform-storage ( Ia8e61 )
  • Исправлены проблемы с переопределением имен схем и закрытых полей при использовании наследования.

Версия 1.1.0-альфа02

24 августа 2022 г.

Выпущен androidx.appsearch:appsearch-*:1.1.0-alpha02 . Версия 1.1.0-alpha02 содержит эти коммиты.

Новые возможности

  • Ускоренный процесс оптимизации с использованием сжатия индекса вместо перестроения индекса с нуля
  • Изменен собственный тег ведения журнала с «icing» на «AppSearchIcing», по умолчанию регистрируются сообщения INFO.

Изменения API

  • Добавляет новый объект PropertyPath для работы с путями и новые методы addProjection для принятия PropertyPath . ( I45588 )
  • Добавлен builtin:Thing во встроенные типы AppSearch ( I55427 )
  • Предотвращать пустые имена свойств в GenericDocument раньше — раньше они предотвращались во время индексации, теперь они предотвращаются во время GenericDocument.Builder.build() ( I9e780 )

Исправление ошибок

  • Удалено ненужное форматирование строк для улучшения производительности оценки РЕЛЕВАНТНОСТИ
  • Более эффективная навигация по страницам при обнаружении нечитаемых или удаленных документов.
  • Реализована сборка мусора для заброшенных запросов.
  • Исправлена ​​поддержка вложенной индексации для документов. Ранее indexNestedProperties игнорировался. ( Iae9a6 )

Внешний вклад

  • Ши Смит: Исправлена ​​поддержка вложенной индексации для документов. ( Iae9a6 )

Версия 1.1.0-альфа01

15 июня 2022 г.

Выпущен androidx.appsearch:appsearch-*:1.1.0-alpha01 . Версия 1.1.0-alpha01 была разработана в закрытой предрелизной ветке и не имеет публичных коммитов.

Изменения API

  • Все методы, возвращающие ListenableFuture , были переименованы и теперь имеют суффикс Async. Например, getSchema был переименован в getSchemaAsync . Предыдущие версии устарели и будут удалены в будущем выпуске.

Новые возможности

  • Первый выпуск appsearch-builtin-types. Этот проект содержит несколько встроенных типов на основе schema.org, которые клиенты могут счесть удобными для использования вместо определения собственных типов для общих объектов. В будущих выпусках будет добавлено больше типов.
  • Возможность использовать ShortcutAdapter для преобразования документа AppSearch в ShortcutInfoCompat . Это дает клиентам возможность делиться документами AppSearch с Google с помощью библиотеки core-google-shortcuts
  • Возможность использования наследования с классами @Document . Поля не могут быть заменены или изменены, но новые поля могут быть добавлены путем расширения класса, аннотированного @Document .
  • Новый API Observer, который позволяет клиентам регистрироваться для получения уведомлений, когда типы, к которым у них есть доступ, изменились или когда документы этих типов были добавлены, изменены или удалены. ВАЖНО: Текущая реализация доставляет уведомления только тогда, когда ваше приложение запущено. В настоящее время нет способа проверить изменения, которые произошли, пока ваше приложение было остановлено. Соответственно, вам не следует полагаться на этот API для полноты.
  • API анализатора свойств, который позволяет полностью обрабатывать и проверять пути свойств, возвращаемые MatchInfo#getPropertyPath .
  • Глобальный API getById и getSchema для извлечения документов и схем из других приложений, которые предоставили вам видимость.
  • Возможность извлечения информации о видимости в getSchema для данных, к которым у вас есть доступ
  • Возможность предоставления видимости приложениям, имеющим определенное разрешение Android (ограниченное узким набором разрешений из списка разрешений)
  • Поддержка геттеров в стиле isFoo() для логических полей в процессоре аннотаций в дополнение к предыдущему поддерживаемому стилю hasFoo()
  • Поддержка новых функций защищена @RequiresFeature . Используйте AppSearchSession#getFeatures чтобы определить, что поддерживает текущий бэкэнд.
  • Убрать ограничение в ~13 тыс. токенов для отдельных документов
  • Разрешить сопоставление не-ASCII+не-буквенно-цифровых символов, таких как эмодзи

Исправление ошибок

  • Исправлена ​​ошибка, приводившая к сбою SetSchema при переопределении вложенного несовместимого типа.
  • Исправления для полной поддержки классов с аннотацией @AutoValue , используемых в качестве классов AppSearch @Document
  • Исправлены некоторые сбои, связанные с повторяющимися списками классов документов и другими проблемами.
  • Исправлена ​​ошибка, которая приводила к сбою поиска префикса при определенных обстоятельствах.
  • Исправлена ​​незначительная ошибка в GetStorageInfo , из-за которой возвращались неверные значения при возникновении сбоев ввода-вывода.
  • Исправление проблем BUSADDERR при чтении документа
  • Исправление повреждения logcat, вызванного печатью неформатированного отпечатка пальца.
  • Исправление NPE, вызванных сбоями ввода-вывода
  • Исправлена ​​утечка памяти в GetSchemaType , Get , Delete , DeleteByNamespace и DeleteBySchemaType

Версия 1.0.0

Версия 1.0.0-альфа04

3 ноября 2021 г.

Выпущен androidx.appsearch:appsearch-*:1.0.0-alpha04 . Версия 1.0.0-alpha04 содержит эти коммиты.

Новые возможности

  • Зависимость Guava ListenableFuture автоматически добавляется как зависимость API

Изменения API

  • Добавьте SearchResult#getSubmatchRange() и SearchResult#getSubmatch(), чтобы предоставить больше информации о каждом совпадении. ( I2fef6 )
  • Уточнение документации по созданию отпечатков PackageIdentifier для обмена данными по имени пакета+сертификат

Исправление ошибок

  • Исправлен сбой, если пользователь пытается получить страницы результатов после окончания набора результатов.
  • Исправлена ​​проблема со всеми пространствами имен, запрашиваемыми, если в качестве фильтров запроса были указаны только недействительные пространства имен.
  • Исправлена ​​проблема с удалением всех пространств имен, если в качестве фильтров удаления по запросу были указаны только недействительные пространства имен.
  • Исправлена ​​ошибка, из-за которой данные документа переставали индексироваться после определенного момента для очень больших документов.
  • Исправлена ​​ошибка, из-за которой при токенизации удалялись сегменты с цифровыми символами, не входящими в набор ASCII.
  • Добавьте проверку последовательных неудачных попыток инициализации, чтобы помочь выйти из потенциально неисправного состояния, препятствующего успешной инициализации.

Версия 1.0.0-альфа03

21 июля 2021 г.

Выпущен androidx.appsearch:appsearch-*:1.0.0-alpha03 . Версия 1.0.0-alpha03 содержит эти коммиты.

Новые возможности

  • Выпуск Platform Storage Backend, позволяющий клиентам использовать API AppSearch с новым сервисом android.app.appsearch.AppSearchManager , запущенным в Android S. Для получения более подробной информации посетите Руководство разработчика AppSearch.
  • Поддержка процессора аннотаций для AutoValue
  • Удаление ограничения максимального размера свойства одной строки
  • Новый формат хранения для сокращения задержки инициализации
  • Единовременная внутренняя миграция данных из старого формата хранения в новый формат хранения

Исправление ошибок

  • Правильно применяет максимальный лимит документов при вставке новых документов.
  • Исправлен сбой при создании AppSearchSession.
  • Исправлены ошибки в SetSchema, из-за которых не обнаруживались некоторые случаи обратной несовместимости и несовместимости индексов.

Версия 1.0.0-альфа02

30 июня 2021 г.

Выпущены androidx.appsearch:appsearch:1.0.0-alpha02 , androidx.appsearch:appsearch-compiler:1.0.0-alpha02 и androidx.appsearch:appsearch-local-storage:1.0.0-alpha02 . Версия 1.0.0-alpha02 содержит эти коммиты.

Новые возможности

  • Полная поддержка китайского/японского/корейского/тайского языков
  • Уменьшен размер androidx.appsearch:appsearch-local-storage
  • Удаление ограничения максимального размера повторяющихся свойств
  • Разрешить повторное использование классов конструктора
  • Улучшения в toString() некоторых объектов для упрощения отладки
  • Улучшения документации Javadoc

Изменения API

  • SearchResult#getMatches переименован в SearchResult#getMatchInfos
  • @Document.Int64Property переименован в @Document.LongProperty

Исправление ошибок

  • Улучшения и исправления в вычислении фрагментов результатов
  • Исправления ошибок в инициализации AppSearchSession

Версия 1.0.0-альфа01

5 мая 2021 г.

Выпущены androidx.appsearch:appsearch:1.0.0-alpha01 , androidx.appsearch:appsearch-compiler:1.0.0-alpha01 и androidx.appsearch:appsearch-local-storage:1.0.0-alpha01 . Версия 1.0.0-alpha01 содержит эти коммиты.

Новые возможности

AppSearch — это поисковая библиотека для управления локально хранимыми структурированными данными с API для индексации данных и извлечения данных с помощью полнотекстового поиска. Используйте ее для создания пользовательских возможностей поиска в приложении для ваших пользователей. Первоначальный выпуск — 1.0.0-alpha01 .