lucene索引文件結構分析在分析lucene的索引文件結構之前,我們先要理解反向索引(invertedindex)這個概念,反向索引是一種以索引項為中心來組織文檔的方式,每個索引項指向一個文檔序列,
lucene 索引文件結構分析
在分析 lucene 的索引文件結構之前,我們先要理解反向索引(inverted index)這個概念,反向索引是一種以索引項為中心來組織文檔的方式,每個索引項指向一個文檔序列,這個序列中的文檔都包含該索引項。相反,在正向索引中,文檔占據了中心的位置,每個文檔指向了一個它所包含的索引項的序列。你可以利用反向索引輕松的找到那些文檔包含了特定的索引項。lucene正是使用了反向索引作為其基本的索引結構。
索引文件的邏輯視圖
在lucene 中有索引塊的概念,每個索引塊包含了一定數目的文檔。我們能夠對單獨的索引塊進行檢索。圖 2 顯示了 lucene 索引結構的邏輯視圖。索引塊的個數由索引的文檔的總數以及每個索引塊所能包含的最大文檔數來決定。
圖2:索引文件的邏輯視圖

lucene 中的關鍵索引文件
下面的部分將會分析lucene中的主要的索引文件,可能分析有些索引文件的時候沒有包含文件的所有的字段,但不會影響到對索引文件的理解。
1.索引塊文件
這個文件包含了索引中的索引塊信息,這個文件包含了每個索引塊的名字以及大小等信息。表 2 顯示了這個文件的結構信息。
表2:索引塊文件結構

2.域信息文件
我們知道,索引中的文檔由一個或者多個域組成,這個文件包含了每個索引塊中的域的信息。表 3 顯示了這個文件的結構。
表3:域信息文件結構

3.索引項信息文件
這是索引文件里面最核心的一個文件,它存儲了所有的索引項的值以及相關信息,并且以索引項來排序。表 4 顯示了這個文件的結構。
表4:索引項信息文件結構

4.頻率文件
這個文件包含了包含索引項的文檔的列表,以及索引項在每個文檔中出現的頻率信息。如果lucene在索引項信息文件中發現有索引項和搜索詞相匹配。那么 lucene 就會在頻率文件中找有哪些文件包含了該索引項。表5顯示了這個文件的一個大致的結構,并沒有包含這個文件的所有字段。
表5:頻率文件的結構

5.位置文件
這個文件包含了索引項在每個文檔中出現的位置信息,你可以利用這些信息來參與對索引結果的排序。表 6 顯示了這個文件的結構
表6:位置文件的結構

到目前為止我們介紹了 lucene 中的主要的索引文件結構,希望能對你理解 lucene 的物理的存儲結構有所幫助。