Windows 7:搜索索引卡住了


13

当我打开索引选项时,它说:

4,317项正在建立索引的索引。在此期间搜索结果可能不完整。

不过它停留在4,317;没有更多的项目被索引。最糟糕的是,SearchIndexer.exe占用了100%的CPU(嗯,是50%,但是我有一个双核CPU;它占用了所有可能的处理能力)。虽然这不会引起硬盘驱动器活动。

我尝试单击“索引选项”窗口底部的“对搜索和索引进行故障排除”,但找不到任何问题。

我还尝试了几个网站建议的修复注册表项。我将HKLM \ SOFTWARE \ Microsoft \ Windows Search SetupCompletedSuccessally更改为0,然后重新启动了计算机,显然它已修复,因为它翻转回了1,但相同的问题继续发生。

这会减少笔记本电脑的电池寿命,并使笔记本电脑真正发热,从而使风扇一直运转。我不得不禁用Windows搜索服务。我怎样才能解决这个问题?我是否需要重新格式化计算机?


更新:
我尝试重建几次。我必须索引的位置并没有什么异常,我也没有正在进行的下载或类似的下载。我没有看到它停止的任何原因,并且发现进行系统还原为时已晚。在这一点上,我希望有人能提供一些秘密答案,以解决问题,从而解决问题。


另一个更新:
我尝试再次启动该服务,只是让它再次尝试。起初看起来还不错(“索引选项”显示由于用户活动而使其运行速度降低,并且文件数量正在增加)。过了一会儿,我检查了一下,该服务已停止。事件查看器显示了一些错误,如下所示:

Log Name:      Application
Source:        Application Error
Date:          2/1/2010 7:34:23 PM
Event ID:      1000
Task Category: (100)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      ricky-win7
Description:
Faulting application name: SearchIndexer.exe, version: 7.0.7600.16385, time stamp: 0x4a5bcdd0
Faulting module name: NLSData0007.dll, version: 6.1.7600.16385, time stamp: 0x4a5bda88
Exception code: 0xc0000005
Fault offset: 0x002141ba
Faulting process id: 0x13a0
Faulting application start time: 0x01caa39f2a70ec02
Faulting application path: C:\Windows\system32\SearchIndexer.exe
Faulting module path: C:\Windows\System32\NLSData0007.dll
Report Id: b4f7a7ae-0f92-11df-87fc-e5d65d8794c2
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Application Error" />
    <EventID Qualifiers="0">1000</EventID>
    <Level>2</Level>
    <Task>100</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2010-02-02T00:34:23.000000000Z" />
    <EventRecordID>10689</EventRecordID>
    <Channel>Application</Channel>
    <Computer>ricky-win7</Computer>
    <Security />
  </System>
  <EventData>
    <Data>SearchIndexer.exe</Data>
    <Data>7.0.7600.16385</Data>
    <Data>4a5bcdd0</Data>
    <Data>NLSData0007.dll</Data>
    <Data>6.1.7600.16385</Data>
    <Data>4a5bda88</Data>
    <Data>c0000005</Data>
    <Data>002141ba</Data>
    <Data>13a0</Data>
    <Data>01caa39f2a70ec02</Data>
    <Data>C:\Windows\system32\SearchIndexer.exe</Data>
    <Data>C:\Windows\System32\NLSData0007.dll</Data>
    <Data>b4f7a7ae-0f92-11df-87fc-e5d65d8794c2</Data>
  </EventData>
</Event>

如果您遇到相同的错误并通过Google搜索到达此处,请发表评论或添加答案,详细说明您在此方面的进展...


4
顺便说一句...有谁知道找出这个神奇的4,317项是什么的方法吗?我很想知道是否只有一个格式错误的文件阻塞了整个系统。
Ricket '02

您可以在此处使用称为ESEDatabaseView的某个位置打开Windows.edb文件:nirsoft.net/utils/ese_database_view.html
2016年

Answers:


8

当您说有一个损坏的文件导致挂起时,我认为您可能是正确的。尝试识别文件的一种粗略方法是转到“文件”选项卡,然后关闭一半文件类型被索引。让它运行。它完成还是停止。如果停止,请再次关闭一半。如果完成,您就知道错误的文件类型在另一半。这样做应该可以识别错误的文件类型。

另外,浏览被索引的文件列表。文件类型具有不同的搜索提供程序,例如HTML,纯文本等。是否有任何看起来不合适的东西,可能是某些第三方应用程序已经安装的?

另一个想法是让搜索挂起第4,317个文件。然后运行命令提示符。类型

CD c:\
DIR /s /TA /O-D >c:\newt.txt

这将创建一个名为newt.txt的文件,该文件将保存所有文件以及上次访问它们的时间。已访问,表示已读取,未修改。您将必须使用文件编辑器搜索文件,但要查找最后修改的几个文件。如果我们很幸运,那么您的错误文件将在那里。祝好运!


不错的提示(第二个想法)。索引器不保留某些位置的文件日志记录吗?它可以让我们看到成功索引的最后一个文件,并且也许可以通过这种方式获得线索。
mtone

@mtone-是否可以一次索引一个文件夹?它将缩小搜索范围。
Nifle

@Nifle-是的,减少索引文件夹的数量也将是一个合理的调查。在开始菜单下,键入“索引”,然后单击索引选项。该面板列出了您要建立索引的位置。
诺克斯

@Knox +1是第一个想法。您建议删除[二元]搜索。如果你与你的缺陷的可能性的理解修改,并限制索引这些第一,那么你可以得到很多优于O(LOG2 N)加速。
ElderDelp

4

我在Technet论坛上找到了这些信息

这似乎是一个已知的错误:

  1. PC具有两个(或多个)驱动器或分区

  2. 用户配置文件和Windows位于第一个驱动器或分区上(假定驱动器号为C :)

  3. 第二个驱动器或分区具有比第一个驱动器或分区更多的可用磁盘空间(假定驱动器号D :)

  4. 在PC上运行使用USMT 4进行硬链接的ConfigMgr 2007 OSD刷新任务序列,然后捕获用户文件和设置” /“捕获用户状态”任务将成功,但是“恢复用户状态” /“恢复用户文件和设置”任务将失败。

解析度

若要解决此问题,必须将变量OSDStateStorePath更改为其默认值。使用MDT 2010 / MDT 2010 Update 1集成时,必须在“确定本地或远程UserState”任务中通过ztiuserstate.wsf脚本设置变量后,才能重新定义该变量。

为确保将状态存储保存到安装Windows和用户配置文件所在的同一驱动器/分区,可以将环境变量SystemDrive用作定义变量OSDStateStorePath的路径的一部分。

如果MDT 2010 / MDT 2010 Update 1的整合没有被使用,在“设置任务序列变量”任务设置变量OSDStateStorePath需要进行修改:

  1. 在ConfigMgr 2007管理控制台中,导航到Computer Management-> Operating System Deployment-> Task Sequences节点。

  2. 右键单击受影响的任务序列,然后选择“编辑”。

  3. 单击Set Local State Location任务。确保该任务是Set Task Sequence Variable设置变量的任务 OSDStateStorePath

Value:文本字段旁边,将其从更改%_SMSTSUserStatePath%%SystemDrive%\UserState

  1. 单击“确定”或“应用”按钮以保存任务序列。如果“设置本地状态位置”任务不存在,请查找设置变量OSDStateStorePath的“设置任务序列变量”任务,然后进行上面的更改。如果使用MDT 2010 / MDT 2010 Update 1集成,则需要在重新确定变量OSDStateStorePath的“确定本地或远程UserState”任务之后添加新的“设置任务序列变量”任务:

  2. 在ConfigMgr 2007管理控制台中,导航到Computer Management-> Operating System Deployment-> Task Sequences节点。

  3. 右键单击受影响的任务序列,然后选择“编辑”。

  4. 单击“确定本地或远程用户状态”任务,然后转到“添加”->“常规”->“设置任务序列变量”。这应该在“确定本地或远程用户状态”任务之后但在“请求状态存储”任务之前创建“设置任务序列变量”任务。

  5. 在新创建的“设置任务序列变量任务”中:

    • Name:文本框旁边,输入:Set Local State Location
    • Task Sequence Variable:文本框旁边,输入 OSDStateStorePath
    • Value:文本框旁边,输入:%SystemDrive%\StateStore
  6. 单击“确定”或“应用”按钮以保存任务序列。

如果在步骤3中任务“确定本地或远程用户状态”不存在或已被重命名,请查找运行脚本ztiuserstate.wsf的“运行命令行”任务,然后执行上述步骤。


4

首先,请尝试重建索引。另外,请排除索引具有临时/未完成下载的任何文件夹的可能性。根据定义,未完成的文件已损坏,可能会挂起进程。如果索引在其中查找元数据,则视频/音频编解码器也可能会挂起。

替代文字


您能否详细说明元数据注释?如果某处某处阻塞了此事,也许它将帮助我想到它。
Ricket 2010年

索引试图通过查看文件来获取元数据。某些类型的文件(例如AVI电影文件)需要编解码器(或容器加载器,通常也称为编解码器)打开这些文件并获取分辨率,长度等。如果文件损坏,该编解码器可能会挂起。也就是说,到目前为止,我在Windows 7中还没有遇到该问题,但是在XP中,它曾经是一个常见问题。
mtone 2010年

4

由于不良的Outlook.pst文件,我的搜索被阻止了。我运行了pst修复实用程序SCANPST.EXE,该实用程序位于与Outlook 2007可执行文件相同的目录中(C:\Program Files (x86)\Microsoft Office\Office12在Windows 7 x64计算机上)。

在此处输入图片说明


1
文件名为SCANPST.EXE
M. Dudley

2

您是否已验证硬盘没有损坏?

右键单击驱动器,打开“属性”对话框,转到“工具”选项卡,然后执行错误检查(扇区扫描错误)。


是的,这是确保基本功能正常运行的好主意。同时检查事件日志中是否存在系统错误。
诺克斯

2

此处提出的问题之一是关于如何查看SearchIndexer.exe是否被阻止,出现故障或挂起,或者是否仍在进行。另外,很高兴看到当前正在索引的文件。

这是一种找出答案的方法。

Microsoft不会轻易为您提供查看此文件的工具,在搜索过程中创建的日志文件(例如MSS.log)(后来复制并更改为其他名称,然后删除)都是二进制文件,除非使用特殊工具才能读取。

我试图找出它是否挂在单个文件上的另一种方法是建立SysInternal的Process Monitor。我将过滤器设置如下:

  • 包含过程SearchProtocolHost.exe(注意:不是 SearchIndexer.exe),
  • 包括事件类型File System
  • 排除C:\WindowsC:\ProgramData目录中的任何内容,
  • 和/或包括您实际上正在索引的目录,
  • (可选)将操作设置为ReadFile
  • 单击“应用”或“确定”,然后单击左上方的“捕获”按钮。

结果事件视图为您提供ReadFile了Microsoft搜索索引服务当前正在读取的所有操作(以及其他一些操作)。

它应该是一长串ReadFile操作,并且当前正在索引的文件在“路径”列中。“结果”列应显示SUCCESS(如果不是,则是您的问题),“详细信息”列应连续显示一个不同的偏移量(如果不是,则为循环,这再次可能是导致问题的原因)。


1
+1 @Able Sys | nternals的链接仍然有效! 这是另一套将提供完整的
SysInternals
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.