Windows 搜索中的通知进程

本主题的组织方式如下:

通知过程概述

可通过三种方法对数据存储中的数据进行索引:

  • 爬网
  • 索引器管理的通知
  • 提供程序管理的通知

以下各节介绍了每种方法的优点。

爬网

启用通知的源在启动时执行增量爬网,然后依靠通知或显式命令再次进行爬网。 这在 Windows Vista 及更高版本上自动发生。 在 Windows Vista 之前的操作系统上,必须在 任务计划程序 中设置一个计划事件,该事件调用代码以在起始页 () 启动爬网。 无需实现任何形式的通知。 作为后台进程,索引器遍历其爬网范围,查找更改并更新目录。 对于几乎所有情况,建议使用此选项。

Indexer-Managed通知

使用索引器管理的通知,可以实现一种通知策略,该策略在数据存储中的数据发生更改时通知索引器,索引器管理跟踪通知和为数据编制索引。 在这种情况下,组件 (,我们将调用通知提供程序,) 监视数据存储,收集有关存储更改的信息,然后定期向索引器通知需要编制索引的项列表。 索引器负责在发生故障时恢复和解析通知。 此选项可视为“发送并忘记它”策略,可降低索引器爬网的频率。

Provider-Managed通知

使用提供程序管理的通知,可以实施类似于第二种方法的通知策略,只不过通知提供商必须跟踪通知,并负责在发生故障时恢复和解决通知。 在这种情况下,通知提供程序监视数据存储,收集和维护有关存储更改的信息,定期向索引器通知需要编制索引的项目列表,从索引器接收状态更新,并在发生故障时重新发送通知。

注意

不建议使用此选项, 除非 预期数据存储的增量爬网会严重影响性能,并且需要对索引状态进行精细控制或深入了解。

 

行集上的通知

在 Windows 7 及更高版本中,索引事件使提供程序能够接收有关其行集的通知。 使用索引事件的提供程序可以以类似于实际文件系统位置的行为的方式维护其行集。 库和搜索是 Windows 7 中非文件系统位置的主要示例。 索引器事件是库视图,就像通知对文件夹视图一样。 必须实现 IRowsetEvents 接口才能接收事件的通知。 数据层是索引器事件的主要客户端,并决定对项目视图 UI 中的事件执行哪些操作。 有关详细信息,请参阅 为 Windows 7 中的优先级编制索引和行集事件

相比之下,在 Windows Vista 中,基于查询的视图没有关联的事件,但用于文件属性编辑的 Shell 缓存除外。 执行搜索时,返回的结果是静态的。 因此,如果将另一个文档添加到与搜索词匹配的系统,则不会更新视图以包含新添加项。 此行为是基于 Web 的静态结果的标准行为。 但是,尝试在存储位置上提供基于查询的视图时,静态结果不太可接受。 用户希望索引器中的内容是最新的。 有关详细信息,请参阅 通知索引更改。 有关参考文档,请参阅 通知接口

Windows 搜索中的索引、查询和通知

索引中包含的内容

Windows 搜索中的索引进程

Windows 搜索中的查询进程

URL 格式设置要求