本文介紹下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...