0

逆インデックスのニーズをサポートできるバイナリ ファイルの種類を見つけようとしています。一意の 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、... (またはそのようなもの) のバケットがあり、バケットの開始位置とバケットのサイズを示すヘッダーが必要です。このアイデアはストアのサイズを最適化しますが、ここでも新しいドキュメントの追加に問題があります。

「逆インデックス」ファイルを整理する方法はありますか?

一番。

4

2 に答える 2

0

いいですね。私は読み取りを非常に高速に行っていますが、一方で書き込みは遅くなります-各ファイルに一意のドキュメントが含まれていることを確認する必要があります(今のところ、一定数のファイルをメモリに保存し、それらをダンプする単純なモデルを持っています何らかのしきい値に達したときのディスク)。返信ありがとうございます。

于 2010-10-10T13:51:07.740 に答える
0

それぞれがドキュメントの ID を持つ 65536 個のファイルを探します。ファイルシステムに優しくしたい場合は、それをそれぞれ 256 個のファイルを持つ 256 個のディレクトリに分割します。

00\00.idx
00\01.idx
..
FF\FF.idx
于 2010-10-08T00:22:32.743 に答える