lucene索引文件結(jié)構(gòu)分析在分析lucene的索引文件結(jié)構(gòu)之前,我們先要理解反向索引(invertedindex)這個(gè)概念,反向索引是一種以索引項(xiàng)為中心來(lái)組織文檔的方式,每個(gè)索引項(xiàng)指向一個(gè)文檔序列,
lucene 索引文件結(jié)構(gòu)分析
在分析 lucene 的索引文件結(jié)構(gòu)之前,我們先要理解反向索引(inverted index)這個(gè)概念,反向索引是一種以索引項(xiàng)為中心來(lái)組織文檔的方式,每個(gè)索引項(xiàng)指向一個(gè)文檔序列,這個(gè)序列中的文檔都包含該索引項(xiàng)。相反,在正向索引中,文檔占據(jù)了中心的位置,每個(gè)文檔指向了一個(gè)它所包含的索引項(xiàng)的序列。你可以利用反向索引輕松的找到那些文檔包含了特定的索引項(xiàng)。lucene正是使用了反向索引作為其基本的索引結(jié)構(gòu)。
索引文件的邏輯視圖
在lucene 中有索引塊的概念,每個(gè)索引塊包含了一定數(shù)目的文檔。我們能夠?qū)为?dú)的索引塊進(jìn)行檢索。圖 2 顯示了 lucene 索引結(jié)構(gòu)的邏輯視圖。索引塊的個(gè)數(shù)由索引的文檔的總數(shù)以及每個(gè)索引塊所能包含的最大文檔數(shù)來(lái)決定。
圖2:索引文件的邏輯視圖

lucene 中的關(guān)鍵索引文件
下面的部分將會(huì)分析lucene中的主要的索引文件,可能分析有些索引文件的時(shí)候沒(méi)有包含文件的所有的字段,但不會(huì)影響到對(duì)索引文件的理解。
1.索引塊文件
這個(gè)文件包含了索引中的索引塊信息,這個(gè)文件包含了每個(gè)索引塊的名字以及大小等信息。表 2 顯示了這個(gè)文件的結(jié)構(gòu)信息。
表2:索引塊文件結(jié)構(gòu)

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

3.索引項(xiàng)信息文件
這是索引文件里面最核心的一個(gè)文件,它存儲(chǔ)了所有的索引項(xiàng)的值以及相關(guān)信息,并且以索引項(xiàng)來(lái)排序。表 4 顯示了這個(gè)文件的結(jié)構(gòu)。
表4:索引項(xiàng)信息文件結(jié)構(gòu)

4.頻率文件
這個(gè)文件包含了包含索引項(xiàng)的文檔的列表,以及索引項(xiàng)在每個(gè)文檔中出現(xiàn)的頻率信息。如果lucene在索引項(xiàng)信息文件中發(fā)現(xiàn)有索引項(xiàng)和搜索詞相匹配。那么 lucene 就會(huì)在頻率文件中找有哪些文件包含了該索引項(xiàng)。表5顯示了這個(gè)文件的一個(gè)大致的結(jié)構(gòu),并沒(méi)有包含這個(gè)文件的所有字段。
表5:頻率文件的結(jié)構(gòu)

5.位置文件
這個(gè)文件包含了索引項(xiàng)在每個(gè)文檔中出現(xiàn)的位置信息,你可以利用這些信息來(lái)參與對(duì)索引結(jié)果的排序。表 6 顯示了這個(gè)文件的結(jié)構(gòu)
表6:位置文件的結(jié)構(gòu)

到目前為止我們介紹了 lucene 中的主要的索引文件結(jié)構(gòu),希望能對(duì)你理解 lucene 的物理的存儲(chǔ)結(jié)構(gòu)有所幫助。