在一些博客和lucene网站上,我知道lucene在倒排索引中使用数据结构“跳过列表”。但我对此有些困惑。
1:一般情况下,跳表可以在内存中使用,但倒排索引存储在磁盘中。那么lucene如何在索引上进行搜索时使用它呢?只是在磁盘上扫描还是加载到内存?
2:跳过列表的插入操作通常使用随机(0,1)来决定是否插入到下一级,但在luncene介绍中,似乎每一项都有一个固定的间隔,那么lucene如何创建不同的“跳过列表”呢?
如果我错了,请纠正我。
发布于 2012-12-03 22:04:30
Lucene以几种不同的方式使用内存,即使在为搜索和排序(字段缓存)等操作创建IndexReader时,索引是持久存储在磁盘上的:
http://blog.mikemccandless.com/2010/07/lucenes-ram-usage-for-searching.html
基本上,这些二进制文件被复制到RAM中,以便更快地扫描和减少I/O。您可以从上面的链接中获得一个提示,即使用某些参数搜索可以强制Lucene“在搜索中跳过术语”,因此,可以在哪里使用该数据结构。
Lucene是开放源码的,因此您可以自己查看C#实现所使用的Java或Lucene.NET中的代码。
发布于 2016-07-20 18:00:20
https://stackoverflow.com/questions/13677514
复制相似问题