Azure Search の概要
Windows Search は、最も一般的なファイルの種類とデータ型のクイック検索機能を備えるデスクトップ検索プラットフォームであり、サード パーティの開発者はこれらの機能を新しいファイルの種類とデータ型に拡張できます。
このトピックは次のように構成されています。
はじめに
Windows Search は、Windows 7 および Windows Vista の標準コンポーネントであり、既定で有効になっています。 Windows Search は、Windows XP および Windows Server 2003 のアドインとして使用できた Windows デスクトップ検索 (WDS) に代わるものです。
Windows Search は、次の 3 つのコンポーネントで構成されます。
Windows Search サービス
WSS は、ドキュメントのコレクションの抽出された機能を整理します。 Windows Search プロトコルを使用すると、クライアントは WSS をホストしているサーバーと通信し、クエリを発行したり、管理者がインデックス作成サーバーを管理したりできるようになります。 WSS は、ファイルの処理時に一連のドキュメントを分析し、有用な情報を抽出し、抽出された情報を整理して、クエリに応答してそれらのドキュメントのプロパティを効率的に返すことができるようにします。
クエリを実行できるドキュメントのコレクションは、Windows Search の組織の最上位レベルの単位であるカタログで構成されます。 カタログは、クエリを実行できるインデックス付きドキュメントのセットを表します。 カタログは、テキストまたは値を持つプロパティ テーブルと、テーブルの列に格納されている対応する場所 (ロケール) で構成されます。 テーブルの各行はカタログのスコープ内の個別のドキュメントに対応し、テーブルの各列はプロパティに対応します。 カタログには、反転インデックス (単語の簡単な照合用) とプロパティ キャッシュ (プロパティ値をすばやく取得するために) が含まれている場合があります。
インデクサー プロセスは、LocalSystem アカウントで実行される Windows サービスとして実装され、(ユーザーがログインしていない場合でも) すべてのユーザーに対して常に実行されます。これにより、Windows Search により次のことが実行できるようになります。
- すべてのユーザー間で共有される 1 つのインデックスを保持する。
- コンテンツ アクセスに対するセキュリティ制限を維持します。
- ネットワーク上のクライアント コンピューターからのリモート クエリを処理する。
Search サービスは、インデックス作成時のユーザー エクスペリエンスとシステム パフォーマンスを保護するように設計されています。 次の条件、サービスがインデックス作成を抑制または一時停止する原因になります。
- 検索関連以外のプロセスによる CPU 使用率が高い。
- ファイルの読み取りと書き込み、ページ ファイルとファイル キャッシュ I/O、マップ済みファイル I/O などの、システム I/O レートが高い。
- メモリの可用性が低い。
- バッテリー残量が少ない。
- インデックスを格納するドライブのディスク領域が少ない。
開発プラットフォーム
Search API にアクセスして Windows Search アプリケーションを作成するには、シェル データ ソースを使用することをお勧めします。 シェル データ ソースは、シェル名前空間を拡張し、データ ストア内の項目を公開するために使用されるコンポーネントです。 データ ストアは、データのリポジトリです。 データ ストアは、シェル データ ソースを使用するコンテナーとしてシェル プログラミング モデルに公開できます。 データ ストア内の項目は、プロトコル ハンドラーを使用して Windows Search システムによってインデックスを作成できます。
たとえば、 ISearchFolderItemFactory は、検索フォルダー データ ソースのインスタンスを作成できるコンポーネントです。これは、シェル名前空間内の他のデータ ソースに対してクエリを実行し、結果を列挙できる、シェルによって提供される一種の "仮想" データ ソースです。 これを行うには、インデクサーを使用するか、指定されたスコープ内の項目を手動で列挙して検査します。 このインターフェイスを使用すると、検索フォルダーを作成および変更するメソッドを使用して、検索のパラメーターを設定できます。 このインターフェイスのメソッドが呼び出されない場合は、代わりに既定値が使用されます。
シェル データ モデルを介して Windows Search 機能に間接的にアクセスすることをお勧めします。シェル データ モデルのレベルでシェルの完全な機能にアクセスできるためです。 たとえば、検索の範囲をライブラリ (Windows 7 以降で使用できる機能) に設定して、ライブラリ フォルダーをクエリのスコープとして使用できます。 その後、Windows Search は、検索結果がさまざまなインデックス内にある場合 (フォルダーが異なるコンピューター上にある場合) に、それらの場所からこれを集計します。 シェル データ レイヤーでは、項目のプロパティのより完全なビューも作成され、いくつかのプロパティ値が合成されます。 また、Windows Search でインデックスが作成されていないデータ ストアの検索機能にもアクセスできます。 たとえば、ユニバーサル シリアル バス (USB) ストレージ デバイス、MTP プロトコルを使用するポータブル デバイス、またはこれらのストレージ システムへのアクセスを提供するシェル データ ソースを介してファイル転送プロトコル (FTP) サーバーを検索できます。 これにより、より良いユーザー エクスペリエンスが確保されます。
Windows Search には、Windows Search サービス (WSS) の実装で使用されるプロパティ値のキャッシュがあります。 これらのプロパティ値は、Windows Search OLE DB プロバイダーを使用するか、検索結果およびクエリ ベースのビューのアイテムを表す ISearchFolderItemFactory を使用してプログラムでクエリを実行できます。 その後、Windows Search では、Word 文書などのアイテムのインデックスが作成されるときに、フィルター ハンドラーまたはプロパティ ハンドラーによって出力されるプロパティが収集され、格納されます。 このストアは破棄され、インデックスの再構築時に再構築されます。
サード パーティの開発者は、プログラムによるクエリを使用してインデックス内のデータを使用するアプリケーションを作成でき、Windows Search によりインデックスが作成されるカスタム ファイルとアイテムの種類のインデックス内のデータを拡張できます。 クエリ結果をエクスプローラーに表示させたい場合は、インデックスを拡張するプロトコル ハンドラーを作成する前に、シェル データ ソースを実装する必要があります。 ただし、すべてのクエリが (たとえば OLE DB を介して) プログラム的に実行され、シェルではなくアプリケーションのコードによって解釈される場合は、シェル名前空間が望ましいですが、必須ではありません。
Windows では、データベース内の項目やカスタム ファイルの種類など、ファイルの内容に関する情報を取得するためにプロトコル ハンドラーが必要です。 Windows Search ではファイルの名前とプロパティにインデックスを付けることができますが、Windows ではファイルの内容についての情報を取得できません。 その結果、このような項目のインデックスを作成したり、Windows シェルで公開したりすることはできません。 カスタム プロトコル ハンドラーを実装すると、これらの項目を公開できます。 実現しようとしている開発者のシナリオによって識別されるハンドラーの一覧については、開発プラットフォームとしての Windows Search の「ハンドラーの概要」を参照してください。
Note
シェル データ ソースは、シェル名前空間拡張機能と呼ばれることもあります。 ハンドラーは、シェル拡張機能またはシェル拡張ハンドラーと呼ばれることもあります。
ユーザー インターフェイス
Windows Vista 以降では、Windows Search はすべてのエクスプローラー ウィンドウに統合されており、検索にすぐにアクセスできます。 これにより、ユーザーはファイル名、プロパティ、フルテキスト コンテンツを使ってファイルと項目をすばやく検索できます。 結果をさらにフィルター処理して検索を絞り込むこともできます。 Windows Search のその他の機能を次に示します。
- すべてのウィンドウのクイック検索ボックスを使用すると、現在表示されているすべての項目を即座にフィルター処理できます。 クイック検索ボックスは、プログラムやファイルを検索するスタート メニューに表示され、表示される結果をフィルター処理するためにすべてのエクスプローラー ウィンドウの右上隅に表示されます。 クイック検索は、関連ファイルを検索するために、Windows メディア プレーヤーなどの他の Windows 機能にも統合されています。
- ドキュメントにキーワード (keyword)タグを付けて、ユーザーが定義したカスタム条件でグループ化できます。 タグは、アイテム名やコンテンツに含まれていない可能性があるキーワードに基づいてファイルを見つけやすくするために、ユーザーまたはアプリケーションによって割り当てられるメタデータ項目です。 たとえば、一連の画像を "アリゾナ バケーション 2009" とタグ付けして、含まれている単語のいずれかを検索して後ですばやく取得できます。
- エクスプローラー ビューの拡張列ヘッダーを使用すると、さまざまな方法でドキュメントの並べ替えとグループ化を行うことができます。 たとえば、ファイルは名前、変更日、種類、サイズ、タグに従って並べ替えることができます。 ドキュメントは、これらのプロパティのいずれかに従ってグループ化することもでき、各グループは必要に応じてフィルター処理 (非表示または表示) できます。
- ドキュメントは、名前、変更日、種類、サイズ、タグに従って上下に並べて表示することができます。 スタックには、指定したプロパティを持ち、選択したフォルダーのサブフォルダー内にあるすべてのドキュメントが含まれます。
- エクスプローラーの検索ウィンドウで [検索の保存] ボタンをクリックすると、検索を保存 (後で取得) できます。 保存した検索条件を開くと、元の条件に基づいて結果が動的に再作成されます。 手順については、検索結果の保存に関するページを参照してください。
- プレビュー ハンドラーとサムネイル ハンドラーを使用すると、ユーザーは、ドキュメントを作成したアプリケーションを開く必要なく、エクスプローラーでプレビューすることができます。
技術的な前提条件
Windows Search SDK のドキュメントを読み始める前に、次の概念を基本的に理解している必要があります。
- シェル データ ソースを実装する方法。
- ハンドラーを実装する方法。
- ネイティブ コードで作業する方法。
シェル データ ソースは、シェル名前空間を拡張し、データ ストア内の項目を公開するために使用されるコンポーネントです。 以前は、シェル データ ソースはシェル名前空間拡張機能と呼ばれていました。 ハンドラーは、シェル アイテムに機能を提供するコンポーネント オブジェクト モデル (COM) オブジェクトです。 実現しようとしている開発者のシナリオによって識別されるハンドラーの一覧については、開発プラットフォームとしての Windows Search の「ハンドラーの概要」を参照してください。
Windows Search で公開されている COM オブジェクトやマネージド コードを使用する他のプログラムを操作するための Windows Search SDK 相互運用性アセンブリの詳細については、「シェル データと Windows Search でのマネージド コードの使用」を参照してください。 ただし、フィルター、プロパティ ハンドラー、プロトコル ハンドラーはネイティブ コードで記述する必要があることにご注意ください。 これは、複数のアドインが実行されるプロセスで共通言語ランタイム (CLR) のバージョン管理の問題が発生するおそれがあるためです。 C++ を初めて使用する開発者は、Visual C++ デベロッパー センターと Windows 開発の概要を使って開始できます。
SDK のダウンロードとコンテンツ
一覧表示されている技術的な前提条件を満たすだけでなく、Windows SDK をダウンロードして Windows Search ライブラリを入手する必要もあります。 Windows Search コード サンプル には、マネージド コードを使用して開発するための便利なコード サンプルと相互運用性アセンブリが含まれています。
Windows Search SDK のドキュメント
Windows Search SDK ドキュメントの内容は次のとおりです。
-
Windows Search の主な開発シナリオについて説明します。 実現しようとしている開発シナリオにより識別されるハンドラーの一覧、アドイン インストーラーのガイドライン、実装に関する注意事項を提供します。
-
インデックスの管理、プログラムによるインデックスのクエリ、インデックスの拡張、言語リソースの拡張について説明します。
-
Windows Search インターフェイスの次のカテゴリについて説明します。プロトコル ハンドラー、クエリ、クロール範囲、データ アドイン、インデックス管理、通知。 リファレンス ドキュメントには、定数と列挙体、構造体、プロパティ マッピング、保存された検索ファイル形式も含まれています。
-
使用可能な Search API コード サンプルについて説明します。
-
ユーザーがエクスプローラー内からリモート データにアクセスして操作できるようにする、OpenSearch テクノロジを使用したリモート データ ストアへの検索フェデレーションに対する Windows 7 のサポートについて説明します。
-
次の Windows Search に関連するテクノロジの一覧を示します: エンタープライズ検索、SharePoint エンタープライズ検索、および Windows Desktop Search 2.x や Platform SDK: Indexing Service などのレガシ アプリケーション。
-
Windows Search およびシェル テクノロジで使用される重要な用語を定義します。
Windows Search の歴史
Windows Search は、Windows XP および Windows Server 2003 のアドインとして使用できた Windows デスクトップ検索 (WDS) に代わるものです。 WDSは、パフォーマンス、使いやすさ、拡張性を強化し、Windows の以前のバージョンにあったレガシ インデックス サービスにとって代わりました。 新しい開発プラットフォームでは、より安全で安定したシステムを生成する要件がサポートされています。 新しいクエリ プラットフォームは Microsoft Windows Desktop Search (WDS) 2.x と互換性がありませんが、以前のバージョンの WDS 用に記述されたフィルターとプロトコル ハンドラーは、Windows Search で動作するように更新できます。 Windows Search では、新しいプロパティ システムもサポートされています。 フィルター、プロパティ ハンドラー、プロトコル ハンドラーの詳細については、「インデックスの拡張」を参照してください。
Windows Search は Windows Vista 以降に組み込まれており、次のオペレーティング システムをサポートするために WDS 2.x の再頒布可能な更新プログラムとして利用できます。
- Windows XP Service Pack 2 (SP2) の 32 ビット版。
- Windows XP のすべての x64 ベース バージョン。
- Windows Server 2003 Service Pack 1 (SP1) 以降。
- Windows Server 2003 のすべての x64 ベース バージョン。
Windows Search 用に作成されたアプリケーションを実行するには、これらのオペレーティング システムを実行するシステムに Windows Search がインストールされている必要があります。
その他のリソース
- シェル データ ソースの作成の詳細については、「基本的なフォルダー オブジェクト インターフェイスの実装」を参照してください。
- ISearchFolderItemFactory と DB フォルダー データ ソースの詳細については、「コンテキスト文字列キーのバインド」の STR_PARSE_WITH_PROPERTIES 定数の説明を参照してください。 「関連付け配列」と「IPropertySystem::GetPropertyDescriptionListFromString」も参照してください。
- OLE DB の詳細については、OLE DB プログラミングの概要に関するページを参照してください。 .NET Framework Data Provider for OLE DB の詳細については、System.Data.OleDb 名前空間のドキュメントを参照してください。
- ファイルの種類のハンドラー (シェル拡張機能ハンドラーと検索ハンドラーとも呼ばれます) の概要については、「開発プラットフォームとしての Windows Search」を参照してください。
- 検索テクノロジに関するコミュニティでサポートされているメッセージ ボードについては、Microsoft Q&A を参照してください。
- 関連するコード サンプルについては、「Windows Search のコード サンプル」を参照してください。
関連トピック