當索引的檔案不多時,用 lucene 預設的設定就能得到很好的效能。但是,如果索引大量檔案,就得通過一些手段去提高 lucene 索引效能。
1、 索引效能差的原因
1) lucene 索引過程
在索引檔案的過程中, lucene 不是直接將檔案索引到磁碟上,而是首先快取,然後在寫到磁碟。如上圖所示。
2) 索引過程的瓶頸
2、 提高索引效能的方法
方式 1 :調整 indexwriter 引數
為控制索引占用的記憶體以及 segment 段合併的頻率, lucene 提供了以下三個引數,通過調整這三個引數的值,可以改善索引的效能。
方式 2 :使用 ramdirectory
ramdirectory 與 fsdirectory 的不同: ramdirectory 的所有操作都在記憶體中,而 fsdirectory 的操作直接對應磁碟。因此 ramdirectory 比 fsdirectory 要快。
先將索引寫入 ramdirectory 到一定程度在從 ramdirectory 寫入 fsdirectory 可以提高索引效能。
fsdirectory fsdir = fsdirectory.getdirectory( " /tmp/index " , true );
ramdirectory ramdir = new ramdirectory();
indexwriter fswriter = indexwriter(fsdir, new ******analyzer(), true );
indexwriter ramwriter = new indexwriter(ramdir, new ******analyzer(), true );
while (there are documents to index) );
ramwriter.close();
ramwriter = new indexwriter(ramdir, new ******analyzer(), true );
} }
其實zoie一方面解決了實時搜尋這個問題,另一方面也提高了建索引的速度,就是使用的方法二,先使用記憶體索引,一段時間後merger到磁碟上 提高索引效能
利用lucene,在建立索引的工程中你可以充分利用機器的硬體資源來提高索引的效率。當你需要索引大量的檔案時,你會注意到索引過程的瓶頸是在往磁碟上寫索引檔案的過程中。為了解決這個問題,lucene 在記憶體中持有一塊緩衝區。但我們如何控制lucene 的緩衝區呢?幸運的是,lucene 的類index...
影響Lucene索引速度原因以及提高索引速度技巧
在網上看了一篇外文文章,裡面介紹了提高lucene索引速度的技巧,分享給大家。先來看下影響索引的主要因素 maxmergedocs 該引數決定寫入記憶體索引文件個數,到達該數目後就把該記憶體索引寫入硬碟,生成乙個新的索引segment檔案。所以該引數也就是乙個記憶體buffer,一般來說越大索引速度...
用索引提高SQL Server效能
用索引提高sql server效能url 特別說明 在微軟的sql server系統中通過有效的使用索引可以提高資料庫的查詢效能,但是效能的提高取決於資料庫的實現。在本文中將會告訴你如何實現索引並有效的提高資料庫的效能。在關係型資料庫中使用索引能夠提高資料庫效能,這一點是非常明顯的。用的索引越多,從...