lucene-利用内存中索引和多线程提高索引效率
2009-12-25 22:22
316 查看
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合并写入
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-利用内存中索引和多线程提高索引效率
- 利用虚拟硬盘(把内存当作硬盘)来提高数据库的效率(目前只针对SQL Server 2000)可以提高很多
- Lucene.Net学习四——通过内存索引进一步提高索引的性能
- lucene正向索引(续)——域(Field)的元数据信息在.fnm里,在倒排表里,利用跳跃表,有利于大大提高搜索速度。
- 利用虚拟硬盘(把内存当作硬盘)来提高数据库的效率(目前只针对SQL Server 2000)可以提高很多
- 利用虚拟硬盘(把内存当作硬盘)来提高数据库的效率 续
- 利用索引提高SQL Server数据处理的效率
- 利用索引提高SQLServer数据处理效率
- 利用索引优化查询,提高效率
- 利用索引提高查询效率
- 如何提高Windows操作系统内存利用效率
- 利用虚拟硬盘(把内存当作硬盘)来提高数据库的效率(目前只针对SQL Server 2000)可以提高很多
- 如何利用索引提高 SQL Server 数据处理的效率
- 利用索引提高SQL Server数据处理的效率
- 内存中直接建立索引: Lucene 建索引效率(litertiger)
- 利用索引提高SQL Server数据处理效率
- 利用索引提高SQL Server数据处理的效率
- 利用索引提高SQL Server数据处理的效率(转)
- 利用索引提高SQL Server数据处理效率