全文索引问题

 

上一次修改主题: 2005-07-17

本部分讨论如何解决在使用全文索引时可能遇到的问题。它包含有关下列错误消息和情况的信息:

  • 安全的事件查看器消息
  • 填充过程缓慢
  • 发现填充过程处于暂停状态
  • 已删除的邮件在搜索结果中仍然可见
  • 移动索引之后显示的位置是错误的
  • 使用集合日志条目来确定问题
  • 语言设置问题
  • 服务器启动过程中查询失败
  • 还原缺少的性能计数器
  • 避免磁盘瓶颈
  • 高分页

如果遇到全文索引问题,则事件查看器与性能日志和警报都是解决问题的有用工具。

安全的事件查看器消息

虽然事件查看器对于解决全文索引问题很有用,但是某些事件(如以下各部分所述)不一定指示存在问题。

事件 ID 7000:已成功启动索引器

在使用 Exchange 系统管理器停止索引填充后,Microsoft Search 服务 (MSSearch) 可能会在事件查看器的应用程序事件日志中错误地记录以下事件消息的几个副本:

Event Type: Information

Event Source: Microsoft Search

Event Category: Indexer

Event ID: 7000

Date: date

Time: time

User: N/A

Computer: server_name

Description:

The Indexer started successfully for project

<ExchangeServer_SERVERNAME priv78F2DC76>

此消息并不指示存在问题,因此可以将其忽略。

事件 ID 10006:灾难性失败(群集环境)

在群集环境中关闭 Microsoft Search 服务时,可能会出现以下错误消息:

Event Type: Error

Event Source: Microsoft Search

Event Category: Gatherer

Event ID: 10006

Date: 2/11/2000

Time: 9:44:25 AM

User: N/A

Computer: <servername>

Description:

An error occurred during the online operation for instance <your instance>: 8000ffff - Catastrophic failure

此错误不是灾难性失败。请等待所有服务都成功关闭,然后重新启动服务(如有必要)。为防止出现此错误,请使用群集管理器而不是控制面板中的“服务”应用程序来停止群集资源。如果使用控制面板中的“服务”来停止服务,群集资源管理器将假定资源已失败,因此,它将尝试重新启动服务,或者将组故障转移。

将 SMTP 和系统助理记录为错误

当 Microsoft Search 服务正在运行时,您可能在集合日志中看到类似如下的错误消息:

2b3b1b8 1bed2fc

file:\\.\BackOfficeStorage\server.microsoft.com\MBX\SMTP

(SERVER-{E2E63C70-4129-43F6-9363-6B501433C952}) 8000000c 0 80080005

2cdeb96 1bed2fc

file:\\.\BackOfficeStorage\server.extest.microsoft.com\MBX\System Attendant 8000000c 0 80080005

可以忽略这些错误消息。有关集合日志的详细信息,请参阅本主题后面的“使用集合日志条目来确定问题”。

填充过程缓慢

如果填充过程缓慢,其原因可能是 Internet 新闻复制。Internet 新闻复制可能包含经过 uuencode 编码的二进制文件,对这些文件编制索引的速度比普通邮件慢得多。在包含 Internet 新闻复制的公用文件夹上运行填充时,填充时间将明显延长。

如果尚未优化最大下载大小,则带有大附件的邮件也可能导致性能问题。建议的设置是 4,000 MB。更改此设置需要编辑注册表。

Caution警告:
错误地编辑注册表可能导致严重的问题,甚至可能需要重新安装操作系统。因注册表编辑不当而导致的问题可能没有办法解决。在编辑注册表之前,请备份所有重要数据。

有关如何更改附件的最大下载大小的详细步骤,请参阅如何更改最大附件下载大小

有关设置下载大小的详细信息,请参阅使用 Exchange Server 2003 全文索引中的“优化全文索引”。

发现填充过程处于暂停状态

如果 Microsoft Search 服务不能继续,它将暂停填充过程。若要验证 Microsoft Search 服务(而不是管理员)是否暂停了填充,请检查事件日志。Microsoft Search 服务在必须暂停或停止填充时会记录一个事件。例如,如果因磁盘太满而无法将新信息添加到索引或日志文件中,则 Microsoft Search 服务将暂停填充。通常,可以修复此问题(例如,通过释放已满驱动器上的空间),并继续填充。在暂停填充过程中添加的新文档在下一次填充时才添加到索引中。

note注意:
问题的根源通常是缺少磁盘空间,尽管有时看起来磁盘上似乎有足够的可用磁盘空间。Microsoft Search 服务使用大量磁盘空间来临时存放解压缩的大量索引,以便在重新压缩之前合并新结果。

已删除的邮件在搜索结果中仍然可见

可以从搜索结果文件夹中删除邮件。邮件已删除,但在刷新搜索之前,邮件在搜索结果窗口中仍然可见。

移动索引之后显示的位置是错误的

如果使用 Catutil 工具 (Catutil.exe) 移动索引,则 Exchange 系统管理器显示的索引位置不更新。有关使用 Catutil 工具来移动索引的详细信息,请参阅使用 Exchange Server 2003 全文索引。索引成功移动且正常工作,但是 Exchange 系统管理器错误地显示索引的原始位置。这是一个显示错误,并不影响全文索引的正常工作。您无法更正此显示,但是可以通过检查注册表随时检查索引的当前位置。

有关如何在使用 Catutil 之后检查当前索引位置的详细步骤,请参阅如何检查索引的当前位置

使用集合日志条目来确定问题

集合日志文件是在填充过程中生成的。这些文件包含 Microsoft Search 服务的日志信息。文件位于 Program Files\Exchsrvr\ExchangeServer_<服务器名>\GatherLogs 目录中。扩展名为 .gthr。

如果由于任何原因无法对特定文档编制索引,则将在集合日志文件中记录一个条目。每个条目都列出文件名和错误号。若要解码此错误号,请使用 Program Files\Common Files\System\MSSearch\Bin 目录中的 Gthrlog 工具。

有关如何使用 Gthrlog 工具来对集合日志文件中的错误编号进行解码的详细步骤,请参阅如何使用 Gthrlog 工具对集合日志文件中的错误编号进行解码

语言设置问题

在混合语言方案中指导全文索引的准则是很复杂的。单个邮件、附件、服务器和客户端计算机的语言设置会影响索引行为。下表将说明各种语言设置如何影响索引行为。您可以使用此信息来帮助确定用户报告的搜索问题的原因。

语言设置对索引行为的影响

语言设置 索引行为

单个邮件

  • 如果邮件是 MAPI 邮件,则具有“区域设置 ID”属性,而且全文索引使用此值确定要使用的断字符(确定给定文本中单个单词的起始位置和结束位置)。此属性值来自客户端计算机上 Microsoft Office 系统中的语言设置。如果全文索引找不到与“区域设置 ID”属性匹配的断字符,则使用“非特定语言 <0>”属性。有关全文索引如何使用断字符的详细信息,请参阅使用 Exchange Server 2003 全文索引
  • 如果邮件是使用分布式创作和版本管理 (DAV) 创建的,则该邮件将使用“Accept-Language”头来确定正确的区域设置。
  • 如果邮件没有标识区域设置(来自 Internet 的邮件通常是这样的),则使用执行全文索引的 Microsoft Exchange Server 2003 计算机的“系统区域设置”设置来确定断字符。

邮件附件

如果附件是 Microsoft Office 文档,则全文索引使用生成文档时所用的语言设置。

运行 Microsoft Windows 2000 Server 的服务器

如果邮件是非 MAPI 邮件(也就是来自 Internet 的邮件),则不设置“区域设置 ID”属性,这种情况下,全文索引使用服务器的“系统区域设置”设置来确定要使用的断字符。

客户端计算机

从 Microsoft Office Outlook 2003 发送查询时,也会发送客户端计算机的“区域设置 ID”。如果邮件的“区域设置 ID”与查询的“区域设置 ID”不匹配,则搜索结果是不可预知的。

note注意:
在此方案中,运行 Exchange Server 2003 的计算机的语言是不相关的。客户端计算机的设置优先发挥作用。

混合语言方案中的全文索引行为

下列方案描述使用各种语言设置时内容索引的查询行为。

全部使用美国英语语言设置

在 Outlook(运行在使用美国英语语言设置的客户端计算机上)中使用美国英语语言设置撰写邮件并将它提交到 Exchange Server 2003 时,如果 Exchange Server 2003 也运行在使用美国英语语言设置的 Windows Server 2003 上,则将发生下面的过程:

  1. 全文索引使用美国英语语言设置断字符对邮件编制索引。
  2. 使用美国英语语言设置的客户端计算机发出的查询将按照预期的效果被处理。

客户端计算机使用希伯来语语言设置,Office 使用美国英语语言设置,Windows 2000 Server 使用希伯来语语言设置

在此示例中,客户端计算机具有如下配置:

  • 客户端计算机使用希伯来语语言设置。
  • Office 使用美国英语语言设置。
  • Outlook 使用希伯来语语言设置。

如果在此示例中所述的客户端计算机上撰写一封邮件,并将其提交给“系统区域设置”设置为“美国”的 Exchange Server 2003,则会发生下面的过程:

  1. 全文索引使用美国英语断字符对邮件编制索引。邮件的“区域设置 ID”属性将随 Office 设置而默认为“美国”。
  2. 来自希伯来语客户端计算机的查询失败,因为希伯来语文档没有应用正确的断字符。

客户端计算机使用日语语言设置,Office 使用日语语言设置,Windows 2000 Server 使用美国英语语言设置

在此示例中,客户端计算机具有如下配置:

  • 客户端计算机使用日语语言设置。
  • Office 使用日语语言设置。
  • Outlook 使用日语语言设置。

如果在此示例中所述的客户端计算机上撰写一封邮件,并将其提交给“系统区域设置”设置为“美国”的 Exchange Server 2003,则会发生下面的过程:

  1. 全文索引使用日语断字符对邮件编制索引。
  2. 来自日语客户端计算机的查询将成功执行,因为对邮件编制索引和查询邮件使用的是同一“区域设置 ID”属性。

服务器启动过程中查询失败

在初始化过程中,在启动运行具有全文索引的 Exchange Server 2003 的计算机后的前几分钟内,用户可能收到邮件但收不到查询结果。之所以收不到查询结果,是因为 Microsoft Search 服务正在加载索引,Exchange Server 2003 正在加载属性存储。这些过程完成之后,查询才返回结果。

还原缺少的性能计数器

类似如下的事件消息说明缺少“性能日志和警报”服务及“性能”应用程序(也称为“系统监视器”)使用的计数器。如果收到这些消息之一,请重新启动 Microsoft Search 服务来还原计数器。有关这些监视应用程序的详细信息,请参阅 Windows 资源工具包。

Performance monitoring for the Gatherer service cannot be initialized because the counters are not loaded or the shared memory object cannot be opened. This only affects availability of the performance counters. Rebooting the system may fix the problem.

Performance monitoring cannot be initialized for the Gatherer object because the counters are not loaded or the shared memory object cannot be opened. This only affects availability of the performance counters. Rebooting the system may fix the problem.

Performance monitoring for the Indexer object cannot be initialized because the counters are not loaded or the shared memory object cannot be opened. Stop and restart the Search service. If this error continues, reinstall the application.

避免磁盘瓶颈

若要避免磁盘读写瓶颈,请遵循下列准则:

  • 应该监视磁盘队列长度。
  • 队列长度的平均值应小于独立磁盘冗余阵列 (RAID) 阵列中的心轴数。如果正在使用存储区域网络 (SAN),则建议您使用下列性能计数器来监视延迟:PhysicalDisk:Average Disk sec/ReadPhysicalDisk:Average Disk sec/Write
  • 有时此长度应该降至零。
  • 有时此队列应该是空的。队列中始终包含某个对象说明存在问题。
  • 每次磁盘写入和每次磁盘读取的平均时间应该接近于预期的延迟时间。对于一次磁盘写入或读取,系统应该花费大约 10 毫秒。如果配置了硬件缓存或 RAID 控制器,则时间可能更短。

高分页

内存到磁盘的高分页可能指示存在内存瓶颈。请检查性能计数器,并监视它们以发现警告标记。尤其是,要检查 Memory:Page writes/secMemory:Page reads/sec 计数器。