このページの本文へ

前へ 1 2 次へ

Windows Info 第238回

進化しているWindowsサーチ、そしてインデックス作成が重いときの対処法

2020年08月23日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

Windows 10の検索機能は19H1で改良
除外フォルダー以外全部を対象にできるようになった

 Windowsの検索機能である「Windowsサーチ」は、Windows 10 Ver.1903(19H1)から改良が続いている。しかし、新しい機能を使おうとすると、システムの負荷が定常的に上がったままになることがある。これは、インデックス作成のプロセスがずっと起動しているためだ。

インデックス作成が完了しないと、ファイル検索に時間がかかり、結局見つからないということが結構ある。その割にシステムの負荷が高いというのはちょっと納得できない

 Windowsサーチのインデックス作成プログラムは「Indexer」(インデクサー)と呼ばれ、SearchIndexer.exeが本体だ。このプログラムは、検索対象フォルダーをスキャンして、プロパティ(ファイル名や作成更新日時など)や、ファイル内部のキーワードを取り出し、検索を高速化するためのインデックスファイルを作成、維持するためにある。

 このあたりの基本的な話は、Windows 8.1時代に少し解説している。

●ASCII.jp:Windows標準のサーチ機能を活用する
 https://ascii.jp/elem/000/000/942/942736/
●ASCII.jp:Windowsの検索機能で用いられるサーチインデックスを制御する
 https://ascii.jp/elem/000/000/938/938533/

 基本的な仕組みは変わっていないのだが、19H1からは、対象をライブラリやデスクトップに限定しない「拡張」モードが搭載された。

19H1からは、検索に「拡張」モードが導入され、従来のWindowsサーチは「クラシック」モードと呼ばれるようになった

 これに対して従来の検索モードを「クラシック」と呼ぶ。そもそもそのようなモードがあるのは、対象ファイルが多すぎたときに、インデクサーがWindowsのCPU負荷を食い潰すからであった。そこで最初にVistaに搭載されるとき、インデックス化の対象を限定したわけだ。

 しかし、このときに対象であった「ライブラリ」はユーザーの利用頻度が低く、さらにWindows 10ではデフォルトでは表示されないものになってしまった。一般的なWindowsユーザーは、標準のドキュメントフォルダーに拘ることなく、さまざまな場所にデータを置いているのが現実だ。そうした場所にあるファイルが検索できないため、Windowsサーチはあまり役に立たないという評価に繋がった。そして、負荷を下げるためにWindows Searchサービス(WSearch)を止めてしまうユーザーも出てきたわけだ。

 こうした状況を改善しようとする動きが始まったのが19H1からで、当初はコルタナと統合されていたWindowsサーチが分離され、別アイコンとしてタスクバーに設置され、サーチのフライアウトが改良された。こちらはBing検索と統合されているため、Windowsのアップデートとは直接連動せず、ときどき変更がなされている。

 その後の大きな動きとしては、エクスプローラーとWindowsサーチの統合が挙げられる。これまで、エクスプローラーからWindowsサーチを使うことはできたが、Windowsサーチがインデックス化対象を限定していたため、エクスプローラーで選択中のフォルダーがインデックス化対象になっている可能性は低く、その場で検索を開始していた。

 しかし、環境によっては膨大なファイルがあり、これを片端からスキャンしていくような処理は、いつまでたっても終わらない可能性がある。たとえば、マイコンピューターなど、システムのストレージ全体を含むような場所での検索は、答えが出る前にユーザーが諦めるか、Windowsが適当なところで中断して「検索条件に一致する項目はありません」といった結果になりやすい。その割には、システム負荷が高くなるのは、我慢できないと考えるのは“普通”の感覚だろう。

 しかし、Windowsサーチは20H1でも改良が進んでいる。エクスプローラーのサーチ機能が改良され、インデックス情報を使って、検索ボックスにキーワード候補を表示できるようになった。

現在では、Windowsサーチ機能によりエクスプローラーの検索欄に検索候補が表示されるようになった

 また、従来のエクスプローラーのファイルウィンドウでは、アルファベット文字を入力すると、該当フォルダー内でその文字を先頭に持つフォルダー、ファイルが選択状態となったが、これが検索欄への入力に変わった。正しくファイルやフォルダーが選択できることが多いが、従来に比べて一呼吸待たねばならない。長年、ローカルフォルダーを先頭一致でファイルを選択していた筆者にとってはつらい「改良点」でもあるのだが。

インデックス処理がいつまでも終わらない

 Windowsを使っていてなんとなく負荷が高いんじゃないか? という感じがあったら、まずはタスクマネージャーやリソースモニターで、SearchIndexer.exeのCPU負荷を見てみよう。ただし、インデクサーは、ユーザーのファイル書き換えや外部からのファイルコピーなどのタイミングで、ときどき動作している。また、機能アップデートなどがあると、インデックスを最初から作り直すこともあるようだ。

 リソースモニターでは、特定のプロセスを追いかけて、CPU負荷をグラフに表示する機能があるので、「CPU」タブで「searchindexer.exe」を探して、先頭のチェックボックスをオンにする。すると、左側のグラフでチェックをオンにしたプロセスが占める負荷状態がオレンジの線で表示される。ここが「数日」以上ゼロにならないようなら、インデックス作成のトラブルを疑ったほうがいい。

リソースモニターには、特定のプロセスのCPU負荷をオレンジのラインで表示する機能がある

 「設定」→「検索」→「Windowsの検索」→「インデックスステータス」を見てみよう。

インデックスステータスで「保留中」がゼロになると、インデックス化が完了したことになるが、「インデックス付けされた項目」がゼロに戻り、インデックス化処理を繰り返すことがある

 ここにインデクサーが処理したアイテム数と未処理のアイテム数が表示されている。「インデックス付けされた項目」の数が増え、「保留中」の数が減っていくのが通常動作だが、インデックス作成中にエラーが起きると、前者の数が激減して、後者の「保留中」の数が大きくなる。この状態を繰り返しているようなら、インデックス作成中にエラーが発生し、処理が終わらない状態だ。

 19H1のアップデート以来、検索モードを「拡張」にすると、対象から明確に外されたフォルダー以外は、インデックス化の対象になる。このインデックス化の処理では、途中でエラーが起こることがある。原因は不明だが、インデクサーがエラーとなり、結果的にインデックス化処理を最初からやり直す。このため、長時間インデクサーが動作することになる。

 ただし、エラーが起こってやり直しになるのは、Windowsアップデートなど、ファイルシステムが変わったときの初回のインデックス化の処理で、その後は修正されたファイルのみインデックス化処理となり、最初からやり直すことはないようだ。おそらく、初回のインデックス化処理を終わらせてしまえば、多少のエラーがあっても、インデックスの再構築にはならないのであろう。

 簡単な対策として、検索モードを「クラシック」とする方法もある。筆者の環境では、19H1へのアップデート以後、インデクサーがエラーを繰り返すと、「拡張」に設定した検索モードが、いつのまにか「クラッシック」に戻されていた。本当にどこにあるかわからないファイルを探すのが面倒になるが、19H1以前はこれが標準だったので、今までファイル探しで検索機能に頼ったことがほとんどないというような場合には有効な対策かもしれない。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン