1. 程式人生 > >談談lucene倒排索引的儲存方式(3-2)

談談lucene倒排索引的儲存方式(3-2)

        從談談lucene倒排索引的儲存方式(3-1)的內容可知,當擁有最大公共字首的詞的個數達到minItemsInBlock的閾值時,會將這些有公共字首的詞寫到一個block中,現對其進行分析。

        在對writeBlocks方法分析時,可先分析writeBlock方法,首先abc、abcd、abcde可以寫在一個block中,從可知先將每個詞的字尾寫入到suffixWriter流中,通過可知,再寫入該詞對應的postings資訊,並且採用了壓縮儲存,這個細節放到以後再說,這裡的重點是詞的構建方式,現在可以將postings資訊看成詞對應的value。當這三個都寫入後,代表一個block已經生成,見最後一行程式碼:

對於PendingBlock而言,prefix比較好理解即公共字首,startFP是termsOut流的檔案指標,與該block相關的metaWriter、suffixWriter等流的資料會全部寫入到termsOut流中。至於其它變數hasTerms 、isFloor等下篇再分析。  

再看看compileIndex方法,從可以看出FST是以block為基本單位的,而不是以詞為單位。慢慢又開