インデックス操作でのIndexCustodianクラスの使用
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
インデックス操作には、ISearchIndexインターフェイスではなくIndexCustodianクラスを使用することを強くお勧めします。ISearchIndexインターフェイスには、インデックス操作のための次のAPI呼び出しが含まれています。
-
建て直す
-
更新
-
削除
-
リフレッシュ
これらのメソッドをISearchIndexインターフェイスで直接呼び出すと、ログエントリの欠落からStackOverflowException例外によるアプリケーションのクラッシュまで、さまざまな問題が発生する可能性があります。したがって、IndexCustodianクラスからこれらのAPI呼び出しを使用します。 IndexCustodianクラスを使用する場合、ISearchIndexインターフェイスとは次の点が異なります。
-
IndexCustodianクラスは、ジョブのコンテキストでインデックス操作を実行します。これにより、操作がアトミックになり、同じ検索インデックスに対して他の再構築操作や更新操作を同時に実行できなくなります。
-
IndexCustodianクラスは、indexing:startイベントとindexing:endイベントをトリガーします。Sitecoreは、インスタンスの同期を維持するためにイベントに依存し、一部のローカル変更を処理するためにもイベントを使用します。
検索インデックスから特定のドキュメントを削除するには (たとえば、ドキュメントが古い場合や、イベント ディセーブルのコンテキストでアイテムを削除するカスタマイズを実装する場合)、Content Search APIを実行します。
IndexCustodian.DeleteItem(ContentSearchManager.GetIndex("sitecore_web_index"), new SitecoreItemId(id);
又は
IndexCustodian.DeleteItem(ContentSearchManager.GetIndex("sitecore_web_index"), new SitecoreItemUniqueId(itemUri));
古いドキュメントは、インデックスの再構築操作を使用して検索インデックスから削除することもできます。
「Re-Index Tree」操作は、Refresh操作とも呼ばれ、Sitecoreデータベースにまだ存在するアイテムに基づいて検索インデックスを更新します。この操作では、検索インデックスから古いドキュメントは削除されません。