Exchange Server 2003 如何执行搜索

 

上一次修改主题: 2005-05-06

作为一个数据库系统,Exchange 存储使用表来组织邮箱、文件夹和邮件等数据。与其他任何数据库一样,为便于搜索,对每个表中的某些属性编制了索引。这些索引不同于全文索引,后者位于存储外部。全文索引由 Microsoft Search 服务 (MSSearch) 产生并维护。一个全文索引涵盖整个邮箱存储或公用文件夹存储。

有关全文索引的详细信息,请参阅使用 Exchange Server 2003 全文索引。全文索引在搜索之前先使用资源来生成索引,从而减少了搜索过程中所需的资源。但是,全文索引存在下列缺点:

  • 创建大小达几个 GB 的索引可能需要几天的时间。
  • 只有在索引达到最新状态时才能够获取正确的搜索结果。

当 Exchange Server 2003 收到搜索请求时,一个名为查询处理器的存储组件分析请求中定义的搜索条件,以查找处理该请求的最有效方法。例如,它可能更改搜索条件的顺序,或者删除不必要的搜索条件。

此外,查询处理器还可能确定是搜索全文索引还是搜索 Exchange Server 2003 表索引。查询处理器可能使用两种类型的搜索来满足一个搜索请求。

为了确定对搜索请求使用全文索引、表索引还是二者的组合,查询处理器评估下列因素:

  • 用作搜索条件的属性的位置。
    这包括搜索条件是引用包含在全文索引中的属性还是引用包含在表索引中的属性。
    例如,如果搜索请求中包含一个引用编入全文索引中的属性的“Contains”子句,则适合采用全文索引搜索。
    如果查询处理器找到两个或多个包含相应属性的表索引,将使用每个表来计算将返回的邮件数。然后,为尽量减少资源开销,查询处理器将选择返回邮件最多的表。
  • 发出的搜索请求的类型。
    例如,如果搜索请求涉及比较属性的所有值,则不适合采用全文索引搜索。

搜索示例

下图说明了搜索过程中的基本步骤。该示例涉及 Outlook 的“高级查找”功能。若要查找此功能,请在 Outlook 工具栏中,单击“查找”,然后,在“查找”工具栏中,指向“选项”,再单击“高级查找”。

1b739223-d8f0-4158-8542-0e6f21f758e7

搜索过程中的事件序列如下所示:

  1. 在 Outlook 中,用户创建具有下列搜索条件的搜索请求:
    • 邮件在“测试”文件夹中。
    • 邮件的“主题”字段包含“test plan”字符串。
    • 邮件大小大于 10 KB。
  2. 用户执行搜索。Outlook 将搜索请求发送到 Exchange Server 2003。
  3. Exchange Server 2003 查询处理器分析搜索请求,确定表索引搜索和全文索引搜索均适用。
  4. 查询处理器向 MSSearch 发送“主题”字段的一个搜索字符串。
  5. MSSearch 执行搜索,并将与搜索字符串匹配的结果返回给查询处理器。
  6. 查询处理器使用表索引搜索来搜索步骤 5 所获得的结果集中大于 10 KB 的邮件。
  7. 查询处理器将最终的搜索结果返回给 Outlook。

编入全文索引中的属性主题

默认情况下,全文索引包含下列 MAPI 属性:

PR_SUBJECT
PR_SUBJECT_W 
PR_BODY
PR_BODY_W 
PR_SENDER_NAME
PR_SENDER_NAME_W 
PR_SENDER_EMAIL_ADDRESS
PR_SENDER_EMAIL_ADDRESS_W
PR_SENT_REPRESENTING_NAME
PR_SENT_REPRESENTING_NAME_W 
PR_SENT_REPRESENTING_EMAIL_ADDRESS
PR_SENT_REPRESENTING_EMAIL_ADDRESS_W
PR_DISPLAY_TO
PR_DISPLAY_TO_W 
PR_DISPLAY_CC
PR_DISPLAY_CC_W 
PR_DISPLAY_BCC
PR_DISPLAY_BCC_W

默认情况下,全文索引包含下列 DAV/OLEDB 属性:

urn:schemas:httpmail:subject
urn:schemas:httpmail:textdescription
urn:schemas:httpmail:sendername
urn:schemas:httpmail:fromname
urn:schemas:httpmail:displayto
urn:schemas:httpmail:displaycc
urn:schemas:httpmail:displaybcc