スコープ ルールの管理

クロール スコープ マネージャー (CSM) を使用すると、Windows Search クロール スコープの URL を含めたり除外したりするスコープ ルールを定義できます。

CSM を使用すると、次の操作を実行できます。

  • 作業ルール セットに新しいスコープ ルールを追加する
  • 既存のスコープ ルールを削除する
  • 既定のスコープ ルールを列挙する
  • 特定の URL がクロール スコープに含まれるか、クロール スコープから除外されているか、親または子スコープルールを持っているかを検出する

 

このトピックには、次のテーマが含まれます。

スコープ ルールについて

スコープ ルールは、検索ルート内の URL をクロールおよびインデックス作成から含めたり除外したりするルールです。 インデクサーに含めるルールにより、インデクサーはその URL をスクロール スコープに含めます。除外ルールにより、インデクサーはその URL (およびその子) をクロール スコープから除外します。

たとえば、データ ファイルがローカル コンピューターの WorkteamA\ProjectFiles フォルダーにある新しいアプリケーションをインストールしたとします。 サブフォルダーのプロトタイプ内の項目を除き、ProjectFiles フォルダー内のすべてのインデックスを作成するとします。 このような場合は、myPH:///C:\WorkteamA\ProjectFiles\ の包含規則と、myPH:///C:\WorkteamA\ProjectFiles\Prototypes\ の除外規則が必要になります。

規則には次の 3 種類があり、優先順位は次のとおりです。

  1. グループ ポリシー ルールは管理者によって設定され、他のすべてのルールをオーバーライドできます。
  2. ユーザー ルールは、Windows Search オプションのユーザー インターフェイスでスコープを変更するユーザーによって設定されます。 ユーザーまたは他のアプリケーションは、すべてのユーザー ルールを削除し、既定のルールに戻すことができます。
  3. 既定の規則は、通常、既定のスコープを定義するようにアプリケーションによって設定されます。 たとえば、新しいプロトコル ハンドラーまたはコンテナーがシステムに追加されるときに、既定の規則が設定される場合があります。

これらの種類のルールは、クロール スコープ マネージャー (CSM) がクロールする URL の完全な一覧を生成する 作業ルール セット で構成されます。 既定のルールは、グループ ポリシー ルールとユーザー ルールによってオーバーライドできますが、独自の既定のルール セットに保持され、いつでも元に戻すことができます。 インデクサーは、作業ルール セットから URL をクロールし、アイテム、プロパティ、およびコンテンツをカタログに追加します。

注

コントロール パネルにアクセスできるユーザーは、そのインターフェイスを使用してルールを変更できます。 そのため、スコープ管理を提供するアプリケーションでは、ユーザー ルールの保存されたコピーに依存するのではなく、列挙メソッドを使用して CSM から規則を常に直接取得する必要があります。

 

除外ルールでは、ワイルドカード文字 '*' を使用してパターン URL を定義できます。例: file:///C:\ProjectA\*\。 このパターンを使用する除外ルールを使用すると、インデクサーは ProjectA ディレクトリの下のフォルダーをクロールできなくなります。 より複雑な例として、file:///C:\ProjectA\ の包含規則と、file:///C:\ProjectA\*\data\* の除外パターン ルールがあるとします。 この場合、インデクサーは次の項目をクロールします。

  • C:\ProjectA\
  • C:\ProjectA\version1\testfiles\
  • C:\ProjectA\version1\temp\data\

ただし、インデクサーは次の項目をクロールしません。

  • C:\ProjectA\version1\data\

 

開始する前に

クロール スコープ マネージャーインターフェイスを使用する前に、次の前提条件の手順を実行する必要があります。

  1. CSearchManager オブジェクトを作成し、その ISearchManager インターフェイスを取得します。
  2. "SystemIndex" の ISearchManager::GetCatalog を呼び出して 、ISearchCatalogManager インターフェイスのインスタンスを取得します。
  3. ISearchCatalogManager::GetCrawlScopeManager を呼び出して、ISearchCrawlScopeManager インターフェイスのインスタンスを取得します。

クロール スコープ マネージャーに変更を加えた後、 ISearchCrawlScopeManager::SaveAll メソッドを呼び出す必要があります。 このメソッドはパラメーターを受け取らず、成功した場合はS_OKを返します。

 

スコープ ルールの追加

CSM に設定された作業ルールには、ユーザーと既定のルール、およびグループ ポリシーによって強制されるルールが含まれます。 ユーザー ルールはユーザー インターフェイスでユーザーによって設定され、既定のルールは次のいずれかによって設定できます。

  • システム管理者によって実装されたグループ ポリシー ( ISearchCrawlScopeManager インターフェイスは使用されません)。
  • Windows Search やプロトコル ハンドラーなどのアプリケーションのインストールまたは更新
  • 新しいデータ ストアまたはコンテナーを追加するためのセットアップ アプリケーション

ISearchCrawlScopeManager には、次の表に示すように、新しいスコープ ルールを追加するための 2 つのメソッドが用意されています。 ファイル システムの包含規則のパスは円記号 '\' で終わる必要があります (例: file:///C:\files\)、除外規則のパスはアスタリスク (たとえば、file:///c:\files\*) で終わる必要があります。 除外ルールにのみパターン URL を含めることができます。 さらに、ユーザーのセキュリティ識別子 (SID) をパスに含めて、セキュリティを強化することをお勧めします。 ユーザーごとのパスは、クエリがユーザーごとのプロセスで実行されるため、セキュリティが強化され、あるユーザーが別のユーザーの受信トレイからインデックス付けされたアイテムを表示できなくなります。

次の表では、新しいスコープ ルールを追加するために使用される ISearchCrawlScopeManager インターフェイスのメソッドについて説明します。

メソッド Description
AddUserScopeRule ユーザーが指定した URL のルールを追加します。 これらの規則は、既定の規則をオーバーライドします。 ユーザーが独自のスコープ ルールと URL を管理できるユーザー インターフェイスを実装している場合は、このメソッドを使用します。
AddDefaultScopeRule プロトコル ハンドラーなどの別のアプリケーションで指定された URL の規則を追加します。 新しいプロトコル ハンドラーを実装した場合、または新しいデータ ストアを追加した場合は、このメソッドを使用します。 これらのルールは、ユーザー ルールによってオーバーライドできます。

 

各メソッドは、インデックス可能な場所への URL と、URL を含めるか除外するかを決定するフラグを受け取ります。 fFollowFlags パラメーターは、将来使用するために予約されています。 新しいスコープ ルールを追加し、クロール スコープ マネージャーがルールが既に存在することを (指定された URL またはパターンに基づいて) 判断すると、(1) 古いルールが新しいルールに置き換えられ、(2) 規則に矛盾するユーザー ルールが削除されるように、作業ルール セットが更新されます。

ヒント: file://ルート は既定でクロール スコープに含まれていますが、Program Files は既定ではインデックス付けされません。 そのため、Program Files ディレクトリに保存されたデータを含むアプリケーションでは、その場所を既定の規則として追加する必要があります。

ユーザー ルールに関する注意事項

新しいユーザー ルールが既存の既定のルールと同じ場合、新しいユーザー ルールは作業ルール セットの既定のルールをオーバーライドします。 新しいユーザー ルールが既存のユーザー ルールと同じ場合は、古いユーザー ルールが置き換えられます。

フラグ fOverrideChildren を設定すると、作業ルール セットに次の結果が表示されます。

  • TRUE を 指定すると、作業ルール セット (ユーザー ルールと既定のルールの両方) からすべての子ルールが削除されます。
  • FALSE を指定すると、新しいユーザー ルールの子であるすべての既定のルールがワーキング ルール セットに再追加されます。 子の既定のルールが包含ルールであり、新しいユーザー ルールが除外である場合、既定のルールは包含ユーザー ルールに変更されます。

 

スコープ ルールの削除

ISearchCrawlScopeManager インターフェイスを使用して、作業ルール セットからスコープ ルールを削除できます。 このインターフェイスには、スコープ ルールを削除するための次の 2 つのメソッドが用意されています。

メソッド Description
RemoveScopeRule 指定した URL のユーザー ルールを作業ルール セットから削除します。 ユーザー ルールが既定のルールの複製またはオーバーライドされている場合、既定のルールは作業ルール セットに残ります。
RemoveDefaultScopeRule 作業ルール セットと既定のルール セットの両方から、指定した URL の既定のルールを削除します。 このメソッドを呼び出した後は、RevertToDefaultScopes を使用してこの既定の規則に戻すことはできません。

 

各メソッドは、削除するルールが包含規則か除外規則かを示す URL とフラグを受け取ります。 これらのメソッドは、その URL と包含/除外フラグを持つルールが見つからない場合にエラーを返します。

ヒント: クロール スコープからスコープを完全に削除したい場合は、RemoveRoot メソッドを使用してください。これにより、検索ルートと関連するすべてのスコープ ルールが削除されます。 たとえば、アンインストール中にこれを行うことはベスト プラクティスと見なされます。

検索ルートのすべてのユーザー セットのオーバーライドを削除し、元の検索ルートと既定のスコープ ルールに戻すこともできます。 詳細については、次のセクションを参照してください。

注

Windows Vista では、ユーザーがコントロール パネルの [ユーザー プロファイル] を使用して削除された場合、CSM は SID を含むすべてのルールとルートを削除し、カタログからインデックス付きアイテムを削除します。 Windows XP では、ユーザーのルートとルールを手動で削除する必要があります。

 

 

既定の規則に戻す

既定のルールに戻す場合、URL またはルートのすべてのユーザー ルールが削除され、すべての既定のルールが作業ルール セットに復元されます。 ただし、グループ ポリシーによって設定されたルールは削除されません。 RevertToDefaultScopes メソッドはパラメーターを受け取らず、既定の規則に戻すことができない場合はエラー コードを返します。

 

スコープルールを列挙する

CSM は、標準の COM スタイル列挙子インターフェイス IEnumSearchScopeRules を使用してスコープルールを列挙します。 このインターフェイスを使用すると、いくつかの目的でスコープ ルールを列挙できます。 たとえば、作業ルール セット全体をユーザー インターフェイスに表示したり、ルールまたはルールの子が既にクロール スコープに含まれているかどうかを検出したりできます。

 

トレース スコープルール

CSM を使用すると、指定した URL がクロール スコープに含まれているかどうか、および指定した URL に親スコープルールと子スコープ ルールがあるかどうかを判断することもできます。 また、URL がクロール スコープに含まれるか、クロール スコープから除外される理由を確認することもできます。 これらのメソッドは、パターン URL と共に使用することを意図していません。

次の表では、新しいスコープ ルールを追加するために使用される ISearchCrawlScopeManager のメソッドについて説明します。

メソッド Description
GetParentScopeVersionId 親包含 URL のバージョン ID を取得します。 このメソッドを使用すると、最後に確認してから親スコープが変更されたかどうかを確認できます。
例: メール アプリケーションがプロバイダー管理の通知を使用している場合は、閉じる前に親スコープのバージョンを取得し、開いたときにバージョンをもう一度確認する場合があります。 その後、アプリケーションは、新しい一連の通知をインデクサーにプッシュする必要があるかどうかを判断できます。
HasChildScopeRule 指定した URL に子ルール (URL 階層内の任意のレベルで子に適用される規則) がある場合は TRUE を返します。
例: URL が file:///C:\Folder\の場合、CSM に file:///C:\Folder\Subfolder\ 専用のスコープ 規則がある場合、このメソッドは TRUE を 返します。
HasParentScopeRule 指定した URL に親ルール (URL 階層内の任意のレベルの親に適用されるルール) がある場合は TRUE を返します。
例: URL が file:///C:\Folder\Subfolder の場合、CSM に file:///C:\Folder\ 専用のスコープ 規則がある場合、このメソッドは TRUE を 返します。
クロール範囲に含まれる 指定した URL がクロール スコープに含まれている場合は TRUE を 返します。
IncludedInCrawlScopeEx URL がクロール スコープに含まれるか、クロール スコープから除外される理由を説明する CLUSION_REASON 列挙から値を返し、URL がクロール スコープに含まれている場合は 値 TRUE を取得します。 このメソッドは、作業ルール セット内の競合を特定するのに役立ちます。

 

 

注

IncludedInCrawlScope メソッドと IncludedInCrawlScopeEx メソッドは、URL が CSM のルールのみに基づいてクロールされるかどうかを決定します。 設定されている FANCI ビットなど、URL がクロールされない他の理由が考えられます (つまり、ユーザーがフォルダーの [プロパティ] ダイアログ ボックスで高速インデックス作成を許可していません)。

 

ファイル パスを除外する必要があると思われる場合は、除外規則の末尾が "<path>\*" であることを確認してください。 ファイルまたはファイルパスを含める必要があるが含まれていないと思われる場合は、そのファイルまたはパスの FANCI ビット設定を確認してください。 これを行うには、ファイルまたはファイル パスを右クリックし、[ プロパティ] を選択し、[ 高速検索の場合は、Indexing Service がこのフォルダーにインデックスを作成できるようにする ] チェック ボックスがオンになっていることを確認します。 ファイルまたはファイル パスがここでインデックス作成用にマークされていない場合、包含規則に含まれている場合でもインデックスは作成されません。

リファレンス

ISearchCrawlScopeManager

ISearchCrawlScopeManager2

ISearchScopeRule

IEnumSearchScopeRules

概念的

検索ルートの管理