AppSearch 是一种高效的设备端搜索解决方案,用于管理本地存储的结构化数据。它包含用于索引数据和全文数据检索的 API。应用程序可以利用 AppSearch 提供独特的应用内搜索功能,让用户能够离线搜索内容。与 SQLite 相比,由于 I/O 利用率较低,AppSearch 在处理海量数据集的索引和搜索时提供了更好的延迟性能。当 SQLite 混合来自多个表的结果时,AppSearch 支持单一查询,从而简化了跨类型查询。
AppSearch 示例
让我们以一个在线学习应用为例,该应用跟踪注册课程的用户,并支持他们快速搜索课程,从而展现 AppSearch 的优势。用户喜欢这款应用,因为它提供了来自世界各地的各种语言的新文章,而 AppSearch 原生支持索引和查询。当用户按标题或作者姓名搜索课程时,应用只需将请求转发给 AppSearch,即可快速有效地获取匹配的文章。由于应用展示结果的方式,用户可以立即开始阅读文章。
!Image #1: Understanding the App Search Architecture.Image #1: 理解应用搜索架构。
AppSearch 的特性
- 非常有效的大规模索引和查询
- 支持多种语言,包括西班牙语和英语
- 最小化 I/O 使用的快速移动优先存储实现
- 实用性评估和相关性排序
如何在您的应用中添加 App-Search?
在您的 Android 应用中添加 App Search 非常简单,只需执行以下操作:
步骤 #1: 将必要的依赖项添加到您应用的 build.gradle 文件中即可使用 AppSearch
implementation "androidx.appsearch:appsearch:1.0-0.0-beta01"
implementation "androidx.appsearch:appsearch-local-storage:1.0-0.0-beta01"
implementation "androidx.appsearch:appsearch-platform-storage:1.0-0.0-beta01"
步骤 #2: 启用您的 MainActivity
要添加应用内搜索功能,请将以下代码添加到应用的 MainActivity 文件中。
Java
CODEBLOCK_32355f54
需要记住的关键点:
- 数据源和会话: AppSearch 数据库是一组遵循数据库结构的文档。客户端应用通过提供数据库名称及其应用上下文来建立数据库。只有构建该数据库的应用才能打开它。打开数据库后会返回一个会话,以便您可以与其进行交互。会话是调用 AppSearch API 的起点,并且在客户端应用关闭它之前一直处于活动状态。
- 架构和架构类型: 架构表示 AppSearch 数据库中的数据组织形式。架构由代表特定数据类型的架构类型组成。架构类型由具有名称、数据类型和基数的属性组成。当架构类型添加到数据库架构后,就可以创建该架构类型的文档并将其添加到数据库中。
- 通过输入查询进行搜索: 可以跨索引文档进行搜索。如果文档满足另一个搜索参数或包含查询中的术语,它将被添加到搜索结果中。结果根据其得分进行排序和组织。您可以逐个检索的页面表示搜索结果。
App Search 与 Local Storage 有何不同?
LocalStorage 和 PlatformStorage 是 AppSearch 提供的两种存储选项。您的应用使用 LocalStorage 管理位于应用数据目录中的应用特定索引。您的程序使用 PlatformStorage 贡献给系统范围的中央索引。在中央索引内,您只能访问您的应用程序提供的数据以及其他应用程序正式与您共享的数据。
打开数据库:
在处理文档之前,需要创建一个数据库。下面的代码建立了一个名为 notes app 的新数据库,并获取一个 AppSearchSession 的 ListenableFuture,它代表与数据库的连接并提供数据库操作的 API。
Java
`
Context appContext = getApplicationContext();
// 添加此代码以启用应用内搜索功能。
ListenableFuture activitySearch
= LocalStorage.createSearchSession(
new LocalStorage.Se