4

いくつかのブログや lucene の Web サイトでは、lucene が転置インデックスでデータ構造「スキップ リスト」を使用していることを知っています。しかし、私はそれについていくつかのパズルを持っています。

1:一般的に、スキップリストはメモリ上で使用される可能性がありますが、転置インデックスはディスク上に格納されます。では、インデックスを検索するときに lucene はどのように使用するのでしょうか? ディスク上でスキャンするか、メモリにロードするだけですか?

2:skip リストの挿入演算子は、次のレベルに挿入するかどうかを決定するためにランダム (0,1) を使用することがよくありますが、lucenne の導入では、すべての用語で一定の間隔のように見えます。

間違っている場合は修正してください。

4

2 に答える 2

3

Luceneは、検索や並べ替え(フィールドキャッシュ)などの操作のためにIndexReaderが作成されたときにインデックスがディスクに保持されている場合でも、いくつかの異なる方法でメモリを使用します。

http://blog.mikemccandless.com/2010/07/lucenes-ram-usage-for-searching.html

基本的に、これらのバイナリファイルはRAMにコピーされ、スキャンがはるかに高速になり、I/Oが削減されます。上記のリンクで、いくつかのパラメーターを使用して検索すると、Luceneが「検索で用語をスキップ」する方法についてのヒントが得られます。したがって、そのデータ構造を使用できます。

Luceneはオープンソースであるため、JavaまたはLucene.NETでC#実装に使用されているコードを自分で確認できます。

于 2012-12-03T14:04:29.843 に答える