天天看點

Lucene 索引檔案結構分析

首先了解反向索引(Inverted index)這個概念,反向索引是一種以索引項為中心來組織文檔的方式,每個索引項指向一個文檔序列,這個序列中的文檔都包含該索引項。相反,在正向索引中,文檔占據了中心的位置,每個文檔指向了一個它所包含的索引項的序列。你可以利用反向索引輕松的找到那些文檔包含了特定的索引項。Lucene正是使用了反向索引作為其基本的索引結構。

索引檔案的邏輯視圖

在Lucene 中有索引塊的概念,每個索引塊包含了一定數目的文檔。我們能夠對單獨的索引塊進行檢索。下圖中顯示了 Lucene 索引結構的邏輯視圖。索引塊的個數由索引的文檔的總數以及每個索引塊所能包含的最大文檔數來決定。

圖:索引檔案的邏輯視圖

[img]http://wishlife.iteye.com/upload/picture/pic/13045/7daa4529-a1e8-3387-be58-f7394c10cd87.jpg[/img]

Lucene 中的關鍵索引檔案

下面的部分将會分析Lucene中的主要的索引檔案,可能分析有些索引檔案的時候沒有包含檔案的所有的字段,但不會影響到對索引檔案的了解。

1.索引塊檔案

這個檔案包含了索引中的索引塊資訊,包含了每個索引塊的名字以及大小等資訊。表 1 顯示了這個檔案的結構資訊。

表1:索引塊檔案結構

[img]http://wishlife.iteye.com/upload/picture/pic/13043/99e33af8-e45c-3afe-8925-49f5434546d0.gif[/img]

2.域資訊檔案

我們知道,索引中的文檔由一個或者多個域組成,這個檔案包含了每個索引塊中的域的資訊。表 2 顯示了這個檔案的結構。

表2:域資訊檔案結構

[img]http://wishlife.iteye.com/upload/picture/pic/13041/a68ca2ad-1187-32db-91e2-301e3a847102.gif[/img]

3.索引項資訊檔案

這是索引檔案裡面最核心的一個檔案,它存儲了所有的索引項的值以及相關資訊,并且以索引項來排序。表 3 顯示了這個檔案的結構。

表3:索引項資訊檔案結構

[img]http://wishlife.iteye.com/upload/picture/pic/13039/46c61263-d8d5-3b71-9f50-f9afd1ca3129.gif[/img]

4.頻率檔案

這個檔案包含了包含索引項的文檔的清單,以及索引項在每個文檔中出現的頻率資訊。如果Lucene在索引項資訊檔案中發現有索引項和搜尋詞相比對。那麼 Lucene 就會在頻率檔案中找有哪些檔案包含了該索引項。表4顯示了這個檔案的一個大緻的結構,并沒有包含這個檔案的所有字段。

表4:頻率檔案的結構

[img]http://wishlife.iteye.com/upload/picture/pic/13037/0ea31e89-184b-38dc-91d7-9f65a4784bb9.gif[/img]

5.位置檔案

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

表5:位置檔案的結構

[img]http://wishlife.iteye.com/upload/picture/pic/13035/2beb81d0-8611-312a-ba70-11c274a85372.gif[/img]