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

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

        在對writeBlocks方法分析時,可先分析writeBlock方法,首先abc、abcd、abcde能夠寫在一個block中,從可知先將每一個詞的後綴寫入到suffixWriter流中,經過可知,再寫入該詞對應的postings信息,而且採用了壓縮存儲,這個細節放到之後再說,這裏的重點是詞的構建方式,如今能夠將postings信息當作詞對應的value。當這三個都寫入後,表明一個block已經生成,見最後一行代碼:.net

對於PendingBlock而言,prefix比較好理解即公共前綴,startFP是termsOut流的文件指針,與該block相關的metaWriter、suffixWriter等流的數據會所有寫入到termsOut流中。至於其它變量hasTerms 、isFloor等下篇再分析。  指針

再看看compileIndex方法,從能夠看出FST是以block爲基本單位的,而不是以詞爲單位。慢慢又開始複雜了。。。blog

相關文章
相關標籤/搜索