lucene-利用内存中索引和多线程提高索引效率
2014-03-28 10:17
363 查看
转载地址: http://hi.baidu.com/idoneing/item/bc1cb914521c40603e87ce4d
1、RAMDirectory和FSDirectory对比RAMDirectory在内存中所进行的操作比FSDirectory在磁盘上所完成的工作要快得多。
2、即使使用索引参数来使Lucene减少在磁盘上合并段的频率,基于FSDirectory的索引还要把它们写入磁盘,而RAMDirectory完全不用写磁盘。
3、将RAMDirectory做为一个缓冲器实现对索引的、批处理
1)创建一个基于FSDirectory的索引。
FSDirectoryfsdir=FSDirectory.getDirectory("/tmp/index",true);
2)创建一个基于RAMDirectory的索引
RAMDirectory ramdir=new RAMDirectory();
3)向基于RAMDirectory的索引中增加文档。
IndexWriter ramwriter=new IndexWriter(ramdir,newSimpleAnalyzer(),true);
IndexWriter fswriter=new IndexWriter(fsdir,newSimpleAnalyzer(),true);
while (...){
...
ramwriter.addDocument(doc);
}
4)不定期把缓存在RAMDirectory中的所有数据写入FSDirectory
if (可以写入)
{
fswriter.addIndexes(Directory[] {ramdir});//合并数据
ramwriter.close();
ramwriter=newIndexWriter(ramdir,new SimpleAnalyzer(),true);
}
5)转到第三步
4、并行索引多个索引文件
可以使用多线程的索引程序,并行使用把RAMDirectory作为一个缓冲器,然后使用addIndexes合并写入
相关文章推荐
- lucene-利用内存中索引和多线程提高索引效率
- lucene-利用内存中索引和多线程提高索引效率
- 利用索引提高SQLServer数据处理效率
- 利用索引提高SQL Server数据处理效率
- 内存中直接建立索引: Lucene 建索引效率(litertiger)
- 利用索引提高SQLServer数据处理的效率
- 利用虚拟硬盘(把内存当作硬盘)来提高数据库的效率 续
- 利用索引优化查询,提高效率
- 利用索引提高SQL Server数据处理的效率(转)
- Java利用多线程执行SQL减少执行时间提高效率
- 利用索引提高SQL Server数据处理的效率
- Lucene.Net学习四——通过内存索引进一步提高索引的性能
- 利用索引提高查询效率
- 利用虚拟硬盘(把内存当作硬盘)来提高数据库的效率 续
- 利用索引提高SQL Server数据处理效率
- 利用虚拟硬盘(把内存当作硬盘)来提高数据库的效率(目前只针对SQL Server 2000)可以提高很多
- 利用虚拟硬盘(把内存当作硬盘)来提高数据库的效率(目前只针对SQL Server 2000)可以提高很多
- [菜鸟每天来段CUDA_C] 利用页锁定内存提高运算效率
- 利用索引提高SQL Server数据处理的效率
- 利用虚拟硬盘(把内存当作硬盘)来提高数据库的效率(目前只针对SQL Server 2000)可以提高很多