AppSearch

AppSearch 是一个用于管理本地存储的结构化数据的设备内搜索库,它提供用于索引数据和使用全文搜索检索数据的 API。使用它为您的用户构建自定义的应用程序内搜索功能。
最新更新 稳定版本 候选版本 Beta 版本 Alpha 版本
2024 年 9 月 4 日 - - - 1.1.0-alpha05

声明依赖项

要添加对 AppSearch 的依赖项,您必须将 Google Maven 存储库添加到您的项目中。阅读 Google 的 Maven 存储库 以了解更多信息。

在您的应用程序或模块的 build.gradle 文件中添加您需要的工件的依赖项

Groovy

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

有关依赖项的更多信息,请参见 添加构建依赖项

反馈

您的反馈有助于使 Jetpack 变得更好。如果您发现新的问题或有改进此库的想法,请告诉我们。在创建新问题之前,请查看此库中 现有问题。您可以通过单击星形按钮为现有问题投票。

创建新问题

有关更多信息,请参见 问题跟踪器文档

版本 1.1

版本 1.1.0-alpha05

2024 年 9 月 4 日

androidx.appsearch:appsearch-*:1.1.0-alpha05 已发布。版本 1.1.0-alpha05 包含 这些提交

API 更改

  • 弃用不必要的 setEmbeddingSearchEnabledgetEmbeddingSearchEnabled。删除 setListFilterTokenizeFunctionEnabledgetListFilterTokenizeFunctionEnabled。已删除“tokenize”查询函数。替换为 getSearchStringParameter 查询函数和 addSearchStringParameter 函数。(I09f5a
  • Alarm#getComputingDevice 重命名为 getOriginatingDevice。(I63121

版本 1.1.0-alpha04

2024 年 8 月 7 日

androidx.appsearch:appsearch-*:1.1.0-alpha04 已发布。版本 1.1.0-alpha04 包含 这些提交

新功能

  • 支持新的 PlayServicesStorage 实现,允许在较旧的设备上使用 AppSearch,而无需承担 LocalStorage 显著的 apk 大小成本。此存储实现通过将应用程序数据存储在 Play 服务应用程序中来实现。
  • 支持在运行 Android 15 的设备上的新 API。
  • 支持通过嵌入向量搜索数据库,允许模糊匹配。(I2b41b
  • 支持 AppSearch 模式模型中的父类型和多态性。(I06118
  • 支持 TakenAction API,允许应用程序在点击或放弃结果时进行报告,以便在后续搜索期间提升质量。(I54091
  • 通过引入新的 @Document.BuilderProducer 注解,支持在注解处理器中使用带有构建器的类。(Iec30a
  • 支持更细粒度的控制,以确定嵌套文档的哪些属性被索引。(Iec30a
  • 支持将搜索过滤到特定文档属性。(Ib2659
  • 通过允许可见性设置的 OR 和 AND,支持更细粒度的可见性设置。(I0274b
  • 支持将数据的可见性授予所有能够看到拥有应用程序存在性的应用程序(公共可见性)。(I992e4
  • 支持仅检索在特定属性中填充了数据的結果。(I7d94f
  • 支持在个人资料中检索企业联系人。(Idd587

API 更改

  • 向 AppSearch 的 Document.DocumentProperty 注解添加 indexableNestedPropertiesListinheritIndexableNestedPropertiesFromSuperclass 注解参数,以允许索引特定的嵌套属性路径。(Iec30a
  • 支持构建器构造函数在 AppSearch 注解处理器中创建构建器实例 (I265c9)
  • 更新 AppSearch 注解处理器以支持为多态性设置父类型 (I06118)
  • 添加 GetSchemaRequest 方法以清除可见性设置 (I38379)
  • 支持 AppSearch 中的多态性 (addParentType) (Ida14a)
  • 添加用于其他排名表达式的 API (I5d9f4)
  • 添加 SearchAction API (I54091)
  • AppSearch 类型添加描述字段 (I84762)
  • 将嵌入搜索查询和排名 API 载入 AppSearch (I0f6c3)
  • 删除 getDeletionPropagation (I21192)

版本 1.1.0-alpha03

2023 年 5 月 24 日

androidx.appsearch:appsearch-*:1.1.0-alpha03 已发布。 版本 1.1.0-alpha03 包含这些提交。

新功能

  • 支持高级查询 API、高级评分 API 和数字搜索。(I02d48
  • 添加 LocalStorage.createGlobalSearchSession API 以跨单个应用程序本地存储中的所有数据库进行搜索。(Id3c89
  • 添加了一个 API 来通过 ID 加入文档 (Iaecfa)
  • 支持属性权重,以在使用 RANKING_STRATEGY_RELEVANCE_SCORING 时标记某些属性更为重要。(I069b9
  • 添加 Person 和 ContactPoint 以在 AppSearch 中查询 Person 语料库。(Ia58f9
  • 添加了新的文档类型 ImageObject,其模型基于 http://schema.org/ImageObject。(I6a0c0
  • 添加了一个 VERBATIM 标记器,允许在不经过 AppSearch 解释的情况下添加属性。(I47bc0
  • 添加了 RFC822_TOKENIZATION 作为标记器类型,允许对电子邮件地址进行标记。(I8a390
  • 在调试视图中启用全局搜索。(I51fb2

API 更改

  • 删除了返回 ListenableFuture 且没有 Async 后缀的方法。(I0515f
  • 添加了通过 Document 类配置投影的能力。(I94576
  • Thing 添加字段到 AlarmAlarmInstanceTimerStopwatchStopwatchLapContactPointPerson (Id876c)

错误修复

  • 在 appsearch-platform-storage 中完全支持 Android 13 功能 (Ia8e61)
  • 修复了在使用继承时覆盖模式名称和私有字段的问题。

版本 1.1.0-alpha02

2022 年 8 月 24 日

androidx.appsearch:appsearch-*:1.1.0-alpha02 已发布。 版本 1.1.0-alpha02 包含这些提交。

新功能

  • 使用索引压缩而不是从头开始重建索引来加快优化过程。
  • 将本机日志记录标记从 "icing" 更改为 "AppSearchIcing",默认情况下记录 INFO 消息。

API 更改

  • 添加新的 PropertyPath 对象以处理路径,并添加新的 addProjection 方法以接受 PropertyPath。(I45588
  • AppSearch 内置类型添加 builtin:Thing (I55427)
  • 更早地防止 GenericDocument 中出现空属性名称 - 以前在索引时间防止,现在在 GenericDocument.Builder.build() 时间防止 (I9e780)

错误修复

  • 删除了不必要的字符串格式化以提高 RELEVANCE 评分性能。
  • 在遇到不可读或已删除的文档时,更有效的分页。
  • 为已放弃的查询实现了垃圾回收。
  • 修复了文档的嵌套索引支持。以前 indexNestedProperties 被忽略了。(Iae9a6

外部贡献

  • Shea Smith:修复文档的嵌套索引支持。(Iae9a6

版本 1.1.0-alpha01

2022 年 6 月 15 日

androidx.appsearch:appsearch-*:1.1.0-alpha01 已发布。版本 1.1.0-alpha01 在私有预发布分支中开发,没有公共提交。

API 更改

  • 所有返回 ListenableFuture 的方法已重命名为具有 Async 后缀。例如,getSchema 已重命名为 getSchemaAsync。以前版本已被弃用,将在将来的版本中删除。

新功能

  • appsearch-builtin-types 的第一个版本。该项目包含一些基于 schema.org 的内置类型,客户端可能会发现这些类型方便使用,而不是为常见对象定义自己的类型。在将来的版本中会添加更多类型。
  • 能够使用 ShortcutAdapterAppSearch 文档转换为 ShortcutInfoCompat。这为客户端提供了一种方法,可以使用 core-google-shortcuts 库将 AppSearch 文档分享到 Google。
  • 能够在 @Document 类中使用继承。字段不能被替换或修改,但可以通过扩展带 @Document 注解的类来添加新字段。
  • 新的观察者 API,允许客户端在他们有权访问的类型发生更改或那些类型的文档被添加、修改或删除时注册通知。重要:当前实现仅在您的应用程序运行时才提供通知。目前还没有办法检查应用程序停止时发生的更改。因此,您不应该依赖此 API 来获得完整性。
  • 属性解析器 API,允许您完全处理和检查由 MatchInfo#getPropertyPath 返回的属性路径。
  • 全局 getById 和全局 getSchema API,用于从已向您授予可见性的其他应用程序检索文档和模式。
  • 能够在 getSchema 中检索您有权访问的数据的可见性信息。
  • 能够向持有特定 Android 权限的应用程序授予可见性(仅限于一组有限的允许列表权限)。
  • 支持注解处理器中布尔字段的 isFoo() 样式的 getter,以及以前支持的样式 hasFoo()
  • 支持 @RequiresFeature 背后的新功能。使用 AppSearchSession#getFeatures 确定当前后端支持的功能。
  • 删除单个文档的约 13k 个标记限制。
  • 允许对非 ASCII+非字母数字字符(如表情符号)进行匹配。

错误修复

  • 修复了在特定情况下会导致 SetSchema 失败的错误。
  • 修复了完全支持将 @AutoValue 注解的类用作 AppSearch @Document 类的问题。
  • 修复了与文档类的重复列表和其他问题相关的某些崩溃问题。
  • 修复了在某些情况下会导致前缀搜索崩溃的错误。
  • 修复了 GetStorageInfo 中会导致在遇到 IO 故障时返回不正确值的次要错误。
  • 修复了在读取文档时发生的 BUSADDERR 问题。
  • 修复了由打印未格式化的指纹引起的 logcat 损坏。
  • 修复了由 IO 故障引起的 NPE。
  • 修复了 GetSchemaTypeGetDeleteDeleteByNamespaceDeleteBySchemaType 中的内存泄漏。

版本 1.0.0

版本 1.0.0-alpha04

2021 年 11 月 3 日

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

2021 年 7 月 21 日

androidx.appsearch:appsearch-*:1.0.0-alpha03 已发布。 版本 1.0.0-alpha03 包含这些提交。

新功能

  • 发布平台存储后端,允许客户端使用 AppSearch API,该 API 与 Android S 中启动的新 android.app.appsearch.AppSearchManager 服务一起使用。有关更多详细信息,请访问 AppSearch 开发者指南。
  • AutoValue 的注释处理器支持
  • 删除单个字符串属性的最大大小限制
  • 新的存储格式,以减少初始化延迟
  • 从旧存储格式到新存储格式的内部一次性数据迁移

错误修复

  • 在插入新文档时正确强制执行最大文档限制
  • 修复了 AppSearchSession 创建期间的崩溃
  • 修复了 SetSchema 中的错误,这些错误没有检测到某些向后不兼容性和索引不兼容的情况

版本 1.0.0-alpha02

2021 年 6 月 30 日

androidx.appsearch:appsearch:1.0.0-alpha02androidx.appsearch:appsearch-compiler:1.0.0-alpha02androidx.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-alpha01

2021 年 5 月 5 日

androidx.appsearch:appsearch:1.0.0-alpha01androidx.appsearch:appsearch-compiler:1.0.0-alpha01androidx.appsearch:appsearch-local-storage:1.0.0-alpha01 已发布。 版本 1.0.0-alpha01 包含这些提交。

新功能

AppSearch 是一个用于管理本地存储的结构化数据的搜索库,它提供用于索引数据和通过全文搜索检索数据的 API。使用它为您的用户构建自定义的应用内搜索功能。此初始版本为 1.0.0-alpha01