Luceneのセグメントとは何ですか?
セグメントの利点は何ですか?
Lucene インデックスは、セグメントと呼ばれる小さなチャンクに分割されます。各セグメントは独自のインデックスです。Lucene はそれらすべてを順番に検索します。
新しいライターが開かれたとき、およびライターがコミットまたは閉じられたときに、新しいセグメントが作成されます。
このシステムを使用する利点は、一度作成されたセグメントのファイルを変更する必要がないことです。インデックスに新しいドキュメントを追加すると、それらは次のセグメントに追加されます。以前のセグメントが変更されることはありません。
ドキュメントの削除は、セグメントのどのドキュメントを削除するかをファイルに示すだけで実行されますが、物理的には、ドキュメントは常にセグメントに残ります。Lucene のドキュメントは実際には更新されません。ドキュメントの以前のバージョンが元の分節で削除済みとしてマークされ、ドキュメントの新しいバージョンが現在の分節に追加されます。これにより、変更があった場合にコンテンツを常に変更しなければならないため、インデックスが破損する可能性が最小限に抑えられます。また、異なるマシン間でのインデックスの簡単なバックアップと同期も可能にします。
ただし、ある時点で、Lucene が一部のセグメントをマージすることを決定する場合があります。この操作は、最適化でもトリガーできます。
セグメントは、非常に単純にインデックスのセクションです。新しいドキュメントのみを含む新しいセグメントを作成することで、現在提供されているインデックスにドキュメントを追加できるという考えです。このように、インデックスに新しいドキュメントを追加するために、インデックス全体を頻繁に再構築するという費用のかかる問題に取り組む必要はありません。