AppSearch

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

声明依赖项

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

在您的应用或模块的 build.gradle 文件中添加所需构件的依赖项

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

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

反馈

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

创建新的问题

查看问题跟踪器文档以了解更多信息。

1.1 版本

1.1.0-alpha06 版本

2024 年 10 月 16 日

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

API 变更

  • 添加了表示PropertyDefined 查询函数的节点。(I1aeaf
  • 添加节点以表示数值搜索和属性限制。(I963a9
  • 添加了表示GetSearchStringParameter 查询函数的节点。(I4f99b
  • 添加了表示HasProperty 查询函数的节点。(I9c1c5
  • 添加了用于在 AST 中实现函数的接口。(I9d42e
  • 添加 AND 和 OR 运算符。(Iaa442
  • 添加NegationNode 用于在 AST 中表示查询的逻辑否定。(Ia855a
  • 为定义节点,向AppSearch添加 Node 接口。(If42fb
  • AppSearch添加实验性 API 注解。(I3e57c

错误修复

  • 添加TextNodes 用于保存术语。(Iefd02

安全修复

  • 此更改起,androidx 编译时使用 protobuf 4.28.2 来解决CVE-2024-7254。将您对androidx.appsearch:appsearch-external-protobuf的依赖项升级到最新的 1.1.0-alpha06 以解决漏洞风险。

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 变更

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

1.1.0-alpha03 版本

2023 年 5 月 24 日

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

新功能

  • 支持高级查询 API、高级评分 API 和数值搜索。(I02d48
  • 添加LocalStorage.createGlobalSearchSession API 以跨单个应用程序的本地存储中的所有数据库进行搜索。(Id3c89
  • 添加了按 ID 加入文档的 API(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添加到AlarmAlarmInstanceTimerStopwatchStopwatchLapContactPointPersonId876c

错误修复

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

1.1.0-alpha02 版本

2022 年 8 月 24 日

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

新功能

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

API 变更

  • 添加了用于处理路径的新PropertyPath 对象,以及接受PropertyPath 的新addProjection 方法。(I45588
  • builtin:Thing 添加到AppSearch 内置类型(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 个 token 限制。
  • 允许匹配非 ASCII+非字母数字字符,例如表情符号。

错误修复

  • 修复了在覆盖嵌套的不兼容类型时SetSchema会失败的错误。
  • 修复了完全支持将使用 AppSearch @Document类的@AutoValue注解类。
  • 修复了一些与文档类重复列表和其他问题相关的崩溃。
  • 修复了在某些情况下会导致前缀搜索崩溃的错误。
  • 修复了GetStorageInfo中的一个小错误,该错误在遇到 IO 失败时会返回不正确的值。
  • 修复了读取文档时的BUSADDERR问题。
  • 修复了打印未格式化的指纹导致的 logcat 损坏。
  • 修复了由 IO 失败引起的 NPE。
  • 修复了GetSchemaTypeGetDeleteDeleteByNamespaceDeleteBySchemaType中的内存泄漏。

1.0.0 版本

1.0.0-alpha04 版本

2021 年 11 月 3 日

已发布androidx.appsearch:appsearch-*:1.0.0-alpha041.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-alpha031.0.0-alpha03 版本包含这些提交。

新功能

  • 发布平台存储后端,允许客户端使用新的android.app.appsearch.AppSearchManager服务(在 Android S 中启动)使用 AppSearch API。有关更多详细信息,请访问 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-alpha021.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-alpha011.0.0-alpha01 版本包含这些提交。

新功能

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