Lucene系列 索引檔案

2021-07-02 01:04:35 字數 2055 閱讀 9453

本文介紹下lucene生成的索引有哪些檔案組成,每個檔案包含了什麼資訊。基於lucene 4.10.0。

索引(index)包含了儲存的文件(document)正排、倒排資訊,用於文字搜尋。索引又分為多個段(segments),每個新新增的doc都會存到乙個新segment中,不同的segments又會合併成乙個segment。segment儲存著具體的documents,每個doc有一系列的字段(field)組成,乙個field的值是多個詞(term),乙個term是以一些bytes。其遞進關係如下:

index -> segments -> documents -> fields -> terms

全域性性檔案

segments_n: 記錄索引的段數、各段名、各段中文件數、刪除數和更新數。可能有多個segments_n檔案,最大n的segments_n是有效檔案。

segments.gen: 記錄當前index的代數(generation),即segments_n的最大n

write.log:阻止多個indexwriter同時修改索引,一次只能有乙個indexwriter

段檔案

field資訊

***.fnm:field names,field名稱、索引方式

***.fdx:field index,索引***.fdt

***.fdt:field data,儲存stored fields

term資訊

***.tip:term index,***.tim的索引,實現對***.tim的隨機訪問

***.tim:term dictionary,按字典順序排列的terms,其值指向.doc/.pos

***.doc:倒排列表,term所在的docs、在doc中的頻率

***.pos:倒排列表,term在doc中的位置

***.pay:payloads and offsets,term在doc中的offset

注意:term的位置及頻率都是在某doc下term在field中的位置和偏移,位置以切詞為單位,偏移以字元為單位

term vector

term vector用於打分,儲存storetermvectors的field

***.tvx:term vector index,每個doc在xx.tvd、xx.tvf中的位置

***.tvd:term vector data file,每個doc的term vector field資訊在***.tvf中的位置

***.tvf:term vector fields,field的term列表及各term的頻率、位置或者偏移

歸一化

lucene為doc算分時根據各doc中的term weight(term對doc的重要性),但是不同的doc重要性不同、不同的field重要性不同、不同的文件長度也不同,要想讓不同文件的term weight之間有可比性(打分有可比性)需要進行歸一化。用於歸一化的因子(normalization factors),如doc和field的boost factor及長度,存在如下檔案中。

***.nvm:norms metadata

***.nvd:norms data

doc values

儲存docvalues型別的field,通過field value可以獲取對應的doc number列表, 便於進行一些概括或者打分。型別為docvalue的field在doc不能重名。

***.dvm:docvalues metadata

***.***:docvalues data

從上節可以看出正排資訊儲存在:段(segments_n) -> field (.fnm/.fdx/.fdt) -> term (./tvx/.tvd/.tvf)

倒排資訊儲存在:詞典(.tim) ->倒排表(.doc/.pos)

參考見:

Lucene索引檔案

如何產生乙個segment?當indexwriter執行commit時,會產生乙個segment。下述檔案每個segment乙個 fnm 儲存乙個segment中field個數,field名稱,field的屬性 是否索引 儲存etc fdt 儲存乙個segment中,每個document中所有fie...

lucene 索引檔案格式

lucene索引檔案格式詳解本文介紹lucene中segment,fnm,fdx,fdt,tii,tis,deletable cfs等格式檔案的用途。1。索引的segment 每個segment代表lucene的乙個完整索引段。通常,在乙個索引中,會包含有多個segment。每個segment都有乙...

lucene 索引檔案格式

下圖是乙個典型的lucene4.x的索引結構圖 lucene4.x之後的所有索引格式如下所示 檔名字尾描述 segments file segments.gen,segments n 儲存段檔案的提交點資訊 lock file write.lock 檔案鎖,保證任何時刻只有乙個執行緒可以寫入索引 s...