lucene倒排索引的存儲(chǔ)方式

這篇文章主要介紹“l(fā)ucene倒排索引的存儲(chǔ)方式”,在日常操作中,相信很多人在lucene倒排索引的存儲(chǔ)方式問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”lucene倒排索引的存儲(chǔ)方式”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的武勝網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

            通過(guò)談?wù)刲ucene倒排索引的存儲(chǔ)方式(3-2)和談?wù)刲ucene倒排索引的存儲(chǔ)方式(3-1)的分析可知,當(dāng)有公共前綴的詞的數(shù)量達(dá)到指定閾值時(shí)會(huì)寫(xiě)入到一個(gè)Block中,不過(guò)還沒(méi)有對(duì)其中的細(xì)節(jié)進(jìn)行分析,現(xiàn)通過(guò)給定的輸入abc、abcd、abcde、abcdef、abcdf、abcdg、abe、abf、abg、abh,以及參數(shù)閾值MIN_BLOCK_SIZE = 3和MAX_BLOCK_SIZE = 4來(lái)對(duì)倒排索引的構(gòu)成進(jìn)一步研究。

            當(dāng)輸入abe時(shí)由于abcd、abcde、abcdef、abcdf、abcdg以abcd為前綴的個(gè)數(shù)為5個(gè)已經(jīng)超過(guò)MIN_BLOCK_SIZE個(gè)數(shù),因此達(dá)到寫(xiě)成一個(gè)Block的條件,由于MAX_BLOCK_SIZE=4所以對(duì)這5個(gè)item需要進(jìn)一步按照MIN_BLOCK_SIZE3個(gè)為一組進(jìn)行拆分,即abcd、abcde、abcdef會(huì)寫(xiě)到一個(gè)Block(該Block也是一個(gè)leafBlock,因?yàn)樗脑刂挥性~)中,除了前綴abcd,其余的后綴以及postings元數(shù)據(jù)(經(jīng)過(guò)壓縮)會(huì)全部寫(xiě)入到termsOut文件流中,對(duì)于該Block有以下重要屬性prefix, startFP, hasTerms, isFloor, floorLeadLabel, subIndices,其中prefix表示公共前綴即abcd,startFP表示termsOut文件流指針(通過(guò)該指針可以從tim文件中解析出該Block中每個(gè)詞的信息),hasTerms表示該塊是否包含詞(很明顯該Block中全部都是詞),isFloor為T(mén)rue表示該塊由于超過(guò)MAX_BLOCK_SIZE個(gè)數(shù)進(jìn)行了進(jìn)一步分塊,floorLeadLabel該塊中第一個(gè)詞的第prefixLen個(gè)字符(該塊為-1),subIndices表示子塊的索引(該塊沒(méi)有子塊)。然后abcdf與abcdg會(huì)同樣寫(xiě)入到一個(gè)新塊中,不過(guò)此時(shí)prefix記錄的是abcdf,floorLeadLabel記錄的是f。寫(xiě)完這兩個(gè)塊就得想辦法如何能定位這兩個(gè)Block了:首先這兩個(gè)塊的Floor都為T(mén)rue,先寫(xiě)入第一個(gè)塊的fp、hasTerm標(biāo)記和isFloor,再寫(xiě)入剩余Block的個(gè)數(shù)對(duì)每個(gè)Block寫(xiě)入floorLeadLabel(主要用于查詢(xún)某個(gè)詞時(shí)可以預(yù)判,如果不存在就無(wú)需加載該塊下所有的詞),這些信息最終會(huì)轉(zhuǎn)換成字節(jié)數(shù)組并且和前綴abcd一起寫(xiě)入FST中,該FST是保存在第一個(gè)Block中的,最后將pending列表中的abcd、abcde、abcdef、abcdf、abcdg替換成該Block,于是pending列表中的元素為pendingTerm:abc、pendingBlock:abcd以及新增的pendingTerm:abe。

           繼續(xù)添加abf、abg、abh,此時(shí)pending列表中有6個(gè)entry,其中5個(gè)term,1個(gè)block。最后需將這6個(gè)entry按照MIN_BLOCK_SIZE和MAX_BLOCK_SIZE設(shè)定的閾值繼續(xù)分塊:首先term:abc、block:abcd、term:abe會(huì)組成一個(gè)新的Block,其中在寫(xiě)入block:abcd時(shí)記錄的是block的文件指針,然后term:abf、abg、abh也會(huì)形成一個(gè)新的Block,最后這兩個(gè)新的Block會(huì)按照前面所述的方式一起寫(xiě)入FST中并保存在第一個(gè)Block中。至此倒排索引的存儲(chǔ)方式算是分析結(jié)束了,其實(shí)lucene的倒排索引的邏輯視圖還是樹(shù)狀的(最終會(huì)以FST的形式保存索引數(shù)據(jù)由于FST可以共享后綴所以FST是個(gè)圖,但是它也可以認(rèn)為是對(duì)樹(shù)的一種優(yōu)化,我們可以認(rèn)為FST是一種共享后綴的前綴樹(shù)),早期實(shí)現(xiàn)的跳躍鏈表也是樹(shù)狀的,而關(guān)系庫(kù)中常用的B樹(shù)也是樹(shù)狀的,它們?cè)诓樵?xún)的效率以及讀寫(xiě)的實(shí)時(shí)性上有一定的差異性,以后對(duì)這三種形式的樹(shù)進(jìn)行仔細(xì)的分析。后面還是著重對(duì)lucene的索引合并、多線程寫(xiě)入、實(shí)時(shí)性以及事務(wù)性方面進(jìn)行分析!

到此,關(guān)于“l(fā)ucene倒排索引的存儲(chǔ)方式”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

網(wǎng)站欄目:lucene倒排索引的存儲(chǔ)方式
URL地址:http://muchs.cn/article6/pdggig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、云服務(wù)器外貿(mào)建站、品牌網(wǎng)站建設(shè)、電子商務(wù)Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)