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からは、対象をライブラリやデスクトップに限定しない「拡張」モードが搭載された。
これに対して従来の検索モードを「クラシック」と呼ぶ。そもそもそのようなモードがあるのは、対象ファイルが多すぎたときに、インデクサーがWindowsのCPU負荷を食い潰すからであった。そこで最初にVistaに搭載されるとき、インデックス化の対象を限定したわけだ。
しかし、このときに対象であった「ライブラリ」はユーザーの利用頻度が低く、さらにWindows 10ではデフォルトでは表示されないものになってしまった。一般的なWindowsユーザーは、標準のドキュメントフォルダーに拘ることなく、さまざまな場所にデータを置いているのが現実だ。そうした場所にあるファイルが検索できないため、Windowsサーチはあまり役に立たないという評価に繋がった。そして、負荷を下げるためにWindows Searchサービス(WSearch)を止めてしまうユーザーも出てきたわけだ。
こうした状況を改善しようとする動きが始まったのが19H1からで、当初はコルタナと統合されていたWindowsサーチが分離され、別アイコンとしてタスクバーに設置され、サーチのフライアウトが改良された。こちらはBing検索と統合されているため、Windowsのアップデートとは直接連動せず、ときどき変更がなされている。
その後の大きな動きとしては、エクスプローラーとWindowsサーチの統合が挙げられる。これまで、エクスプローラーからWindowsサーチを使うことはできたが、Windowsサーチがインデックス化対象を限定していたため、エクスプローラーで選択中のフォルダーがインデックス化対象になっている可能性は低く、その場で検索を開始していた。
しかし、環境によっては膨大なファイルがあり、これを片端からスキャンしていくような処理は、いつまでたっても終わらない可能性がある。たとえば、マイコンピューターなど、システムのストレージ全体を含むような場所での検索は、答えが出る前にユーザーが諦めるか、Windowsが適当なところで中断して「検索条件に一致する項目はありません」といった結果になりやすい。その割には、システム負荷が高くなるのは、我慢できないと考えるのは“普通”の感覚だろう。
しかし、Windowsサーチは20H1でも改良が進んでいる。エクスプローラーのサーチ機能が改良され、インデックス情報を使って、検索ボックスにキーワード候補を表示できるようになった。
また、従来のエクスプローラーのファイルウィンドウでは、アルファベット文字を入力すると、該当フォルダー内でその文字を先頭に持つフォルダー、ファイルが選択状態となったが、これが検索欄への入力に変わった。正しくファイルやフォルダーが選択できることが多いが、従来に比べて一呼吸待たねばならない。長年、ローカルフォルダーを先頭一致でファイルを選択していた筆者にとってはつらい「改良点」でもあるのだが。
インデックス処理がいつまでも終わらない
Windowsを使っていてなんとなく負荷が高いんじゃないか? という感じがあったら、まずはタスクマネージャーやリソースモニターで、SearchIndexer.exeのCPU負荷を見てみよう。ただし、インデクサーは、ユーザーのファイル書き換えや外部からのファイルコピーなどのタイミングで、ときどき動作している。また、機能アップデートなどがあると、インデックスを最初から作り直すこともあるようだ。
リソースモニターでは、特定のプロセスを追いかけて、CPU負荷をグラフに表示する機能があるので、「CPU」タブで「searchindexer.exe」を探して、先頭のチェックボックスをオンにする。すると、左側のグラフでチェックをオンにしたプロセスが占める負荷状態がオレンジの線で表示される。ここが「数日」以上ゼロにならないようなら、インデックス作成のトラブルを疑ったほうがいい。
「設定」→「検索」→「Windowsの検索」→「インデックスステータス」を見てみよう。
ここにインデクサーが処理したアイテム数と未処理のアイテム数が表示されている。「インデックス付けされた項目」の数が増え、「保留中」の数が減っていくのが通常動作だが、インデックス作成中にエラーが起きると、前者の数が激減して、後者の「保留中」の数が大きくなる。この状態を繰り返しているようなら、インデックス作成中にエラーが発生し、処理が終わらない状態だ。
19H1のアップデート以来、検索モードを「拡張」にすると、対象から明確に外されたフォルダー以外は、インデックス化の対象になる。このインデックス化の処理では、途中でエラーが起こることがある。原因は不明だが、インデクサーがエラーとなり、結果的にインデックス化処理を最初からやり直す。このため、長時間インデクサーが動作することになる。
ただし、エラーが起こってやり直しになるのは、Windowsアップデートなど、ファイルシステムが変わったときの初回のインデックス化の処理で、その後は修正されたファイルのみインデックス化処理となり、最初からやり直すことはないようだ。おそらく、初回のインデックス化処理を終わらせてしまえば、多少のエラーがあっても、インデックスの再構築にはならないのであろう。
簡単な対策として、検索モードを「クラシック」とする方法もある。筆者の環境では、19H1へのアップデート以後、インデクサーがエラーを繰り返すと、「拡張」に設定した検索モードが、いつのまにか「クラッシック」に戻されていた。本当にどこにあるかわからないファイルを探すのが面倒になるが、19H1以前はこれが標準だったので、今までファイル探しで検索機能に頼ったことがほとんどないというような場合には有効な対策かもしれない。
この連載の記事
-
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 - この連載の一覧へ