倒排索引基本概念示意圖:
假設文件集合包含五個文件,每個文件內容如圖3-3所示,在圖中最左端一欄是每個文件對應的文件編號。我們的任務就是對這個文件集合建立倒排索引。
文件集合
需要對每個單詞賦予唯一的單詞編號,同時記錄哪些文當包含這些單詞,如下就是乙個簡單的索引,單詞id記錄了每個單詞的單詞編號,第二欄是對應的單詞第三欄即每個單詞對應的倒排列表。
簡單的倒排索引
比如單詞「**",其單詞編號為16,倒排列表為,說明文件集合中就5號文件包含了這個單詞。
到排列表還可以採用(1:1),(2;1),(3;2) 其中第一項代表文件的id,第二項代表在文件中出現的次數即單詞頻率資訊。
複雜的還具有單詞在文件中出現的相對位置。
單詞詞典是倒排索引中非常重要的組成部分,它用來維護文件集合中出現過的所有單詞的相關資訊,同時用來記載某個單詞對應的倒排列表在倒排檔案中的位置資訊。在支援搜尋時,根據使用者的查詢詞,去單詞詞典裡查詢,就能夠獲得相應的倒排列表,並以此作為後續排序的基礎。
例如:雜湊加鍊表
主體部分是雜湊表,每個雜湊表項儲存乙個指標,指標指向衝突鍊錶,在衝突煉表裡,相同雜湊值的單詞形成鍊錶結構。之所以會有衝突鍊錶,是因為兩個不同單詞獲得相同的雜湊值,如果是這樣,在雜湊方法裡被稱做是一次衝突,可以將相同雜湊值的單詞儲存在煉表裡,以供後續查詢。
假設使用者輸入的查詢請求為單詞3,對這個單詞進行雜湊,定位到雜湊表內的2號槽,從其保留的指標可以獲得衝突鍊錶,依次將單詞3和衝突鍊錶內的單詞比較,發現單詞3在衝突鍊錶內,於是找到這個單詞,之後可以讀出這個單詞對應的倒排列表來進行後續的工作,如果沒有找到這個單詞,說明文件集合內沒有任何文件包含單詞,則搜尋結果為空。
搜尋引擎 倒排索引
本節通過引入簡單例項,介紹與搜尋引擎索引有關的一些基礎概念,了解這些基礎概念對於後續深入了解索引的工作機制非常重要。3.1.1單詞 文件矩陣 單詞 文件矩陣是表達兩者之間所具有的一種包含關係的概念模型,圖3 1展示了其含義。圖3 1的每列代表乙個文件,每行代表乙個單詞,打對勾的位置代表包含關係。圖3...
搜尋引擎 倒排索引
一 基本概念 倒排索引源於實際應用中需要根據屬性的值來查詢記錄。這種索引表中的每一項都包括乙個屬性值和具有該屬性值的各記錄的位址。由於不是由記錄來確定屬性值,而是由屬性值來確定記錄的位置,因而稱為倒排索引 inverted index 帶有倒排索引的檔案我們稱為倒排索引檔案,簡稱倒排檔案 inver...
倒排索引 搜尋引擎的基石
在關係資料庫系統裡,索引是檢索資料最有效率的方式,但對於搜尋引起,他它並不能滿足其特殊要求 2 資料操作簡單 搜尋引擎使用的資料操作簡單 一般而言 只需要增 刪 改 查幾個功能 而且資料都有特定的格式 可以針對這些應用設計出簡單高效的應用程式。而一般的資料庫系統則支援大而全的功能 同時損失了速度和空...