Lucene 索引優化 引數詳解

2021-08-29 21:16:39 字數 1018 閱讀 1681

indexwriter:

1、maxfieldlength:預設值(10000),一般設定為integer.max_value。即擷取該域中的前10000個項(

或片語)進行索引並被檢索,前10000個以外的項將不被索引和檢索。該值可在索引中隨時更改,並即時生

效(僅對更改後的索引生效,前面的依舊)。

2、setmergefactor:預設值(10),一般設定根據具體情況而定。例如,當mergefactor的因子設為10,那麼,每向索引新增10個document是,就會有乙個新的segment在磁碟建立;當第10個這樣的segment建立好後,它們就會合併成為乙個具有100個document的新segment。即:mergefactor取值較大(>10)時,儲存在記憶體中的document會增多(即記憶體占用多),磁碟i/o操作頻率減少,索引速度加快,適合批量索引;mergefactor取值較小(<10)時,儲存在記憶體中的document會減少(即記憶體占用少),磁碟i/o操作頻率增長,索引速度減緩,適合間歇性索引。

3、setmaxmergedocs:預設值(integer.max_value),根據上述對mergefactor的設定,例如,預設時,乙個segment段中的document會呈10、100、1000、10000、……這樣無限增長,為了防止segment無止境的增長,我們需要對乙個segment能包含的最大的document數量進行限制,這裡就用maxmergedocs進行設定。當mergefactor=10,maxmergedocs=2000時,乙個segment中的document數量會呈10、100、1000、2000、……,這樣增長,由於受到maxmergedocs的限制,第四次合併是並不是10000而是2000。

4、setmaxbuffereddocs:預設值(10),在2.0版本以前又叫「setminmergedocs」。索引在被寫到磁碟上時,需要首先儲存在記憶體中,該屬性就是用來限制記憶體中的文件數量的。該值設定較大時,會需要更多的記憶體空間;該值較小時,會發生頻繁的i/o操作!

我相信,大家了解了上述這些indexwriter的引數設定,必定會對優化自己的索引有所幫助!

Lucene搜尋優化技巧 索引篇

索引 1 t.termtext 替換為new string t.termbuffer 0,t.termlength 2 stringreader 和tokenstream物件都需要close 3 索引時document只用乙個 field只用幾個 乙個document物件對應多個field例項 fi...

lucene四種索引方式詳解

1。今天研究了一下lucene,對於初學者來說,有乙個地方以前還沒怎麼弄懂,可能不是很用心吧。今天又寫點小的作業,用lucene來實現,對於以前遇到的這點問題進行了總結。lucene提供四個不同的字段型別,你可以從中做出選擇 n keyword 不被分析,但是被索引並逐字儲存到索引中。這個型別適合於...

Lucene 索引檔案格式詳解

1.索引的segment 每個segment代表lucene的乙個完成的索引段,通常,在乙個索引中,會包含多個segment,每個segment都有統一的字首,這個字首是根據當前索引的document的數量而確立的。字首名是document轉成36進製後在前面加 組成。通常在以個完成的索引中,只有乙...