Windowsのファイル検索を高速化するインデックスの作成方法

前回の「Windows7のファイル検索のコツとその仕組み」を読んでいただいた方、
ありがとうございます。

今回は、インデックスを使った検索システムについて話をしようと思います。

今まで、インデックスについて触れることを避けて話をしてきました。
というのもインデックスがからむと、ややこしくなるからです。
何がややこしいかというと、同じフォルダ、同じ検索語で検索をしても
インデックスの有無で検索の結果が大きく異なるからです。

さらに、インデックスの作成中も、
まだインデックスが作成されていないファイルは検出されなくなります。
この時、ファイルが存在しているにも関わらず、
あたかもファイルが存在していないかのように見えます。

インデックスを使用して、ファイルが検索できるようになるには、
インデックスの完成を待つ必要があります。
しかし、マウスを触っているだけで、インデックスの作成はかなり遅くなり、
場合によって数時間、パソコンを放置しないとインデックスが完成しないこともあります。

但し、インデックスの作成の対象となっていないファイルに関しては、
自動的にインデックスを使用しない方の検索が始まります。
その時、上に黄色いバーが現れ、インデックスを追加するように促してきますが、
インデックスに追加してしまうと、やはり、完成まで一時的に検出されない状態になります。

インデックスが完成した後は検索が速くなりますが、
インデックスを作成するのにかかる時間は、
インデックスがない状態で検索を一回する時間よりも、はるかにかかります。

従って、一回しか検索しない場合や、急いでファイルを探しているときに、
インデックスに追加すると、かえって遅くなりますので注意してください。
(インデックス作成中でもインデックスを使用しないで検索する方法はあります。
あとでその方法を紹介します)


インデックスが作成されていない場所で、
黄色いバーをクリックしてインデックスに追加すると


インデックスが完成するまで、一時的に検索できなくなります。

インデックスの有無で検索の結果が変わることもあります。
例えば、「1234 TEXT.txt」というファイルに対し、
検索語を「名前:12*.txt」としたとします。
インデックスを使用していない場合、このファイルは検出されますが、
インデックスを使用している場合、このファイルは検出されません。
このようなことを防ぐためにも、検索語は「名前:~"12*.txt"」としましょう。
(検索語をダブルクォーテンションマークで囲み、前にチルダをつけると、
どちらでも検出できるようになります)



インデックス無しで、検索語を「名前:12*.txt」とした場合


インデックス有りで、検索語を「名前:12*.txt」とした場合


検索語を「名前:~"12*.txt"」とするとインデックスの有無に関わらず検索できます。

また、インデックスを使用すると、インデックスを使用しない時に比べ、
検索の精度が少しだけですが落ちます。
例えば、下のファイルのように同じフォルダに、
「同名だが、半角全角違い」のファイルがあったとします。

1234 TEXT.txt
1234 TEXT.txt
(スペースが半角と全角違い)



すると、インデックスを使用しないで検索すると両方とも検出されますが、
インデックスを使用して検索すると片方が検出されなくなります。


インデックスを使用しないで検索した場合は、「1234 TEXT.txt」は検出されています。


インデックスを使用して検索した場合は、「1234 TEXT.txt」は検出されません。

また、この状態で片方を削除したり、移動させたりすると、
残された方も検出されなくなります。


片方のファイルをフォルダから消した状態で再び検索すると


ファイルが存在しているにも関わらず、残された方のファイルも検出されなくなります。

これの修復をするには、パスやファイル名を変えるか、
インデックスを再構築するしかありません。

このような、複雑で面倒な仕様にも関わらずWindows7の規定では
主なファイルはインデックスを使う設定になっています。

つまり、ほとんどの方が、インデックスを知らずに検索をしていることになります。

パソコンを買ったばかりはインデックスがほとんど作成されていないので、
存在するはずのファイルが全く見つからず、途方にくれることすらあります。

(私がそうでした。XPのPCからファイルを大量に移動させ、
その直後にいくら検索しても存在するはずのファイルが見つかりませんでした)

ちなみに、インデックスが0の状態でも、PCを数時間放置していれば、
インデックスは作成し終わります。(ファイルが多いと数日かかるかもしれません)
しかし、パソコンを操作しているとほとんど進みません。
マウスを触っているだけで、インデックスの作成は遅くなります。

但し、すでに完成していれば、新たに作成されたファイルのインデックスの作成は
パソコンを操作していても数秒程で終わります。
作成した直後や、移動・コピーした直後に検索をかけることはあまりないので
問題にならないでしょう。

また、ライブラリの検索にはインデックスが必要です。
インデックスを使用しないで検索する事はできません。
インデックスを使用しないで検索する場合は、ライブラリ以外で行ってください。

ライブラリのフォルダは、
フォルダの上の方に大きく「~ ライブラリ」と書かれているのでわかると思います。

ライブラリから通常のフォルダに移動するときは、
ライブラリ上のファイルを右クリックし、「フォルダーの場所を開く」を選択してください。



では、なぜ、検索結果が不安定になるにも関わらずインデックスの作成をするのでしょうか?
それはインデックスの作成が一度完成してしまえば、
検索のスピードが劇的に早くなるからです。

その効果は5分かかっていた時間も、数秒・あるいは一瞬で終わるほどです。
逆に言えば、検索に時間がかかっているのはインデックスが作成されていないからです。
会社でサーバー内のファイルの検索に時間がかかってイライラしている人も多いでしょう。
それもインデックスを作ってしまえば数秒で終わります。
(但し、インデックスの追加は結構負荷がかかるようですので、サーバーにインデックスを
追加する場合は、本当に毎日検索するような場所にだけ追加することをお勧めします)

それだけではありません。インデックスの対象はテキストファイルやエクセル、
PDFなど一部のファイルでは、中の文章までも検索対象に入ります。

そのかわり、検索結果が膨大に増えるので、ファイル名を検索したいときは
「名前:」を付けないと大変なことになりますが、それでも作業効率は大きく上がるはずです。

また、ファイルのフルパスも検索対象に入ります。
従って、Cドライブ内のフォルダで、検索語を「C」とすると
全てのファイルが検出されるので注意してください。


*表示形式をコンテンツにするとファイルの中身の一部を一覧で見ることができます。
インデックスがあると、ファイルの中身の検索も一瞬で終わります。
(上記はテキストファイルや、エクセル、PDFの中にある文章を検索している様子です)


Cドライブ内のフォルダで、検索語を「C」とすると全てのファイルが検出されます。
(このように、インデックスを使用している場合は、「名前:」を付ける必要性が増えます)

前置きが長くなってしまいましたが、
これからインデックスに関する操作について説明していきます。
まず、インデックスの状態には大きく分けて3つに分かれます
1.インデックスを作成し、インデックスを使用して検索している状態
2.インデックスを作成はしているが、インデックスを使用しないで検索している状態
3.インデックスの作成をしておらず、インデックスを使用しないで検索している状態

多くの個人PCでは「1」に該当します。
また、サーバー内の検索は「3」に該当することが多いと思います。
個人PCの初期の設定では、CドライブのUsersのフォルダにインデックスが作成されます。
プログラムファイルやシステムファイルなど検索することが少ないフォルダは
インデックス作成の対象になっていません。

PCのインデックスを確認する方法を紹介します。

1.コントロールパネルを開きます。


2.表示方法を大きいアイコンにします。
(あるいは、検索ボックスに「インデックスのオプション」と入力する)


3.インデックスのオプションを選択します。


するとダイアログボックスが表示されます。
上の方に、「~個のインデックスが作成されました」と表示され、
その下に作成中か完成しているかが書かれています。


インデックスを作成する対象になっているフォルダはその下に表示されています。
インデックスの対象を変えたいときは変更ボタンを押してください。



チェックを外すと、インデックスが削除され、
チェックを入れると、インデックスが作成されます。

 

インデックスが壊れた時や、インデックスが作成されていない時、
インデックスに関する設定を変えたときは、再構築の必要があります。

1.インデックスのオプションから「詳細設定」を選択します(要:管理者権限)




2.トラブルシューティングの再構築を選択します。


これで、インデックスの再構築が始まります。
インデックスを完成させるためには、
PCを数時間放置する必要がありますので注意してください。


先ほど、紹介したインデックスの状態の2の項目で挙げた
「インデックスを作成はしているが、インデックスを使用しないで検索している状態」
にする方法を紹介します。

1.適当なフォルダの画面を開き、「整理→フォルダと検索のオプション」を選択します。


2.検索タブを選択し、検索方法の4番目にある
ファイルシステムのファイルのフォルダーの検索時にインデックスを使用しない」
にチェックを付けます。



これで、インデックスの作成をしながら、
インデックスを使用しない検索を行うことができます。
この設定はインデックスの作成がまだ終了していないが、今すぐ検索する必要があるとき、
または検索に検出されないファイルが存在するときに使います。

また、インデックスの作成そのものを停止したい場合は次のようにします。

1.スタートメニューを開き、コンピューターを右クリックし、「管理」を選択します。
(要:管理者権限)


2.サービスとアプリケーションの中の「サービス」を選択します


3.サービスのリストの中から「Windows Search」を探して、プロパティを開きます。


4.スタートアップの種類を「無効」にします


5.停止を選択します。


これでインデックスが作成されなくなりました。
検索するときも自動的にインデックスを使用しない検索になります。
元に戻すときは、開始を選んでからスタートアップの種類を自動にします。
インデックスの作成を停止させると、
Outlookの簡易検索などにも影響がでるので注意してください
(高度な検索は使用できます)

PDFの全文検索について
前回書いた「Windows7のファイル検索のコツとその仕組み」でも書きましたが、
インデックスを作成するとPDFの全文検索ができるようになります。
しかし、64bitのOSを使用している人は別途「iFilter」のインストールが必要になります。

(32bit用のiFilterはAdobe Readerに含まれています)

 

64bit用のPDF iFilterは2014年9月現在、下記URLからインストールできます。
http://www.adobe.com/support/downloads/detail.jsp?ftpID=5542


ネットワークの共有フォルダの検索について

会社の業務の中で一番ファイルの検索をすることが多いのは
ネットワークの共有フォルダを検索する時でしょう。
ネットワークの共有フォルダについてインデックスを作成する方法は
大きく分けて2通りあります。

1.共有フォルダのインデックスを、ローカルPCに保存する方法(32bit限定)
2.共有フォルダを作成しているPC、またはサーバーでインデックスを作成する方法

1番目の方法はローカルにインデックスを保存するため、
作成された以外のPCで検索しても何の効果もありません。

しかし、共有フォルダを作成しているPCまたはサーバーを
操作する必要がない為、気軽にできます。
いつも自分が使っているPCがあるのであれば、
いちいち、ネットワーク管理者に許可を取る必要もないでしょう

ただ、残念なことにこの方法は32bitOS限定です。64bitのOSでは使えません。
また、次の項目には注意してください。

・ユーザにアドミン権限があること
・サーバ側にアクセス権があること。(ユーザ名とPASSがあること)

2番目の方法は、共有フォルダを作成しているPC、
またはサーバーにインデックスを作成する為、
全てのクライアントPCに恩恵を受けることができます。

しかし、前にも話した通りインデックスの完成までは、検索結果が不完全になる為、
誰もサーバーにアクセスしない期間に作成する必要があります。
(インデックスが完成するまでの間、各自のクライアントPCでインデックスを使用しない
設定にして検索すれば問題はないです)

また、貴方がそのPCやサーバーに触ることのできない人であれば、
ネットワーク管理者に相談する必要があります。
また、インデックスを作成するPCやサーバーにかかる負荷も考慮すべきです。


では、1番目のローカルにインデックスを作成する方法を紹介します。
以下のURLからアドオンをインストールします
http://www.microsoft.com/en-us/download/details.aspx?id=3383

アドオンをインストールしたら、インデックスオプションの詳細設定を開きます。


Add UNC Lacationタブを選択し、Add UNC Pathに共有フォルダのアドレスを記入します。


最後にAddを追加すると、インデックスの対象のフォルダに追加されます。
消したい場合は、変更のボタンを選択して、フォルダのチェックを外してください。




次に2番目の共有フォルダを作成しているPCでインデックスを作成する方法を紹介します。

共有フォルダを作成しているPCがサーバーではない普通のPCの場合は、
そのPCの共有化されているフォルダにインデックスが作成されていれば、
そのフォルダをネットワークから検索したときに
自動的にインデックスを使用して検索されます。

共有フォルダを作成しているPCがサーバーの場合、すこし勝手が異なります。
Windows Server 2008 R2の例で話を進めます。
サーバーには通常、Windows Seachサービスがインストールされていません。
従って、役割の追加からWindows Seachサービスを追加する必要があります。
この時、Windows Updateが保留中になっている場合、
サーバーを再起動する必要があるので気を付けてください。

まず、サーバーマネージャーを開きます。
左側のツリーの中から役割を右クリックして役割の追加を選択し
ファイルマネージャーをインストールします。



ファイルマネージャーがすでにインストールされている場合は、
ツリーの中からファイルマネージャーを右クリックして役割の追加を選択します。

次に、Windows Seachサービスをインストールします。
下図にはWindows Server 2003 ファイルサービスの下に
インデックスサービスがありますが、それはインストールしないでください。


次に、インデックスの対象となるドライブを指定する画面がありますが、
そこでチェックを入れなくても後から、フォルダ単位で設定できます。

インストールが終わると、コントロールパネルにインデックスのオプションが登場します。



あとは、通常のPCと同様にインデックスのフォルダを追加します。

これでインデックスの作成が完了すれば、ネットワークからの検索が高速になります。

インデックスが何故か作成されない時は
今までサーバーやPCにインデックスを作成する方法を紹介しましたが、
なぜかインデックスが作成されないことがあります。その時は、次の事を確認してください。

まずフォルダのプロパティを開きます。


詳細設定を選択します。


「このフォルダー内のファイルに対し、プロパティだけでなくコンテンツにもインデックスを付ける」にチェックが入っていることを確認してください。


次に同じくプロパティの画面からセキュリティタブを選択します。
グループ名またはユーザー名に「SYSTEM」があること、
そして、フルコントロール以外の全てにチェックが入っていることを確認してください。


もし、上記設定が異なっている場合は、修正してインデックスの再構築を行ってください。

以上で、Windows7のインデックスによる検索についての紹介を終わります。
インデックスはややこしいですが、使いこなせれば強力な武器となります。
上手に使ってください。

この記事書くに至って参考にURLを下に記します。

詳細インデックス オプションを変更する
 インデックスを使って Windows の検索を効率化する: よく寄せられる質問
ネットワークフォルダのインデックス化