Lucene在倒排索引中如何使用跳表?

6

在一些博客和Lucene网站上,我知道Lucene在倒排索引中使用了数据结构"跳表"。但我对此有一些疑惑。

1:通常,跳表可能用于内存中,但倒排索引存储在磁盘中。那么,在搜索索引时,Lucene如何使用它?只是在磁盘上扫描还是将其加载到内存中?

2:跳表的插入操作通常使用随机(0,1)来决定是否插入到下一个级别,但在Lucene介绍中,似乎每个术语都有一个固定间隔,那么Lucene如何创建不同或者说不同于普通跳表的“跳表”?

如果我错了,请纠正我。

2个回答

4

Lucene在不同的情况下使用内存,即使索引在磁盘上持久化,当创建IndexReader进行搜索和排序(字段缓存)等操作时:

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

基本上,这些二进制文件会被复制到RAM中进行更快的扫描和减少I/O。您可以从上面的链接中了解到,使用某些参数进行搜索可以强制Lucene“跳过搜索中的术语”,因此可以使用该数据结构。
Lucene是开源的,因此您可以查看Java或Lucene.NET的代码以了解正在使用什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接