lucene索引檔案格式

2021-09-07 09:11:48 字數 1654 閱讀 5041

學習lucene索引檔案格式的目的是通過對lucene資料結構的理解,從而為lucene索引實現打下基礎。

索引檔案的整體結構

如下圖,這是整個索引檔案的整體結構,可以看到,實際上lucene索引儲存下了相當多的東西

但是,單從上面的檔案羅列,很難看出來乙個整體的結構,那麼,接下來這張圖就向我們展示這個結構,原圖**於網路,但是由於已經過時,我根據lucene最新的版本重新畫了一張。如果相對比3.0版就會發現,一些檔案字尾也被改變了,比如tis,tii變成新的tim,tip,另外,實際上del檔案也沒有使用了,究其原因是writer會動態計算被刪除的檔案,而不是寫入檔案。

索引檔案中最重要的結構便是倒排索引了,如下圖,其中dictionary就是所有term的集合,放在tim和tip中,而posting list則存放文件id,詞頻和單詞出現的位置,放在pos和doc中,其中doc存放的是詞頻,pos存放的是單詞位置。

編解碼器

索引的檔案格式有可能會進化,一旦版本更新之後就不能再支援其他的索引檔案格式,或者說乙個lucene版本只能支援lucene自己的索引勢必會降低lucene的靈活性,那麼如何保持索引檔案格式的靈活性和動態擴充套件性也是乙個值得考慮的問題,lucene採用編解碼器(codec)來實現這種靈活性。

編解碼器是lucene中負責與索引檔案直接讀寫的模組。所有的上層呼叫都基於編解碼器,這是**模組化的結果。我們來看編解碼器的一些設計思想。

首先是lucenexxcodec,這是codec的直接實現者,不同的版本可能會實現不同的codec,例如,lucene4.5就是lucene45codec。codec的實現採用了facade模式,遮蔽了後面的所有format

因為不同的版本可能會有不同的格式,所以對應將這些格式抽象出來對於可擴充套件性就尤為重要了。也正是因為如此,lucene前面的版本和後面的版本格式可能差別會很大。對於我們了解lucene檔案格式可能並不太好。但是lucene索引中許多精髓都類似,因而他們還是相通的,理解一種格式便於我們了解另一種。

在lucene4系列中,4.0的實現是所有格式中最全的,其他新版本可能或多或少依賴了老版本,所以可能你執行的是lucene4.5,但實際上看到的索引檔案是lucene41_0.doc。對於幾個期望更靈活的類和格式,lucene採取註冊查詢的方式來獲得。namedspiloader就是負責查詢codec,postingformat和docvaluesformat的類,而註冊的類會放在下面的檔案裡。org.apache.lucene.codecs.lucene41.lucene41codec便是配置在codec中的。

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...

lucene索引檔案格式

學習lucene索引檔案格式的目的是通過對lucene資料結構的理解,從而為lucene索引實現打下基礎。索引檔案的整體結構 如下圖,這是整個索引檔案的整體結構,可以看到,實際上lucene索引儲存下了相當多的東西 但是,單從上面的檔案羅列,很難看出來乙個整體的結構,那麼,接下來這張圖就向我們展示這...