web-dev-qa-db-ja.com

Windows 7:検索のインデックス作成がスタックしている

インデックス作成オプションを開くと、次のように表示されます。

4,317項目が索引付けされています索引付けが進行中です。この間、検索結果が完全でない場合があります。

それでも、4,317のままです。これ以上インデックスが作成されたアイテムはありません。最悪の場合、SearchIndexer.exeは100%のCPUを使用しています(まあ、50%ですが、デュアルコアCPUを搭載しています。可能な限りすべての処理能力を使用しています)。ただし、ハードドライブアクティビティは発生していません。

[インデックス作成オプション]ウィンドウの下部にある[検索とインデックス作成のトラブルシューティング]をクリックしてみましたが、問題は見つかりませんでした。

また、いくつかのWebサイトが提案する修復レジストリキーも試しました。 HKLM\SOFTWARE\Microsoft\Windows Search SetupCompletedSuccessfullyを0に変更してコンピューターを再起動しましたが、コンピューターが1に戻ったために修復されたようですが、同じ問題が引き続き発生します。

それは私のラップトップのバッテリー寿命を減らし、私のファンがいつも走っているようにそれを本当に熱くしています。 Windows Searchサービスを無効にする必要がありました。どうすれば修正できますか?コンピューターを完全に再フォーマットする必要がありますか?


更新:
数回再構築を試みました。インデックスに登録する必要のある場所に異常はありません。進行中のダウンロードなどはありません。停止した理由はわかりませんが、システムの復元を行うには遅すぎることに気づきました。この時点で、私は誰かが問題を解決するいくつかの秘密の答えを提供することを望んでいます。


別の更新:
サービスをもう一度開始しようとしましたが、もう一度試してみました。最初は問題ないように見えました(インデックス作成オプションは、ユーザーアクティビティのために速度が低下していることを示し、ファイル数が増加していました)。しばらくして確認したところ、サービスが停止していた。イベントビューアは、次のようないくつかのエラーを明らかにしました:

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検索からここにたどり着いた場合は、コメントするか、もしあれば、これの進捗状況を詳しく説明する回答を追加してください...

13
Ricket

ハングアップの原因となる破損したファイルがあると言ったら、あなたは正しいと思います。ファイルを識別しようとする大雑把な方法は、[ファイル]タブに移動して、ファイルタイプの半分のインデックス作成をオフにすることです。実行してみましょう。完了するか、停止します。止まってしまったら、もう一度半分を切ってください。それが完了すると、不正なファイルタイプが残りの半分にあることがわかります。これを行うと、不正なファイルタイプを特定できるようになります。

また、インデックスが作成されているファイルリストを確認します。ファイルタイプには、HTML、プレーンテキストなど、さまざまな検索プロバイダーがあります。いくつかのサードパーティ製アプリケーションによってインストールされた可能性がある、場違いに見えるものはありますか?

別のアイデアは、4,317番目のファイルで検索を停止させることです。次に、コマンドプロンプトを実行します。タイプ

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

これにより、すべてのファイルと最後にアクセスされた時刻を保持するnewt.txtという名前のファイルが作成されます。アクセス、つまり読み取り、変更なし。ファイルエディタでファイルを検索する必要がありますが、変更された最後のいくつかのファイルを探します。運が良ければ、悪いファイルがそこにあるでしょう。幸運を!

8
Knox

まず最初に、インデックスを再構築してください。また、一時的/未完了のダウンロードがあるフォルダのインデックス作成から除外します。未完成のファイルは定義により破損しており、プロセスがハングする可能性があります。インデックス作成でメタデータを検索すると、ビデオ/オーディオコーデックもハングする可能性があります。

alt text

4
mtone

Outlook.pstファイルの不良が原因で検索が行き詰まりました。 Outlook 2007実行可能ファイルと同じディレクトリにあるpst修復ユーティリティ_SCANPST.EXE_を実行しました(Windows 7 x64マシンではC:\Program Files (x86)\Microsoft Office\Office12)。

enter image description here

4
glenviewjeff

この情報は Technetフォーラム で見つかりました

既知のバグのようです:

  1. PCに2つ(または複数)のドライブまたはパーティションがある

  2. ユーザープロファイルとWindowsは、最初のドライブまたはパーティションにあります(ドライブ文字C:と想定)。

  3. 2番目のドライブまたはパーティションには、最初のドライブまたはパーティションよりも利用可能な空きディスク領域があります(ドライブ文字D:を想定)。

  4. USMT 4とハードリンクを使用するConfigMgr 2007 OSD更新タスクシーケンスがPCで実行されると、ユーザーファイルと設定のキャプチャ "/"ユーザー状態のキャプチャ "タスクは成功しますが、"ユーザー状態の復元 "/"ユーザーファイルと設定の復元 " "タスクは失敗します。

解決

この問題を解決するには、変数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タスクをクリックします。タスクが変数OSDStateStorePathを設定するSet Task Sequence Variableタスクであることを確認してください。

Value:テキストフィールドの横で、%_SMSTSUserStatePath%から%SystemDrive%\UserStateに変更します

  1. [OK]または[適用]ボタンをクリックして、タスクシーケンスを保存します。 「ローカル状態の場所の設定」タスクが存在しない場合は、変数OSDStateStorePathを設定する「タスクシーケンス変数の設定」タスクを探して、上記の変更を行います。 MDT 2010/MDT 2010 Update 1統合を使用している場合は、変数「OSDStateStorePath」を再定義する「ローカルまたはリモートのUserStateの決定」タスクの後に、新しい「タスクシーケンス変数の設定」タスクを追加する必要があります。

  2. ConfigMgr 2007管理コンソールで、Computer Management-> Operating System Deployment-> Task Sequencesノードに移動します。

  3. 影響を受けるタスクシーケンスを右クリックし、[編集]を選択します。

  4. 「ローカルまたはリモートのUserStateの決定」タスクをクリックし、「追加」->「一般」->「タスクシーケンス変数の設定」に移動します。これにより、「ローカルまたはリモートのUserStateの決定」タスクの後で、「状態ストアの要求」タスクの前に、「タスクシーケンス変数の設定」タスクが作成されます。

  5. 新しく作成された「タスクシーケンス変数タスクの設定」で:

    • Name:テキストボックスの横に、次のように入力します:Set Local State Location
    • Task Sequence Variable:テキストボックスの横にOSDStateStorePathと入力します
    • Value:テキストボックスの横に、次のように入力します:%SystemDrive%\StateStore
  6. [OK]または[適用]ボタンをクリックして、タスクシーケンスを保存します。

手順3でタスク「ローカルまたはリモートのUserStateを決定する」が存在しないか、名前が変更されている場合は、スクリプトztiuserstate.wsfを実行する「コマンドラインの実行」タスクを探し、上記の手順に従ってください。

4
Richard Webb

ここで尋ねられた質問の1つは、SearchIndexer.exeがブロックされているか、障害が発生しているか、ハングしているか、またはまだ進行中かどうかを確認する方法に関するものでした。また、現在インデックスが作成されているファイルを確認することもできます。

確認する方法は次のとおりです。

Microsoftはこれを表示するためのツールをすぐには提供していません。MSS.log(後で他の名前でコピーおよび変更されてから削除される)などの検索中に作成されるログファイルはバイナリファイルであり、特別なツールを使用しない限り読み取ることができません。

それが単一のファイルに掛かっているかどうかを調べようとしたもう1つの方法は、 SysInternalのProcess Monitor を修正することでした。フィルターを次のように設定します。

  • インクルードプロセスSearchProtocolHost.exe(注:notSearchIndexer.exe)、
  • イベントタイプを含むFile System
  • C:\WindowsおよびC:\ProgramDataディレクトリ、
  • および/または実際にインデックスを作成するディレクトリを含める、
  • オプションで、OperationをReadFileに設定します。
  • [適用]または[OK]をクリックしてから、左上の[キャプチャ]ボタンをクリックします。

結果のイベントビューは、Microsoft Search Indexサービスによって現在読み取られているすべてのReadFile操作(およびその他の操作)を提供します。

これはReadFile操作の長いリストである必要があり、現在インデックスが作成されているファイルは[パス]列にあります。結果列にはSUCCESS(表示されない場合は問題があります)が表示され、詳細列には別のオフセットが連続して表示されるはずです(表示されない場合はループしています。これも問題の原因の可能性のあるヒントです) )。

2
Abel

ハードドライブが故障していないことを確認しましたか?

ドライブを右クリックして[プロパティ]ダイアログを開き、[ツール]タブに移動して、エラーチェックを実行します(不良セクタースキャンを使用)。

2
Mr Fooz