正排索引和倒排索引

倒排索引(英語:Inverted index)嗤谚,也常被稱為反向索引脆侮、置入檔案反向檔案,被用來存儲在全文搜索下某個單詞在一個文檔或者一組文檔中的存儲位置的映射蝙砌。它是文檔檢索系統(tǒng)中最常用的數(shù)據(jù)結(jié)構(gòu)。

有兩種不同的反向索引形式:

一條記錄的水平反向索引(或者反向檔案索引)包含每個引用單詞的文檔的列表跋理。
一個單詞的水平反向索引(或者完全反向索引)又包含每個單詞在一個文檔中的位置择克。
后者的形式提供了更多的兼容性(比如短語搜索),但是需要更多的時間和空間來創(chuàng)建前普。

所謂的正排索引是從索引文檔到關(guān)鍵詞到內(nèi)容肚邢,倒排索引則是相反從關(guān)鍵詞到詞頻,位置拭卿,目錄等信息骡湖,現(xiàn)在通常用于搜索的。由于互聯(lián)網(wǎng)上的數(shù)據(jù)量無限大峻厚,不可能存儲足夠多的文檔响蕴,所以正排索引用處不大。

有兩種不同的反向索引形式:

  • 一條記錄的水平反向索引(或者反向檔案索引)包含每個引用單詞的文檔的列表惠桃。

  • 一個單詞的水平反向索引(或者完全反向索引)又包含每個單詞在一個文檔中的位置浦夷。

?我們就能得到下面的反向文件索引:

  • {\displaystyleT_{0}=}
    {\displaystyleT_{0}=}
    "it is what it is"
  • {\displaystyleT_{1}=}
    {\displaystyleT_{1}=}
    "what is it"
  • {\displaystyleT_{2}=}
    {\displaystyleT_{2}=}
    "it is a banana"
"a":      {2}
"banana": {2}
"is":     {0, 1, 2}
"it":     {0, 1, 2}
"what":   {0, 1}

檢索的條件"what", "is" 和 "it" 將對應(yīng)這個集合:
coll
coll

對相同的文字,我們得到后面這些完全反向索引辜王,有文檔數(shù)量和當(dāng)前查詢的單詞結(jié)果組成的的成對數(shù)據(jù)劈狐。 同樣,文檔數(shù)量和當(dāng)前查詢的單詞結(jié)果都從零開始誓禁。所以懈息,"banana": {(2, 3)} 就是說 "banana"在第三個文檔里 ( {\displaystyle T_{2}} T_{2}),而且在第三個文檔的位置是第四個單詞(地址為 3)摹恰。

"a":      {(2, 2)}
"banana": {(2, 3)}
"is":     {(0, 1), (0, 4), (1, 1), (2, 1)}
"it":     {(0, 0), (0, 3), (1, 2), (2, 0)}
"what":   {(0, 2), (1, 0)}

如果我們執(zhí)行短語搜索"what is it" 我們得到這個短語的全部單詞各自的結(jié)果所在文檔為文檔0和文檔1辫继。但是這個短語檢索的連續(xù)的條件僅僅在文檔1得到怒见。

反向索引數(shù)據(jù)結(jié)構(gòu)是典型的搜索引擎檢索算法重要的部分。
一個搜索引擎執(zhí)行的目標(biāo)就是優(yōu)化查詢的速度:找到某個單詞在文檔中出現(xiàn)的地方姑宽。以前遣耍,正向索引開發(fā)出來用來存儲每個文檔的單詞的列表,接著掉頭來開發(fā)了一種反向索引炮车。 正向索引的查詢往往滿足每個文檔有序頻繁的全文查詢和每個單詞在校驗文檔中的驗證這樣的查詢舵变。
實際上,時間瘦穆、內(nèi)存纪隙、處理器等等資源的限制,技術(shù)上正向索引是不能實現(xiàn)的扛或。
為了替代正向索引的每個文檔的單詞列表绵咱,能列出每個查詢的單詞所有所在文檔的列表的反向索引數(shù)據(jù)結(jié)構(gòu)開發(fā)了出來。
隨著反向索引的創(chuàng)建熙兔,如今的查詢能通過立即的單詞標(biāo)示迅速獲取結(jié)果(經(jīng)過隨機(jī)存儲)悲伶。隨機(jī)存儲也通常被認(rèn)為快于順序存儲。

構(gòu)建方法

簡單法

索引的構(gòu)建[4] 相當(dāng)于從正排表到倒排表的建立過程住涉。當(dāng)我們分析完網(wǎng)頁時 ,得到的是以網(wǎng)頁為主碼的索引表麸锉。當(dāng)索引建立完成后 ,應(yīng)得到倒排表 ,具體流程如圖所示:
流程描述如下:
1)將文檔分析稱單詞term標(biāo)記,
2)使用hash去重單詞term
  3)對單詞生成倒排列表
  倒排列表就是文檔編號DocID舆声,沒有包含其他的信息(如詞頻花沉,單詞位置等),這就是簡單的索引媳握。
  這個簡單索引功能可以用于小數(shù)據(jù)主穗,例如索引幾千個文檔。然而它有兩點限制:
  1)需要有足夠的內(nèi)存來存儲倒排表毙芜,對于搜索引擎來說, 都是G級別數(shù)據(jù)争拐,特別是當(dāng)規(guī)模不斷擴(kuò)大時 ,我們根本不可能提供這么多的內(nèi)存腋粥。
  2)算法是順序執(zhí)行,不便于并行處理架曹。

合并法

歸并法[4] ,即每次將內(nèi)存中數(shù)據(jù)寫入磁盤時隘冲,包括詞典在內(nèi)的所有中間結(jié)果信息都被寫入磁盤,這樣內(nèi)存所有內(nèi)容都可以被清空绑雄,后續(xù)建立索引可以使用全部的定額內(nèi)存展辞。
歸并索引
歸并索引
如圖 歸并示意圖:
合并流程:
1)頁面分析,生成臨時倒排數(shù)據(jù)索引A万牺,B罗珍,當(dāng)臨時倒排數(shù)據(jù)索引A洽腺,B占滿內(nèi)存后,將內(nèi)存索引A覆旱,B寫入臨時文件生成臨時倒排文件蘸朋,
  2) 對生成的多個臨時倒排文件 ,執(zhí)行多路歸并 ,輸出得到最終的倒排文件 ( inverted file)。
合并流程
合并流程
索引創(chuàng)建過程中的頁面分析 ,特別是中文分詞為主要時間開銷扣唱。算法的第二步相對很快藕坯。這樣創(chuàng)建算法的優(yōu)化集中在中文分詞效率上。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末噪沙,一起剝皮案震驚了整個濱河市炼彪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌正歼,老刑警劉巖辐马,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異朋腋,居然都是意外死亡齐疙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門旭咽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贞奋,“玉大人,你說我怎么就攤上這事穷绵〗嗡” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵仲墨,是天一觀的道長勾缭。 經(jīng)常有香客問我,道長目养,這世上最難降的妖魔是什么俩由? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮癌蚁,結(jié)果婚禮上幻梯,老公的妹妹穿的比我還像新娘。我一直安慰自己努释,他們只是感情好碘梢,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著伐蒂,像睡著了一般煞躬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天恩沛,我揣著相機(jī)與錄音在扰,去河邊找鬼。 笑死复唤,一個胖子當(dāng)著我的面吹牛健田,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播佛纫,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼妓局,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了呈宇?” 一聲冷哼從身側(cè)響起好爬,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎甥啄,沒想到半個月后存炮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蜈漓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年穆桂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片融虽。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡享完,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出有额,到底是詐尸還是另有隱情般又,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布巍佑,位于F島的核電站茴迁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏萤衰。R本人自食惡果不足惜堕义,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脆栋。 院中可真熱鬧胳螟,春花似錦、人聲如沸筹吐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丘薛。三九已至,卻和暖如春邦危,著一層夾襖步出監(jiān)牢的瞬間洋侨,已是汗流浹背舍扰。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留希坚,地道東北人边苹。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像裁僧,于是被迫代替她去往敵國和親个束。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容