如何为本地应用数据建立索引

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

你可以通过 Windows 搜索服务 (WSS) 为本地存储的应用数据建立索引。

如果你的应用管理文档、邮件或媒体(照片、音乐和视频等)等文件,则有一项重要要求,即对文件的内容或属性建立结构化索引,以便用户能够快速有效地管理和检索数据。不需要在应用中构建索引器。对于作为开发人员的你而言,有一个既方便又安全的方法:你只要启动 WSS 即可为你的应用数据建立索引。

使用 WSS 对应用数据建立索引的主要优势有:

  • WSS 支持为最常用文档类型的完整内容文本建立索引。此外,WSS 还支持为文档属性建立索引。
  • 借助内置搜索合约和文件 API,可轻松提取和重复使用索引数据。
  • Windows 搜索遵循文件系统安全设置,从而确保已建立索引的应用数据安全存储在 Windows 索引器中。

Windows 搜索适用于所有的 Windows 应用商店应用,包括使用 JavaScript、C#、C++ 和 VB.Net 编写的应用。

为你的应用启用 Windows 搜索

请求 Windows 搜索为应用数据建立索引是无效的。你需要在应用数据文件夹下创建一个名为 indexed 的文件夹,并存储需要在其中建立索引的内容。Windows 搜索将 indexed 文件夹视为与硬盘上的任何其他索引位置相同。 它将为此文件夹及其所有子文件夹中的文件内容或文件元数据编制索引。以下是重要考虑事项的列表:

  1. indexed 文件夹必须遵循这些指南:
    • indexed 文件夹必须在 localFolder 根目录下创建。Windows 搜索深入为此文件夹中的内容建立索引。将为任何本地存储于此文件夹或其子文件夹(包括所有级别的子文件夹)中的文件建立索引。 每个应用仅允许一个 indexed 文件夹。
    • 文件夹名 indexed 不区分大小写。
    • 尽管应用数据文件夹在 Windows 运行时 API 中的名称为 localFolder,但是它在物理硬盘驱动器上的名称为 LocalState。如果你想要访问此文件夹以进行测试,请使用以下文件夹路径: %user%\ AppData\Local\Packages\%packageName%\LocalState
    • indexed 下的文件夹结构可能会很深,但是 Windows API 不允许文件/文件夹的路径长度大于 MAX_PATH(该属性定义为 260 个字符)。因此,你需要确保 indexed 文件夹下的文件或文件夹不超过此限制。有关 MAX_PATH 的详细信息,请参阅最大路径长度限制
  2. Windows 搜索仅为本地存储的数据建立索引。换言之,将仅为本地存储在 indexed 文件夹或其子文件夹中的文件建立索引。
  3. indexed 文件夹无法在安装期间创建。 仅可在应用运行时创建它。由于根据内容大小,Windows 搜索完成需要时间,我们建议你在第一次运行应用时创建 indexed 文件夹。创建 indexed 文件夹后,Windows 搜索将自动为应用内容建立索引。如果修改文件或子文件夹(添加、删除或更新),Windows 搜索还将重新计划索引进程,并使索引器对更改保持更新。请注意,Windows 搜索监视 CPU 使用情况以按其自己的时间表优化索引进程。

安全性

WSS 遵循 Windows 文件系统的安全设置,以便索引应用数据安全存储在索引器中。具体而言:

  • 当同一电脑上存在多个用户帐户时: 按用户帐户安装 Windows 应用商店应用。如果同一电脑上有多个用户使用相同的应用,则每个应用实例都将在不同的物理路径下创建自己的 indexed 文件夹。因此,一个用户不能访问其他帐户下的索引数据,除非此用户已获取访问该物理地址的权限。
  • 为多个应用的应用数据建立索引时: Windows 文件系统不允许一个应用直接访问另一应用的数据。因此,一个应用没有访问另一应用的索引数据的权限。

提取索引内容

为应用数据建立索引后,该应用即可通过文件 API 提取此数据。

相关主题

Windows 搜索服务

Windows 搜索服务如何通过 IFilter 为内容建立索引

向 Windows 应用商店应用添加搜索