一、RAMDirectory和FSDirectory對比緩存
RAMDirectory在內存中所進行的操做比FSDirectory在磁盤上所完成的工做要快得多。多線程
二、即便使用索引參數來使Lucene減小在磁盤上合併段的頻率,基於FSDirectory的索引還要把它們寫入磁盤,而RAMDirectory徹底不用寫磁盤。線程
三、將RAMDirectory作爲一個緩衝器實現對索引的、批處理索引
1)建立一個基於FSDirectory的索引。內存
FSDirectoryfsdir=FSDirectory.getDirectory("/tmp/index",true);文檔
2)建立一個基於RAMDirectory的索引get
RAMDirectory ramdir=new RAMDirectory();it
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)轉到第三步
四、並行索引多個索引文件
能夠使用多線程的索引程序,並行使用把RAMDirectory做爲一個緩衝器,而後使用addIndexes合併寫入