lucene 利用記憶體中索引和多執行緒提高索引效率

2021-05-17 13:59:34 字數 805 閱讀 2475

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,new******analyzer(),true);

indexwriter fswriter=new indexwriter(fsdir,new******analyzer(),true);

while (...));//合併資料

ramwriter.close();

ramwriter=newindexwriter(ramdir,new ******analyzer(),true);

5)轉到第三步

4、並行索引多個索引檔案

可以使用多執行緒的索引程式,並行使用把ramdirectory作為乙個緩衝器,然後使用addindexes合併寫入

Lucene多索引目錄檢索

我們可以使用multireader 或multisearcher 搜尋多個索引庫。multireader reader new multireader new indexreader indexsearcher searcher new indexsearcher reader hits hits ...

Lucene多字段和多目錄索引

1 多欄位搜尋就是同時要乙個以上的字段中的內容進行比較搜尋,類似概念在sql中就是select from table where a like query or b like query lucene.net中的單個字段查詢大家都比較熟悉,這裡對欄位content進行搜尋 query query q...

lucene多索引上的搜尋

上 import org.apache.lucene.document.document import org.apache.lucene.document.field import org.apache.lucene.index.indexwriter import org.apache.luce...