ルセンインデックスのスイッチ
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Luceneでインデックス用の2つのディレクトリを維持することができます。これにより、インデックスディレクトリが完全なインデックス再構築前にリセット(削除)される問題が解決されます。これは本番環境でのみ問題となるため、テスト中や本番環境に移行する前にSwitchOnRebuildLuceneIndexクラスを使ってカスタムインデックスを再構成できます。
SwitchOnRebuildLuceneIndexクラスはLuceneIndexクラスから継承しています。特定のインデックスごとに2つのディレクトリを維持する機能を追加します。
SwitchOnRebuildLuceneIndexオブジェクトを初期化すると、セカンダリフォルダの存在を検証します。そのフォルダが存在しない場合は、そのフォルダを作成します。ベースラインディレクトリの名前に _secを付け加え、作成するフォルダ名として使います。
インデックスはIndexReader.LastModified(Directory) メソッドを用いて、最後の修正日に基づいてプライマリディレクトリを選択します。最新のディレクトリをプライマリディレクトリとして使用します。
インデックスプロパティストアには、どのディレクトリがプライマリでどちらがセカンダリであるかの情報が含まれています。
SwitchOnRebuildLuceneIndexオブジェクトは、CrawlingLogオブジェクトが初期化される際に以下のエントリを書き込みます。
“Resolving directories from index meta data store” "Resolving directories by last time modified" "Primary directory last modified = '…'" "Secondary directory last modified = '…'" “ReadUpdateDirectory is set to …” “FullRebuildDirectory is set to '{0}'”
インデックスの完全な再構築が完了すると、プライマリとセカンダリーのディレクトリが入れ替わります。
Luceneをインデックス用に2つのディレクトリを維持するために設定する方法:
-
特定の検索インデックスの型参照をSitecore.ContentSearch.LuceneProvider.SwitchOnRebuildLuceneIndexに変更します:
$(id) $(id) ...
!注設定ファイルをSwitchOnRebuildLuceneIndexメソッドで検索インデックスに調整した後、ウェブサイトはプライマリディレクトリのインデックスを使用します。完全なインデックスリビルドを行うたびに、このリビルドはセカンダリディレクトリで行われます。リビルド後はセカンダリディレクトリがプライマリディレクトリになります。