200W以下的数据量全部加载到内存最简单的方式是修改Lucene(1.9版本)源码 org.apache.lucene.index.IndexReader文件的第127行 将
return open(FSDirectory.getDirectory(path, false), true);
修改为
return open(new RAMDirectory(FSDirectory.getDirectory(path, false)), true);
将133行的
return open(FSDirectory.getDirectory(path, false), true);
修改为
return open(new RAMDirectory( FSDirectory.getDirectory(path, false)), true);
这样就可以在查询的时候将所有索引一次加载到内存,查询响应时间即使是第一次查询,也会小于0.1秒,但仅适用于索引文档数量不超过200W个,并且平均的页面大小不超过10K,文献检索系统 ,这种方式尤其适合。
创建索引的时候也能够使用 RAMDirectory , 比FSDirectory 要快很多 。
<o:p> </o:p>
令一种方法:
FSDirectory directory = FSDirectory.getDirectory(args[0], false); 1<o:p></o:p>
RAMDirectory directory = new RAMDirectory(args[0]); 2<o:p></o:p>
用2代替1即可
Lucene内存优化
本文介绍了一种通过修改Lucene源码实现将200万条以下数据加载至内存的方法,以此提升查询速度至0.1秒内。适用于文档数量不大且平均页面大小较小的情况。此外还介绍了使用RAMDirectory替代FSDirectory进行索引创建的优势。
10万+

被折叠的 条评论
为什么被折叠?



