カタログ マネージャーの使用
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 | インデックスを作成する項目に関する次の情報を取得します。
|
GetCatalogStatus | カタログの状態を取得し、現在の状態を示す列挙値を返します。 カタログの状態の可能性を次に示します。
|
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 を更新するメソッド呼び出しでは、アプリケーションを管理者特権で実行する必要があります。 それ以外の場合、アプリケーションはアクセス拒否エラーで失敗します。