次の方法で共有


スコープ ルールの管理

クロール スコープ マネージャー (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 をクロールし、アイテム、プロパティ、およびコンテンツをカタログに追加します。

Note

コントロール パネルにアクセスできるユーザーは、そのインターフェイスを使用してルールを変更できます。 したがって、スコープ管理を提供するアプリケーションでは、ユーザー ルールの保存されたコピーに依存するのではなく、列挙メソッドを使用して 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. ISearchCatalogManager インターフェイスのインスタンスを取得するには、"SystemIndex" の ISearchManager::GetCatalog を呼び出します。
  3. ISearchCatalogManager::GetCrawlScopeManager を呼び出して、ISearchCrawlScopeManager インターフェイスのインスタンスを取得します。

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

 

スコープ ルールの追加

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

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

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

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

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

 

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

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

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

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

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

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

 

スコープ ルールの削除

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

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

 

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

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

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

Note

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

 

 

既定の規則に戻す

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

 

スコープ ルールの列挙

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

 

スコープ ルールのトレース

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

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

メソッド 説明
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 を 返します。
IncludedInCrawlScope 指定した URL がクロール スコープに含まれている場合は TRUE を 返します。
IncludedInCrawlScopeEx URL がクロール スコープに含まれるか、クロール スコープから除外される理由を説明する CLUSION_REASON 列挙から値を返し、URL がクロール スコープに含まれている場合は TRUE の値を取得します。 このメソッドは、作業ルール セット内の競合を特定するのに役立ちます。

 

 

Note

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

 

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

リファレンス

ISearchCrawlScopeManager

ISearchCrawlScopeManager2

ISearchScopeRule

IEnumSearchScopeRules

概念

検索ルートの管理