什麼是正排索引(forward index)?
由key查詢實體的過程,是正排索引.
什麼是倒排索引(inverted index)?
由item查詢key的過程,是倒排索引。倒排索引可以理解為map< item, list< id>>,能夠由查詢詞快速(時間複雜度o(1))找到包含這個查詢詞的檔案的資料結構。
舉例:文件編號(id)
文件內容
1我喜歡數學
2我喜歡程式設計
3我考試數學成績很好
4程式設計太難了
分詞之後的正排索引map< id, list< item>>文件編號(id)
分詞後的集合(list< item>)12
34
分詞後倒排索引編號
單詞(item)
倒排列表(list< id>)1我
1,2,32喜歡
1,23
數學1,34程式設計
2,45考試3
6成績37
很好38太難了
4
在單詞對應的倒排列表中不僅記錄了文件編號,還記載了單詞頻率資訊,即這個單詞在某個文件中的出現次數,之所以要記錄這個資訊,是因為詞頻資訊在搜尋結果排序時,計算查詢和文件相似度是很重要的乙個計算因子,將其記錄在倒排列表中,以方便後續排序時進行分值計算。編號
單詞(item)
倒排列表(list< (id;tf)>);1我
(1;1),(2;1),(3;1)2喜歡
(1;1),(2,1)3數學
(1;1),(3;1)4程式設計
(2;1),(4;1)5考試
(3;1)6成績
(3;1)7很好
(3;1)
8太難了
(4;1)
編號單詞(item)
倒排列表(list<(id;tf;< pos>)>);1我
(1;1;<1>),(2;1;<1>,(3;1;<1>)2喜歡
(1;1;<2>),(2;1;<2>)3數學
(1;1;<3>),(3;1;<3>)4程式設計
(2;1;<3>),(4;1;<1>)5考試
(3;1;<3>)6成績
(3;1;<4>)7很好
(3;1;<5>)
8太難了
(4;1;<2>)
簡單來講:先分詞,再找到每個item對應的list< id>,最後進行集合求交集的過程。分詞和倒排查詢時間複雜度都是o(1),整個搜尋的時間複雜度取決於「求list< id>的交集」,因此實際上問題也變成了求兩個集合的交集。
正排索引和倒排索引簡單介紹
在搜尋引擎中,資料被爬取後,就會建立index,方便檢索。在工作中經常會聽到有人問,你這個index是正排的還是倒排的?那麼什麼是正排呢?什麼又是倒排呢?下面是一些簡單的介紹。網頁a中的內容片段 tom is a boy.tom is a student too.網頁b中的內容片段 jon work...
搜尋引擎之正排與倒排索引
正排索引 正向索引 正排表是以文件的id為關鍵字,表中記錄文件中每個字的位置資訊,查詢時掃瞄表中每個文件中字的資訊直到找出所有包含查詢關鍵字的文件。正排表結構如圖1所示,這種組織方法在建立索引的時候結構比較簡單,建立比較方便且易於維護 因為索引是基於文件建立的,若是有新的文件加入,直接為該文件建立乙...
正排索引和倒排索引理解詳解
叮嘟!這裡是小啊嗚的學習課程資料整理。好記性不如爛筆頭,今天也是努力進步的一天。一起加油高階吧!文件 單詞1 單詞2 單詞1 出現的次數 單詞出現的位置 單詞2 單詞2出現的位置 正排索引 在搜尋欄輸入id查詞條 已知id 單詞1 文件1 文件2,文件3 單詞2 文件1,文件2 倒排索引 將搜尋框中...