倒排索引(英語:Inverted index),也常被稱為反向索引置入檔案反向檔案,是一種索引方法,被用來存儲全文搜索下某個單詞在一個文檔或者一組文檔中的存儲位置映射。它是文檔檢索系統中最常用的數據結構

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

  • 一條記錄的水平反向索引(或者反向檔案索引)包含每個引用單詞的文檔的列表
  • 一個單詞的水平反向索引(或者完全反向索引)又包含每個單詞在一個文檔中的位置。[1]

後者的形式提供了更多的兼容性(比如短語搜索),但是需要更多的時間和空間來創建。

例子

編輯

英文為例,下面是要被索引的文本:

  •  0. "it is what it is"
  •  1. "what is it"
  •  2. "it is a banana"

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

 "a":      {2}
 "banana": {2}
 "is":     {0, 1, 2}
 "it":     {0, 1, 2}
 "what":   {0, 1}

檢索的條件"what", "is""it" 將對應這個集合 

對相同的文字,我們得到後面這些完全反向索引,由文檔數量和當前查詢的單詞結果組成的的成對數據。 同樣,文檔數量和當前查詢的單詞結果都從零開始。所以,"banana": {(2, 3)} 就是說 "banana"在第三個文檔里 ( ),而且在第三個文檔的位置是第四個單詞(地址為 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)}

如果我們執行短語搜索"what is it" 我們得到這個短語的全部單詞各自的結果所在文檔為文檔0和文檔1。但是這個短語檢索的連續的條件僅僅在文檔1得到。

應用

編輯
  • 反向索引數據結構是典型的搜索引擎檢索算法重要的部分。
  • 一個搜索引擎執行的目標就是優化查詢的速度:找到某個單詞在文檔中出現的地方。以前,正向索引開發出來用來存儲每個文檔的單詞的列表,接着掉頭來開發了一種反向索引。 正向索引的查詢往往滿足每個文檔有序頻繁的全文查詢和每個單詞在校驗文檔中的驗證這樣的查詢。
  • 實際上,時間、內存處理器等等資源的限制,技術上正向索引是不能實現的。
  • 為了替代正向索引的每個文檔的單詞列表,能列出每個查詢的單詞所有所在文檔的列表的反向索引數據結構開發了出來。
  • 隨着反向索引的創建,如今的查詢能通過立即的單詞標示迅速獲取結果(經過隨機存儲)。隨機存儲也通常被認為快於順序存儲

參考書目

編輯
  1. ^ Ribeiro, Berthier de Araújo Neto; Baeza-Yates, R. Modern information retrieval. Reading, Mass: Addison-Wesley Longman. 1999: 192. ISBN 0-201-39829-X. 

相關

編輯

外部連結

編輯