概念
- 源於實際應用中需要根據屬性的值來查找記錄
- 倒排索引(英語:Inverted index),也常被稱爲反向索引、置入檔案或反向檔案,是一種索引方法,被用來存儲在全文搜索下某個單詞在一個文檔或者一組文檔中的存儲位置的映射。它是文檔檢索系統中最常用的數據結構。通過倒排索引,可以根據單詞快速獲取包含這個單詞的文檔列表。倒排索引主要由兩個部分組成:“單詞詞典”和“倒排文件”。
與正排索引的區別
正排索引是通過文檔來查找單詞 反向索引卻是通過單詞來查找文檔
舉個栗子
DocId | Doc |
---|---|
1 | 谷歌地圖之父跳槽 Facebook |
2 | 谷歌地圖之父加盟 Facebook |
3 | 谷歌地圖創始人拉斯離開谷歌加盟 Facebook |
4 | 谷歌地圖之父跳槽 Facebook 與 Wave 項目取消有關 |
5 | 谷歌地圖之父拉斯加盟社交網站 Facebook |
對文檔進行分詞之後,得到以下倒排索引。
WordId | Word | DocIds |
---|---|---|
1 | 谷歌 | 1,2,3,4,5 |
2 | 地圖 | 1,2,3,4,5 |
3 | 之父 | 1,2,4,5 |
4 | 跳槽 | 1,4 |
5 | 1,2,3,4,5 | |
6 | 加盟 | 2,3,5 |
7 | 創始人 | 3 |
8 | 拉斯 | 3,5 |
9 | 離開 | 3 |
10 | 與 | 4 |
… | … | … |
總結
- 只要是索引都是爲了提高查詢速度的,
- 倒排索引可以輕鬆的實現正排索引無法實現的功能,由單個名詞查找到包含此名詞的文檔,是全文檢索的實現方式。
- ES的一個分片爲一個Lucene,Lucene全文檢索功能就是基於倒排索引。