インデックス作成の動作
インデックスの作成は、Windowsのサービスとして実装されている。このサービスは、システムがアイドル状態となったことを検出して自動的に動作するようになっている。実体としてのプロセスは、Windows Search Indexer、Search Protocol Host、Search Filter Hostだ。後者の2つは、それぞれサーチ用プロトコルハンドラー、フィルター(およびプロトコルハンドラー)を起動し、対象ファイルからの情報を抽出する。
インデックスの作成は、システム側の「通知プロバイダ」から、ファイルやデータの変更といったイベントがインデックス作成システムに送られて開始される。この通知プロバイダには、NTFSやFATといったファイルシステムやOutlook(メールの着信などでインデックス作成を要求するためにイベントを送る)などがある。
ただし、インデックスの作成はどのファイルに対してもではなく、ユーザーの指定した「クロール範囲」に対してのみ行なわれる。クロール範囲は、フォルダなどの「場所」と対象とするファイル形式で指定される。
また、ファイル形式に対しては、ファイル名や作成日時などのプロパティのみとするか、内容までインデックス化の対象とするかを指定できる。ただし、内容をインデックス化できるのは、フィルターが用意されている場合のみだ。クロール範囲はユーザーがコントロールパネルの「インデックスのオプション」から変更が可能だが、Windows7以降は、ユーザーフォルダに対して、すべての登録されたファイル形式がデフォルトのクロール範囲として指定されている。
通知プロバイダから、ファイルやデータストアなどの変更通知を受け取ったら、インデックスシステムは、それがクロール範囲に属するかどうかをチェックし、範囲内であれば、インデックス作成のためにこれを「インデックス作成キュー」記録していく。
キューとは、複数のデータを記憶する仕組みで、最初に登録したものが最初に取り出せるようになっている。一般に「待ち行列」などと呼ばれ、繁盛している店舗にできる「行列」と同じである。なお、このとき、ファイルやファイル中の情報を示すため、対象はURLで表現される。URLはWebページなどを指し示す場合に使うが、さまざまなプロトコルやローカル、リモートを問わずに対象を指定できる。
インデックス作成キューでは、フィルターやプロパティハンドラ、プロトコルハンドラを使ってインデックス情報のキーワード側になるプロパティ情報や本文などから抽出した単語と、URLの対応情報を作り出す。これをあとからキーワードごとにまとめることで、キーワードや日付などのプロパティ情報とURL(複数の場合もありえる)を対応させるインデックスができあがる。
サービスを停止する
「インデックスのオプション」を使うことで、前述のクロール範囲などを指定することが可能だ。ここにある「変更」ボタンは、対象になる「場所」を変更する場合に使い、ファイル形式とそのインデックス化対象の指定は、「詳細設定」ボタンを使う。
詳細オプションウィンドウにある「ファイルの種類」タブでは、システムに登録されている拡張子がリストとして表示され、それぞれをインデックス化の対象にするかどうか、「インデックスの作成方法」では、プロパティのみを対象とするか、ファイルのコンテンツも対象にするかを選択できる。なお、どのファイル形式(拡張子)でもコンテンツをインデックス化の対象にできるが、実際に対象になるのは、フィルターなどが用意されている場合のみだ。
また、「インデックスのオプション」にある「一時停止」ボタンは、インデックスの作成中に限り15分間、インデックス作成作業を休止させるもの。
モバイルマシンなどをバッテリ運用する場合、インデックス作成によるバッテリ消費などが気になるなら、インデックスサービスを停止させるという方法がある。ただし、この方法ではインデックスが中途半端なまま残り、検索を行なったときに、正しく結果が表示されない可能性がある。しかしインデックスがなくとも、Explorerなどの検索機能は利用可能だ。
サービスを停止させる場合、依存関係に注意する必要がある。あるサービスの実行に別のサービスが関連していて、依存関係も持つサービスがすべて終了しないとサービスを終了できない場合があるからだ。インデックスサービスにも依存関係を持つサービスがあり、Windows 8では、ワークフォルダサービス、メディアプレーヤー・ネットワーク共有サービスが関連している。ただし、ドメイン運用していないクライアントマシンでは、ワークフォルダサービスは停止しているはずだ。
サービスの停止などは、GUIで行う場合、管理ツールにある「サービス」やタスクマネージャから行なう。GUIツールを使う場合には、依存関係を含めて停止を行うことができる。
しかし、GUI操作はユーザーが手作業で行わねばならず、1クリックで実行というわけにもいかない。こうした場合には、スクリプトやバッチなどからサービスを停止できるようにしておくといいだろう。
バッチコマンドを使う場合には、scコマンドが利用できる。なお、どのような場合でもサービスの停止には、管理者権限が必要であるため、管理者権限でスクリプトやバッチファイルを起動できるようにしておく。Windows 8.1では、タスクバー左のウィンドウズロゴアイコンを右クリックしてメニューから「コマンドプロンプト(管理者)」を選べば良い。
scコマンドには、いくつものサブコマンドがあるが、サービスの停止、再開に関していえば、以下のサブコマンドを覚えればいいだろう。それ以外のコマンドについては「sc /?」でヘルプを表示させることができる。
start:サービスを開始
stop:サービスを停止
query:サービスの状態を表示
EnumDepend:依存関係を表示
インデックスサービスの名称は「wsearch」である。サービスの状態を見るには「query」サブコマンドを使い。
sc query wsearch
とする。また、wsearchと依存関係にあるサービスを探すには、
sc EnumDepend wsearch
とすればよい。サービスの開始と終了は、
sc start サービス名
sc stop サービス名
である。wsearchサービスを止めるには、EnumDependサブコマンドで依存関係にあるサービスを探し、これを止めた後、wsearchサービスを停止させる。Windows 8では、WSearchに依存するサービスがある。これを含めた操作手順を下の囲みに示しておく。
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\WINDOWS\system32>sc EnumDepend wsearch
[SC] EnumDependentServices: entriesread = 2
SERVICE_NAME: workfolderssvc
DISPLAY_NAME: Work Folders
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 1077 (0x435)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
SERVICE_NAME: WMPNetworkSvc
DISPLAY_NAME: Windows Media Player Network Sharing Service
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
C:\WINDOWS\system32>sc stop WMPNetworkSvc
SERVICE_NAME: WMPNetworkSvc
TYPE : 10 WIN32_OWN_PROCESS
STATE : 3 STOP_PENDING
(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x1f4
C:\WINDOWS\system32>sc stop wsearch
SERVICE_NAME: wsearch
TYPE : 10 WIN32_OWN_PROCESS
STATE : 3 STOP_PENDING
(NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x1
WAIT_HINT : 0x7530
C:\WINDOWS\system32>sc query WMPNetworkSvc
SERVICE_NAME: WMPNetworkSvc
TYPE : 10 WIN32_OWN_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
C:\WINDOWS\system32>sc query wsearch
SERVICE_NAME: wsearch
TYPE : 10 WIN32_OWN_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
C:\WINDOWS\system32>
この連載の記事
-
第429回
PC
Windows Updateの「利用可能になったらすぐに最新の更新プログラムを入手する」はオンにした方がいいか? -
第429回
PC
WindowsからWordPadが廃止! RTF(Rich Text Format)はどうなる? -
第428回
PC
Google/Bingで使える検索オプション -
第427回
PC
WindowsのPowerShellのプロファイルを設定する -
第426回
PC
WindowsでAndroidスマホをWebカメラにする機能を試した -
第425回
PC
無料で使えるExcelにWord、Microsoft 365のウェブ版を調べた -
第424回
PC
Windowsの基本機能であるクリップボードについてあらためて整理 -
第423回
PC
PowerShellの今を見る 2つあるPowerShellはどっち使えばいい? -
第422回
PC
Windows 11の目玉機能が早くも終了、Windows Subsystem for Android(WSA)を振り返る -
第421回
PC
進化しているPowerToys LANで接続したマシンでキーボード/マウス共有機能などが追加 -
第420回
PC
Windowsプレビュー版に搭載されたsudoを試す - この連載の一覧へ