カタログ マネージャーの使用

ISearchCatalogManager インターフェイスと ISearchCatalogManager2 インターフェイスには、インデックスの再作成やタイムアウトの設定など、検索カタログを管理するメソッドが用意されています。 Windows Search では現在、1 つのカタログしか使用されませんが、このインターフェイスは複数のカタログを個別に管理するためのより大きな制御を提供するように設計されています。 インターフェイスは、次の方法でカタログを管理します。

  • 他のインターフェイスへのアクセス — クロール スコープ マネージャー、データ変更通知、 および ISearchQueryHelper インターフェイスで必要な他の検索関連インターフェイスを取得します。
  • カタログ の内容 — 新しいデータのインデックスが作成され、カタログの全部または一部のインデックス再作成を強制するか、カタログ全体をリセットすることによって、他のアプリケーションとコンポーネントが適切に機能することを確認します。
  • カタログ プロパティ — プロトコル ハンドラーに接続するときにカタログがタイムアウトを管理する方法と、検索でのダイアクリティカル マークの処理方法を決定するプロパティを設定します。
  • カタログの状態 - 状態、サイズ、現在のアクティビティの状態など、カタログに関する情報を取得します。

このトピックは次のように整理されています。

Windows Search プラットフォームのいくつかの便利なインターフェイスでは、カタログ マネージャーのインスタンスを使用する前に必要があります。 指定したカタログのカタログ マネージャーを作成するには、 ISearchManager::GetCatalog メソッドを 呼び出します。 その後、Catalog Manager のメソッドを使用して、指定したカタログに基づくインターフェイスをインスタンス化して返すことができます。

メソッド 説明
GetQueryHelper クエリを簡単に作成できるように、現在のカタログの ISearchQueryHelper インターフェイスのインスタンスを取得します。
GetCrawlScopeManager 開発者が Windows Search Indexer のクロール スコープを変更できるようにするために、この検索カタログの ISearchCrawlScopeManager のインスタンスを取得します。
GetItemsChangedSink ISearchItemsChangedSink インターフェイスのインスタンスを取得します。このインターフェイスは、クライアント アプリケーションがプロバイダー管理の通知をサポートするためにアイテムに関するインデックス作成の状態情報を必要とする場合に、インデクサーに変更を通知するために使用します。 詳細については、「 変更のインデックスへの通知 」を参照してください。
GetPersistentItemsChangedSink ISearchPersistentItemsChangedSink のインスタンスを取得します。このインスタンスは、クライアント アプリケーションがインデックス作成の状態情報 (インデクサーマネージド通知) を必要としない場合に、インデクサーに変更を通知するために使用します。 詳細については、「 変更のインデックスへの通知 」を参照してください。

カタログ コンテンツの管理

カタログの管理には、2 つの主なタスクがあります。インデクサーのクロール スコープ内の URL のすべてまたは一部にインデックスを再作成し、基になるカタログ全体をリセットします。 URL のインデックスを再作成すると、古いデータは、新しいデータに置き換えられるまで、または新しいデータに置き換えされない限り、カタログに残ります。 カタログをリセットすると、カタログ全体が再構築され、クロール スコープ内のすべての URL にインデックスが再作成されます。 このプロセスには多くの時間がかかる可能性があり、破損している可能性のあるインデックスなどの問題を解決するための最後の手段としてのみ使用する必要があります。

新しいアプリケーション、プロトコル ハンドラー、またはフィルターをインストールする場合、セットアップ アプリケーションは、そのアプリケーションのデータの場所をインデクサーに確実に含めるために、そのディレクトリまたはルートをクロール スコープに追加する必要があります。 インデクサーがクロール スコープをクロールした後にデータがカタログに表示されない場合は、まず、データの場所がクロール スコープに含まれていることを確認する必要があります。 これを追加するには、Windows Search オプションのユーザー インターフェイスまたは クロール スコープ マネージャーを使用します。 場所がクロール スコープ内にあるように見える場合は、 ISearchCatalogManager インターフェイスの次のメソッドを使用して、インデクサーのクロール スコープまたはサブセット内のすべての URL のインデックス再作成を手動で強制できます。

インデックスの再作成方法 説明
ISearchCatalogManager::Reindex カタログ内のすべての URL のインデックスを再作成します。 古い情報は、新しい情報に置き換えられるまで残ります。
ISearchCatalogManager::ReindexMatchingURLs
ISearchCatalogManager::ReindexSearchRoot
パターンに一致する URL のインデックスを再作成するか、特定のルートから開始します (例: file:///C:\Foldername\Subfoldername\)。 これは、アプリケーションがインストールされている場合と同様に、特定のディレクトリまたは特定の拡張機能を使用してすべてを再クロールする場合に便利です。
PrioritizeMatchingURLs 他のインデックス作成タスクを完了するよりも、指定したパターンに一致する URL を持つインデックス項目に優先順位を付けるようインデクサーに指示します。

インデックスのリセット。 ISearchCatalogManager::Reset を呼び出すと、インデックス全体をリセットできます。 これにより、データベースを再構築し、クロール スコープ内のすべての URL の完全インデックスを実行することで、基になるカタログがリセットされます。 このプロセスには多くの時間がかかる可能性があり、破損している可能性のあるインデックスなどの問題を解決するための最後の手段としてのみ使用する必要があります。

重要

これらの方法によって発生する可能性があるインデックス作成の速度が低下するため、インデックス作成またはカタログの問題を特定する場合は、慎重に使用する必要があります。 まず、検索ルートとスコープ ルールがクロール スコープ マネージャーに追加されていることを確認し、ファイルとフォルダーに対して FANCI ビット (コンテンツ インデックスなしファイル属性) が正しく設定されていることを確認します。 これらが正しいことを確認した場合は、ReindexSearchRoot first と Reindex last を試してください。 これらのどちらも機能しない場合は、最後の手段としてリセットを試してください。

関連情報については、「変更のインデックスの通知」および「ISearchQueryHelper を使用したインデックスのクエリ」を参照してください。

カタログの状態の管理

カタログ マネージャーを使用すると、カタログの管理方法をカスタマイズするアプリケーション (カスタムの "カタログの状態" 監視アプリケーションなど) のカタログの状態を取得できます。 ただし、カタログ マネージャーは通常、ほとんどの検索関連の開発シナリオでは必要ありません。 一般的な用途は、"カタログの状態" 監視アプリケーションまたはコントロール パネルスタイルのアプリケーションです。

次の表では、カタログの状態を管理するために使用される ISearchCatalogManager のメソッドについて説明します。

メソッド 説明
URLBeingIndexed 現在インデックスが作成されている URL を取得します。 このメソッドは、インデクサーがアイテムに対して "スタック" したかどうかを特定しようとしたときに役立ちます。
NumberOfItems カタログ内の項目の数を取得します。
NumberOfItemsToIndex インデックスを作成する項目に関する次の情報を取得します。
  • plIncrementalCount - 次の増分インデックスでインデックスを作成する項目の数
  • plNotificationQueue - 通知キュー内の項目の数。 この情報は、アプリケーションが送信している通知をインデクサーが受信しているかどうかをチェックするために必要な通知アプリケーションに役立ちます。
  • plHighPriorityQueue - 優先度の高いキュー内の項目の数。 plHighPriorityQueue 内の項目は、最初にインデックスが作成されます。
GetCatalogStatus カタログの状態を取得し、現在の状態を示す列挙値を返します。 カタログの状態の可能性を次に示します。
  • アイドル状態: インデックス作成は必要ありません。
  • 一時停止: インデックス作成が一時停止されています (たとえば、バッテリが不足しているか、CPU 使用率が高いため)。
  • 回復中: インデックス作成は復旧中です。
  • フル クロール: インデクサーはクロール スコープのフル クロールを実行しています。
  • 増分クロール: インデクサーは増分クロールを実行しています。
  • 通知の処理: インデクサーは通知を処理しています。
  • シャットダウン: インデクサーがシャットダウンしています。
get_Name ISearchManager::GetCatalog メソッドで指定されている現在のカタログの名前を取得します。 現在、サポートされているカタログは SystemIndex のみです。

カタログ プロパティの管理

カタログ マネージャーで管理できるカタログ プロパティは 3 つあります。

  • 分音記号の秘密度。 分音記号は、単語の意味または発音を示すために文字に追加されるアクセント記号です。 このプロパティは、カタログが分音記号に敏感であるかどうかを判断します。また、ユーザーまたはユーザーが複数の言語でテキストを検索してインデックスを作成する場合に重要です。 たとえば、このプロパティを FALSE に設定すると、カタログは "resume" と "resumé" を同じ単語であるかのように扱います。
  • 接続タイムアウト。 このプロパティは、 TIMEOUT_INFO 構造で表されるように、サーバーまたはデータ ストアからの接続応答を待機する時間を表します。 このプロパティを使用して、Windows Search を微調整できます。
  • データタイムアウト このプロパティは、インデクサーとプロトコル ハンドラーまたはフィルターの間のデータ トランザクションを待機する時間を表します( TIMEOUT_INFO 構造体で表されます)。 この時間が経過すると、デッドロックやその他のリソースの問題を防ぐために、フィルター デーモンからのプロセスが終了します。

最後の 2 つのプロパティは、主に将来の使用を目的としています。 これらの各プロパティには get 、 メソッドと put メソッドがあります。

メソッド 説明
get_DiacriticSensitivity /
put_DiacriticSensitivity
カタログで単語を分音記号で区別する必要がある場合は TRUE。 カタログ で分音記号を無視する必要がある場合は FALSE。 インデックスのキーが無効になる可能性があるため、このプロパティを変更するにはインデックスを再構築する必要があります。
get_ConnectTimeout /
put_ConnectTimeout
インデクサーがサーバーまたはデータ ストアからの接続応答を待機する時間 (秒単位)。 これを高く設定すると、多くのサイトが応答しない場合に遅延が発生する可能性があります。 これを低く設定すると、一部のサイトがクロールされない可能性があります。
get_DataTimeout /
put_DataTimeout
インデクサーがデータ トランザクションを待機する時間 (秒単位)。

昇格モードでの実行

SystemIndex を更新するメソッド呼び出しでは、アプリケーションを管理者特権で実行する必要があります。 それ以外の場合、アプリケーションはアクセス拒否エラーで失敗します。

インデックスの管理

インデックスを管理するためのインターフェイス

検索マネージャーの使用

クロール スコープ マネージャーの使用