zoukankan      html  css  js  c++  java
  • lucene-利用内存中索引和多线程提高索引效率

    转载地址: 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合并写入

  • 相关阅读:
    奔跑的绵羊js
    13.差分
    12.子矩阵的和
    11.前缀和
    10.高精度除法
    9.高精度乘法
    8.高精度减法
    7.高精度加法
    6.数的三次方根
    5.数的范围
  • 原文地址:https://www.cnblogs.com/tianjixiaoying/p/4260035.html
Copyright © 2011-2022 走看看