逆インデックスのニーズをサポートできるバイナリ ファイルの種類を見つけようとしています。一意の ID で識別できるドキュメントがあり、各ドキュメントは 0 ~ 65535 の範囲で 360 の固定値を持つことができるとします。このようなもの:
Document0: [1, 10, 123, ...] // 360 個の値
Document1: [1, 10, 345, ...] // 360 個の値
これで、逆インデックスは簡単になりました。含まれているドキュメントの可能な値リストごとに作成でき、クエリを高速に実行できます。たとえば、次のようになります。
1: [ドキュメント 0、ドキュメント 1]
10: [ドキュメント0、ドキュメント1]
123: [ドキュメント0]
345: [文書1]
しかし、大量のドキュメントをある種のファイル (バイナリ) に保存し、高速にクエリを実行できるだけでなく、構造全体を再作成せずに新しいドキュメントを追加することもできます。
今、そのファイルを整理する方法に苦労しています。高速アクセスが必要な場合は、ファイルのシークと読み取りを行うために固定長のドキュメント配列が必要です。ただし、サイズが固定されているということは、ドキュメント リストに多くの空きスペースがあることを意味します。私の唯一のアイデアは、ある種のバケットシステムを持ち、各値が特定のサイズのバケットに属することです。たとえば、サイズが 1、2、4、8、16、32、... (またはそのようなもの) のバケットがあり、バケットの開始位置とバケットのサイズを示すヘッダーが必要です。このアイデアはストアのサイズを最適化しますが、ここでも新しいドキュメントの追加に問題があります。
「逆インデックス」ファイルを整理する方法はありますか?
一番。