索引壓縮

索引壓縮

信息檢索中有兩個(gè)主要數(shù)據(jù)結(jié)構(gòu):詞典和倒排記錄表猜嘱,索引壓縮主要是壓縮這兩個(gè)數(shù)據(jù)結(jié)構(gòu)。索引壓縮的優(yōu)點(diǎn):

  • 節(jié)省磁盤空間
  • 增加高速緩存技術(shù)的利用率
  • 加快數(shù)據(jù)從磁盤到內(nèi)存的傳輸速度

對解壓縮算法的要求:必須快

30定律

出現(xiàn)頻率最高的30個(gè)詞在書面文本中占了30%的出現(xiàn)比例鹰晨。

無損壓縮與有損壓縮

無損壓縮是指壓縮之后所有的信息都被保留忧侧。有損壓縮則會丟掉一些信息年枕,但會得到更高的壓縮率。

Heaps定律

一個(gè)對詞項(xiàng)數(shù)據(jù)進(jìn)行估計(jì)的方法是采用Heaps 定律:

M = k T^b

? 其中T是文檔集合的詞條個(gè)數(shù)懊纳,30 <= k <= 100, b 約等于 0.5揉抵。Heaps定律認(rèn)為:文檔集合大小和詞匯量之間可能存在的最簡單的關(guān)系是他們在對數(shù)空間中存在現(xiàn)象關(guān)系,并且這種線性關(guān)系往往和實(shí)際情況相吻合长踊。

Heaps定律提出了兩個(gè)假設(shè):

  • 隨著文檔數(shù)目的增加功舀,詞匯量會持續(xù)增長而不會穩(wěn)定到一個(gè)最大值
  • 大規(guī)模文檔集的詞匯量會非常大

Zipf定律

一個(gè)常用的估計(jì)詞項(xiàng)在文檔中分布的模型是Zipf定律:在給定的語料中,對于任意一個(gè)term身弊,其頻度(freq)的排名(rank)和freq的乘積大致是一個(gè)常數(shù)辟汰。如果t1 是文檔集合中出現(xiàn)最多的詞項(xiàng),t2是文檔集合中出現(xiàn)第二多的詞項(xiàng)阱佛,以此類推帖汞,排名第i多的詞項(xiàng)的文檔集合頻率cfi 與 1/ i成正比

cf~i \propto \frac 1 i

詞典壓縮

詞典壓縮的主要目的是將詞典放入內(nèi)存,或者說至少要把大部分詞典放入內(nèi)存凑术,這樣才能獲得很高的查詢吞吐率翩蘸。主要有兩種壓縮方式

  • 將詞典看成單一字符串的壓縮方法:整個(gè)詞典采用定長數(shù)組來存儲且所有詞項(xiàng)按照字典順序排序
  • 按塊存儲:將長字符串中的詞項(xiàng)進(jìn)行分組變成大小為k的塊(即k個(gè)詞項(xiàng)一組),然后每個(gè)塊只保留第一個(gè)詞項(xiàng)的指針淮逊,同時(shí)用一個(gè)額外字節(jié)將每個(gè)詞項(xiàng)的長度存儲在每個(gè)詞項(xiàng)的首部催首。

倒排記錄表的壓縮

主要思想是對文檔ID的間距而不是文檔ID進(jìn)行編碼。主要有以下方式:

  • 可變字節(jié)碼(VB):每個(gè)字節(jié)的低7位是二進(jìn)制數(shù)泄鹏,高位是一個(gè)決定位郎任。編碼的最后一個(gè)字節(jié)高位位置為1,位置為0备籽。處理器一般是以字節(jié)為處理單位,所以Variable ByteCode速度快车猬,但是處理大數(shù)據(jù)壓縮比不高
  • γ編碼:一個(gè)和最優(yōu)編碼長度差距在常數(shù)倍之內(nèi)的方法是γ 編碼霉猛。γ 編碼將間距G表示成長度(length)和偏移(offset)兩個(gè)部分進(jìn)行變長編碼。G的偏移實(shí)際上是G的二進(jìn)制編碼珠闰,但是前端的1 被去掉①惜浅。比如,對13(二進(jìn)制為1101)進(jìn)行編碼伏嗜,其偏移為101赡矢。G的長度指的是偏移的長度杭朱,并采用一元編碼。對于剛才的例子吹散,偏移的長度是3 位,因此其長度部分的編碼是1110八酒。因此空民,13 的整個(gè)γ 編碼是1110101,即長度部分1110 和偏移部分101 的連接羞迷。表5-5 中的右列中給出了一些其他數(shù)的γ 編碼的例子界轩。
    對γ 編碼解碼時(shí),首先讀入一元編碼直至遇到0 結(jié)束衔瓮,比如在對1110101 解碼時(shí)浊猾,會一開始讀入前4 位1110。然后便知道后面的偏移部分的長度是3热鞍,因此葫慎,再正確讀入后續(xù)的3 位編碼101,補(bǔ)上原來去掉的前端的1薇宠,最后可以得到 101→1101 = 13偷办。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市澄港,隨后出現(xiàn)的幾起案子椒涯,更是在濱河造成了極大的恐慌,老刑警劉巖回梧,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件废岂,死亡現(xiàn)場離奇詭異,居然都是意外死亡狱意,警方通過查閱死者的電腦和手機(jī)湖苞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來髓涯,“玉大人袒啼,你說我怎么就攤上這事∥臣停” “怎么了蚓再?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長包各。 經(jīng)常有香客問我摘仅,道長,這世上最難降的妖魔是什么问畅? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任娃属,我火速辦了婚禮六荒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘矾端。我一直安慰自己掏击,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布秩铆。 她就那樣靜靜地躺著砚亭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪殴玛。 梳的紋絲不亂的頭發(fā)上捅膘,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音滚粟,去河邊找鬼寻仗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛凡壤,可吹牛的內(nèi)容都是我干的署尤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鲤遥,長吁一口氣:“原來是場噩夢啊……” “哼沐寺!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起盖奈,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤混坞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后钢坦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體究孕,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年爹凹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了厨诸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡禾酱,死狀恐怖微酬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情颤陶,我是刑警寧澤颗管,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站滓走,受9級特大地震影響垦江,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搅方,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一比吭、第九天 我趴在偏房一處隱蔽的房頂上張望绽族。 院中可真熱鬧,春花似錦衩藤、人聲如沸吧慢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽娄蔼。三九已至,卻和暖如春底哗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锚沸。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工跋选, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哗蜈。 一個(gè)月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓前标,卻偏偏與公主長得像,于是被迫代替她去往敵國和親距潘。 傳聞我的和親對象是個(gè)殘疾皇子炼列,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354