2012-02-08 180 views
2

任何人都可以解釋索引文件在搜索時如何加載到內存中嗎?Lucene:搜索時加載索引文件?

是整個文件(FNM,TIS,FDT等)加載在一次或塊?

如何加載各個細分受衆羣以及按何種順序?

如何加密Lucene索引?

回答

2

具有索引段的主要一點是,可以很少加載整個索引在存儲器中。

在設計索引格式是考慮到最重要的限制是,磁盤尋求時間相對較長(上板基硬盤驅動器,仍在最廣泛使用的)。一個好的估計是每個字節的傳輸時間約爲0.01到0.02μs,而磁頭的平均搜索時間約爲5 ms!

使保存在內存中的部分通常是隻有字典,用於找出這個貼子列表磁盤*在開始塊。其他部分只能按需加載,然後從內存中清除,爲其他搜索騰出空間。

至於加密,這取決於你是否需要保持加密所有的時間(即使在內存中),或者如果它足夠只加密索引文件的索引。至於後者,我認爲加密文件系統就足夠了。至於前者,由於不同的索引壓縮技術已經存在,所以它當然也是可能的。不過,我認爲它並沒有被廣泛使用,因爲全文引擎的首要要求是速度。

[*]這是不是真的如此簡單,因爲我們對詞典進行二進制搜索,所以我們需要確保在第一結構中的所有項具有相等的長度。由於在字典中的正常詞語顯然不是這樣,並且填充填充代價太高(考慮到某些化學物質的詞長),我們實際上維護了兩個級別的詞典,第一個詞典(它需要適應內存並且是存儲在.tii文件中)保存第二個索引中的術語起始位置的排序列表(.tis文件)。然後第二個索引是所有項的連續數組,以及指向.frq文件中扇區的指針。第二個索引通常適合在內存中並在開始時加載,但它可能是不可能的,例如,爲bigram索引。另請注意,在一段時間內,Lucene默認不使用單個文件,而是使用所謂的複合文件(擴展名爲.cfs)來減少打開文件的數量。

+0

感謝您的回覆。你能提供一些鏈接以獲取更多信息嗎? – user1197658 2012-02-15 12:40:04