在一些博客和Lucene网站上,我知道Lucene在倒排索引中使用了数据结构"跳表"。但我对此有一些疑惑。
1:通常,跳表可能用于内存中,但倒排索引存储在磁盘中。那么,在搜索索引时,Lucene如何使用它?只是在磁盘上扫描还是将其加载到内存中?
2:跳表的插入操作通常使用随机(0,1)来决定是否插入到下一个级别,但在Lucene介绍中,似乎每个术语都有一个固定间隔,那么Lucene如何创建不同或者说不同于普通跳表的“跳表”?
如果我错了,请纠正我。
在一些博客和Lucene网站上,我知道Lucene在倒排索引中使用了数据结构"跳表"。但我对此有一些疑惑。
如果我错了,请纠正我。
Lucene在不同的情况下使用内存,即使索引在磁盘上持久化,当创建IndexReader进行搜索和排序(字段缓存)等操作时:
http://blog.mikemccandless.com/2010/07/lucenes-ram-usage-for-searching.html
基本上,这些二进制文件会被复制到RAM中进行更快的扫描和减少I/O。您可以从上面的链接中了解到,使用某些参数进行搜索可以强制Lucene“跳过搜索中的术语”,因此可以使用该数据结构。