倒排索引 一

2021-08-21 07:07:52 字數 2206 閱讀 3278

畢業以後在網頁搜尋組,所以抽空就看看了《這就是搜尋引擎--核心技術詳解》,書比較白話文,對於我這樣的入門小白再合適不過了,還有一本《資訊檢索導論》比較系統和專業化,感興趣的可以買來看看。

海量的網頁資料,如何快速的找到包含使用者查詢的所有網頁至關重要,如同我們拿到一本很厚的書時,如果沒有目錄,我們可能要花費很長的時間找自己需要的內容,但是有了目錄,我們就能快速定位,這裡的目錄就相當於索引的功能。常見的搜尋引擎索引是倒排索引,倒排索引是單詞到文件對映關係的最佳實現方式,應用最為廣泛。

倒排索引

倒排索引是單詞-文件舉證的一種儲存方式。通過倒排索引可以快速根據單詞找到包含這個單詞的所有文件。

如上圖所示,倒排索引主要由單詞詞典和倒排檔案組成,單詞詞典存放在記憶體中,是組成所有文件的單詞的集合,單詞詞典內的每條索引項記載了單詞本身的一些資訊和指向倒排列表的指標,通過這個指標就可以找到對應的倒排列表,而倒排列表記載了出現過某個單詞的所有文件的文件列表和單詞在文件中出現的位置資訊,每條記錄稱為倒排向項。而倒排檔案是倒排列表在磁碟上的物理儲存。

以下是三種倒排索引

記錄單詞頻率,文件頻率和單詞在文件中出現的位置將作為搜尋結果排序的乙個重要因子,可以利用倒排索引的其他資訊計算文件得分,優化排序。

單詞詞典

如何快速的在單詞詞典中定位到某個單詞,通過指標獲得倒排索引項對於搜尋的相應速度非常重要。隨著網路新詞的出現,單詞詞典需要自身維護,如何高效的構建和查詢,對於單詞詞典非常中嗯要。常用的資料結構有雜湊加鍊表和樹形詞典結構。

主體部分是雜湊表,雜湊表的每一項都會儲存乙個指標,指標指向衝突鏈,衝突鏈中儲存相同雜湊值的單詞,不同的單詞可能存在相同的雜湊值,所以會形成鍊錶結構。

建立雜湊加鍊表結構

在建立索引的過程中,單詞詞典會被建立起來,在解析文件的過程中,對於文件中出現的某個單詞t,首先利用雜湊函式獲得的雜湊值,找到對應的雜湊項,找到對應的衝突鍊錶,遍歷衝突鍊錶,如果存在這個單詞則說明之前出現過,則繼續下乙個單詞。如果在衝突鍊錶中沒有這個單詞,說明首次碰到,則加入到衝突鍊錶中,當所有文件都解析完成後,單詞詞典就建立起來了。

在雜湊加鍊表結構中查詢某個單詞

對單詞t雜湊,定位雜湊表,通過指標找到衝突鍊錶,遍歷相應的雜湊鍊錶找到這個單詞,進而獲得這個單詞的倒排列表,如果沒有找到這個單詞則返回空,說明沒有文件包含這個單詞。

樹形結構

主要利用b樹高效查詢的特點。b樹和雜湊的查詢方式不同,需要字典項進行排序,而雜湊並不要求此過程,形成層級查詢結構,先找到子樹,再進行順序遍歷即可找到匹配的葉子節點。最底層的葉子節點儲存單詞的位址資訊。

倒排列表

倒排列表主要記錄那些文件包含某個單詞,乙個單詞會被很多文件包含,這裡記錄的是文件編號(docid),單詞在這個文件出現的tf,以及單詞在文件的哪些位置出現,最終形成倒排項。

在實際儲存中,為了減少儲存空間,通常不會直接的儲存docid,而是儲存文件編號的差值,文件差值指的是倒排列表中相鄰兩個倒排索引項docid的差值,這是因為在索引構建過程中,可以保證後面出現的文件編號要大於前面出現的文件編號。

這實際也是資料壓縮的最簡單的方法,後面還會更為詳細的介紹索引結構的建立,動態索引的維護和更新以及索引在查詢中是如何起作用的。

倒排索引案例(一)

1 第一次三個文字樣式做測試 檔案內容 分別為a.txt,b.txt,c.txt 裡面的資料 2 第一次預期輸出結果樣式 inverted a.txt 3 inverted b.txt 1 inverted c.txt 3 mapreduce a.txt 2 mapreduce b.txt 2 ma...

索引介紹一 倒排索引

倒排索引 英語 inverted index 也常被稱為反向索引 置入檔案或反向檔案,是一種索引方法,被用來儲存在全文搜尋下某個單詞在乙個文件或者一組文件中的儲存位置的對映。它是文件檢索系統中最常用的資料結構。有兩種不同的反向索引形式 以英文為例,下面是要被索引的文字 我們就能得到下面的反向檔案索引...

倒排索引 和 倒排表

為什麼我們要說倒排索引呢?因為倒排索引是目前 搜尋引擎公司最對搜尋引擎最常用的儲存方式.也是搜尋引擎的核心內容 在搜尋引擎實際的引用之中,有時需要按照關鍵字的某些值查詢記錄,所以我們是按照關鍵字建立索引,這個索引我們就稱之為 倒排索引,而帶有倒排索引的檔案我們又稱作 倒排索引檔案也可以叫它為 倒排檔...