如何把索引放在内存中提供查询服务

200W以下的数据量全部加载到内存最简单的方式是修改Lucene1.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即可

 

你可能感兴趣的:(apache,Lucene)