Windows10の検索が遅かったり、ある筈のファイルが検索結果に表示されない原因が判明!
投稿日:2019/3/24 更新:2023/2/14 コメント 0件 Windows Windows 10, インデックス作成, エクスプローラー, 検索, 遅いWindows10(Ver.1809)で「このドライブ上のファイルに対し、プロパティだけでなくコンテンツにもインデックスを付ける」にチェックを入れているとそのドライブにあるファイルを検索する時はすべて速くなるものと思っていたんですが、Windows10の検索は遅いし、ある筈のファイルが検索結果に表示されないということがよくあってその原因がインデックス作成にあるようなのでちょっと調べてみました。
目次
インデックスとは
インデックスとはファイルの情報をあらかじめ集めておき、検索された時にすぐに必要なファイルを表示できるようにする辞書でいうと目次のような機能です。この機能はテキストファイルなどの文字列の情報も登録できるので文書内の言葉で検索を掛けることもできたりします。
検索が遅かったりある筈のファイルが検索結果に表示されない原因
「インデックスのオプション」を見ると「687,588個のインデックスが作成されました。インデックスの作成は完了しました。」と表示されてはいるんですが明らかにファイル数が少ない感じでした。
因みに同じフォルダが複数あるのは最初はバックアップ用のものかと思ったんですがアドレスを調べると同じものでなんかおかしなことになっていました。
「変更」をクリックすると「インデックスされた場所の変更」という画面が表示されるんですが、インデックスをしたい「data」フォルダにはチェックが入っておらず、ほとんど使用していないユーザーフォルダや訳の分からないフォルダが選択されていました。
つまりHDDのほんの一部しかインデックスに登録されていなかったためにWindows10の検索が遅い、またはある筈のファイルが見つからないという事態に陥っていた訳です。
そもそもなぜインデックスされなかったのか?
多くの方はデフォルトで用意されているピクチャーやドキュメントなどのユーザーフォルダにデータを保存するかと思いますが、ユーザーフォルダはデフォルトではシステムディスクにあるのでOSがクラッシュしたらデータにアクセスできなくなる恐れがありますし、ユーザーフォルダの場所は別の場所にすることも可能なんですがそうするとOSの再インストールをする時にその再設定が結構面倒なんですよね。
そんな感じで1~2年のスパンでOSの再インストールをやる身としてはユーザーフォルダは邪魔なだけの存在なので最近はシステムデータ(M.2 SSD)と個人データ(HDD)を完全に分離してユーザーフォルダをほとんど使ってないのでインデックスに登録されなかったんだと思います。
ユーザーフォルダを使わないとHDDをポン付けするだけでいいですし、インストール不要の常駐ソフトはドライブ文字さえ正しく設定していればHDDを接続しただけで今までと同じような感覚で使えるので環境の再構築がとてもはかどる利点もあります。
インデックスされるフォルダを指定する
下の「選択された場所の要約」に表示されるフォルダを選択すると上のリストに詳細な場所が表示されます。
取り敢えずリセットする意味合いでチェックの入っているところをすべて外すと「選択された場所の要約」の内容が消えて無くなりました。
インデックスさせたい「data」フォルダだけチェックを入れると「除外」という先にインデックスを作成されていたと思われるフォルダが表示されていたので上のリストを確認すると案の定、プログラムフォルダなどの一部のフォルダのチェックが漏れていました。
すべてチェックを入れると除外リストも表示されなくなりました。
あとはシステムが自動でインデックスを作成してくれるのでじっと待つだけです。バックオフを無効にしたりしたので正確なところは分かりませんがだいたい4時間ほどで完了しました。完了後にデータフォルダを検索するとすぐに結果が表示さて効果は明らかでした。
インデックス作成中の挙動
インデックス作成が開始されると「インデックスを作成中です。その処理中、検索結果は完全ではない可能性があります。」と表示されていたので検索してみました。
「logocool」というファイルがあるフォルダを検索すると…。
確実にあるのに検索では引っかかりません。つまりまだインデックス登録されていないということです。
因みにインデックス作成中に検索するには「フォルダオプション」を開いて「ファイル システムのファイル フォルダーの検索中にインデックスを使用しない(検索に時間が掛かる場合があります)」にチェックを入れておくとインデックスに登録されていなくても検索することができます。ただ、検索にちょっと時間が掛かるみたいです。
タスクマネージャでdataドライブ(G:)を見ると10%前後にディスクアクセスであり、一生懸命に裏で作業しているみたいです。
暫くすると「インデックス作成の速度は他の処理により遅くなっています。」と表示が変わりました。
「インデックスのオプション」ウィンドウを閉じても再度開けば処理の進捗状況を確認することができ、作業が完了したら下図のように「インデックスの作成は完了しました。」と表示されます。
インデックスデータは以下のディレクトリーに保存されれてるそうです。
C:\ProgramData\Microsoft\Search\Data
インデックスはまだ作成中ですがすでに容量は4.3GBになっていました。最終的には7.0GBほどになってました。
バックオフを無効にする
インデックスに登録されるのが遅く感じたのでバックオフを無効にしてみました。
バックオフ機能といってインデックス作成は大量のファイルアクセスが発生してシステム全体が重たくなるので他のプログラムが活発な時にはインデックスの作成を行わないよう制御しているそうなんですが、このバックオフ機能をオフにして強制的にインデックスを作成させることも可能なようなのでやってみました。詳しくはリンク先に記事に書かれているのでそちらを参考にして下さい。尚、レジストリーを弄るので真似される方はご注意ください。
- レジステリを開く
- コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Windows Searchを開く
- 「Windows Search」キーがない場合は新規作成
- 新たにDWORD値「DisableBackoff」を作成
- DWORD値「DisableBackoff」のデータ値を「1」に変更
上記操作を行ったらPCを再起動します。
再起動後、ディスクアクセスを見ると50%近くになっていました。おそらく全速力でインデックスされているだと思いますがインデックスされたファイル数が目に見えて増えていくので気持ちいいです。
インデックス作成の一時停止
一時停止ボタンがあったので押してみたら止まったまま再開することができなくなりました。調べたら「一時停止」は、15分間のみ停止され、15分後に自動的に再開される、ということで待っていたらホントに15分したらインデックスの作成が再開しました。
インデックス作成中にスリープに移行させない方法
スリープに移行するかどうかも分かりませんがなるべく早くインデックスを作成させたいのでSleepToolで「SearchIndexer.exe」を監視プロセスにスリープに移行しないようにしておきました。