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