検索ルートの管理
クロール スコープ マネージャー (CSM) を使用すると、Windows Search クロール スコープとの間でデータ ストアの検索ルートを追加および削除できます。
このトピックの項目は次のとおりです。
- 検索ルートについて
- はじめに
- Windows 7: 新しいクロール スコープ マネージャー API
- クロール スコープへのルートの追加
- クロール スコープからのルートの削除
- クロール スコープでのルートの列挙
- 関連トピック
検索ルートについて
検索ルートは、特定のスコープを含めたり除外したりできるシェル名前空間のベースを定義します。通常は、列挙可能なプロトコルの最上位レベルのコンテナーです。 このストアのどの部分にインデックスを作成するか、インデックスを作成しないかを指定しません。これは、コンテンツ ストアが存在し、登録済みのプロトコル ハンドラーに関連付けられていることを示すだけです。 検索ルート URL を識別するための構文には、プロトコル、ストアまたはユーザーのセキュリティ識別子、パス、および必要に応じて特定の項目 (ファイルなど) が含まれます。 次の例は、検索ルートの 2 つの形式の構文を示しています。
<protocol>://<store or SID>\<path>\[item]
or
<protocol>://<store or SID>/<path>/[item]
プロトコル> セグメントの<後に 2 つのスラッシュ ('/') が続く必要があります。ファイルである場合を除き、プロトコルは 3 つのスラッシュ (file:///) を必要とします。 サイトまたは SID> セグメントは<、検索ルートがユーザーに固有であることを意図している場合は、コンテンツ ストアまたはユーザー セキュリティ識別子を表します。 <パス> セグメントは、ディレクトリやフォルダーなどのコンテナーのセットであり、ワイルドカード文字 '*' を含めることができます。 <項目>セグメントは省略可能であり、ワイルドカード文字 '*' を含めることもできます。 項目を含まない場合は、必ずスラッシュでパス セグメントを終了するか、インデクサーは最後のサブコンテナーが項目であると見なします。
たとえば、カスタム アプリケーションの *.myext 型のファイルを処理するプロトコル ハンドラー (myPH) を実装したとします。 これらのファイルはすべて、ローカル コンピューターの WorkteamA\ProjectFiles フォルダーにあります。 の検索ルートは次のようになります。
- myPH:///C:\WorkteamA\ProjectFiles\
すべての .myext ファイルを含める予定ですが、そのコンテナーの他のファイルはインデックスに含めないことを計画しているとします。 の検索ルートは次のようになります。
- myPH:///C:\WorkteamA\ProjectFiles\*.myext。
ワイルドカード パターンは、ワイルドカード文字 '*' を使用して URL を定義し、URL ではなくパターンと見なされますが、用語は同じ意味で使用されることがよくあります。 たとえば、file:///C:\ProjectA\*\data\ は次の URL と一致します。
- C:\ProjectA\version1\data\
- C:\ProjectA\version2\data\
しかし、そのパターンは次の URL と一致しません。
- C:\ProjectA\version1\temp\data\
インデクサーのクロール スコープにまだ含まれていないコンテナーの新しい検索ルートを作成する必要があります。 パス C:\ParentScope がクロール スコープに既に含まれている場合は、子スコープが以前に除外されていることがわかっている場合を除き、C:\ParentScope\ChildScope の新しい検索ルートを追加する必要はありません。
Windows Search オプションを設定するためのユーザー インターフェイスでは、検索ルートがユーザーに表示されるため、検索の範囲ルールを絞り込むことができます。 カスタム プロトコル ハンドラー、コンテナー、またはアプリケーションのインストール プロセスの一環として、包含ルールと除外ルールを使用して既定のクロール スコープを定義できます。 これらのルールは、エンド ユーザーに場所として表示されます。 ユーザーは、定義済みの検索ルートのサブディレクトリ内を移動し、検索に含めるものを選択するか、除外するサブディレクトリをクリアできます。
はじめに
クロール スコープ マネージャー (CSM) インターフェイスを使用する前に、次の前提条件の手順を実行する必要があります。
- CrawlSearchManager オブジェクトを作成し、その ISearchManager インターフェイスを取得します。
- ISearchCatalogManager インターフェイスのインスタンスを取得するには、"SystemIndex" の ISearchManager::GetCatalog を呼び出します。
- ISearchCatalogManager::GetCrawlScopeManager を呼び出して、ISearchCrawlScopeManager インターフェイスのインスタンスを取得します。
クロール スコープ マネージャー (CSM) に変更を加えたら、 ISearchCrawlScopeManager::SaveAll を呼び出す必要があります。 このメソッドはパラメーターを受け取り、成功したS_OKを返します。
Windows 7: 新しいクロール スコープ マネージャー API
Windows 7 以降では、ISearchCrawlScopeManager2 は ISearchCrawlScopeManager インターフェイスの機能を拡張します。 ISearchCrawlScopeManager2::GetVersion メソッドは、クロール スコープ マネージャー (CSM) バージョンを取得します。これは、CSM の状態が変更されたかどうかをクライアントに通知します。 ISearchCrawlScopeManager2::GetVersion では、プロセス間の呼び出しは行われません。 関数が成功した場合、返されるポインターは、クライアントがポインターで UnmapViewOfFile を呼び出し、返されたハンドルで CloseHandle を呼び出すまで有効なままです。
クロール スコープへのルートの追加
ISearchCrawlScopeManager は、クロールやwatchするコンテナー、およびそれらのコンテナーの下の項目を含めるか除外するかを検索エンジンに通知します。 新しい検索ルートを追加するには、 ISearchRoot オブジェクトをインスタンス化し、ルート属性を設定してから 、ISearchCrawlScopeManager::AddRoot を呼び出して 、ISearchRoot オブジェクトへのポインターを渡します。 検索ルート URL は、前に説明した検索ルートと同じ形式になります。
次の表では、 ISearchRoot に関連する put メソッドについて説明します。インターフェイスの他の put メソッドは、Windows Search では現在使用されていません。 セキュリティを強化するために、すべてのルートにユーザーのセキュリティ識別子 (SID) を含めることをお勧めします。 ユーザーごとのルートは、クエリがユーザーごとのプロセスで実行されるため、より安全です。たとえば、あるユーザーが別のユーザーの受信トレイからインデックス付けされたアイテムを表示できないようにします。
メソッド | 説明 |
---|---|
put_ProvidesNotifications | プロトコル ハンドラーまたは他のアプリケーションが検索ルートの URL への変更について検索エンジンに通知する場合は TRUE に設定します。 通知は、URL のインデックス再作成が必要であることを示します。 |
put_RootURL | 現在の検索のルート URL を設定します。 URL は、前に説明した検索ルート フォームを受け取ります。 |
既定では、検索ルートを追加しても、インデクサーはスコープをクロールしません。 ルートのインクルードルールも追加する必要があります。 アプリケーションにユーザー固有のルートを追加する場合、そのアプリケーションは、アプリケーションの起動時に新しいユーザーに適切なルートを追加する必要があります。
新しいユーザーに適切なルートを追加するには:
- ユーザーの SID を取得します。
- すべてのルートを列挙して、この SID に存在するかどうかをチェックします。
- 必要に応じて、SID を使用して新しいルートを追加します。
クロール スコープからのルートの削除
ISearchCrawlScopeManager を使用すると、その URL のインデックスが作成されなくなったときに、クロール スコープからルートを削除できます。 ルートを削除すると、その URL のすべてのスコープ ルールも削除されます。 たとえば、コンテンツ ストアやそのプロトコル ハンドラーをシステムからアンインストールするとします。 アプリケーションをアンインストールし、すべてのデータを削除してから、クロール スコープから検索ルートを削除すると、クロール スコープ マネージャーによってルートとルートに関連付けられているすべてのスコープ ルールが削除されます。
既存の検索ルートを削除するには、削除する検索ルートで ISearchCrawlScopeManager::RemoveRoot を呼び出します。 検索ルート URL は、前に説明した検索ルートと同じ形式になります。 このメソッドは、ルートが見つからない場合はS_FALSEを返し、見つかったルートを削除するエラーが発生した場合はエラー コードを返します。
検索ルートを削除すると、Windows Search オプションのユーザー インターフェイスからも URL が削除されるため、ユーザーはユーザー インターフェイスを使用してそのコンテナーまたは場所を再追加できない場合があります。 また、検索ルートのすべてのユーザーセットオーバーライドを削除し、元の検索ルートとスコープルールに戻すこともできます。 詳細については、「 スコープ ルールの管理」を参照してください。
注意
Windows Vista では、ユーザーがコントロール パネルのユーザー プロファイルを通じて削除された場合、CSM は SID を持つすべてのルールとルートを削除し、カタログからインデックス付きアイテムを削除します。 Windows XP では、ユーザーのルートとルールを手動で削除する必要があります。
クロール スコープでのルートの列挙
CSM は、標準の COM スタイルの列挙子インターフェイス IEnumSearchRoots を使用して検索ルートを列挙します。 このインターフェイスを使用すると、さまざまな目的で検索ルートを列挙できます。 たとえば、クロール スコープ全体をユーザー インターフェイスに表示したり、特定のルートまたはルートの子が既にクロール スコープ内にあるかどうかを検出したりできます。
関連トピック