一、倒排索引是什么
ES中用到了倒排索引,啥叫倒排索引呢,一般查詢都是根據索引值來查找屬性,倒排索引實際應用中需要根據屬性值來查找記錄,這種索引表中的每一個項都包括一個屬性值和該屬性值的記錄地址。由於不是由記錄位置來確定屬性值,而是由屬性值來確定記錄的位置,因而成為倒排索引。帶有倒排索引的文件我們稱之為倒排索引文件,簡稱倒排文件。
二、舉例
在存儲文件之前,先對文件進行分析,將文件分詞,對分詞建立索引,例如下面一句話 (分好的詞就類似於屬性值,建立的索引就相當於屬性值位置記錄)
今天是星期天我們出去玩
文章 | |
---|---|
今天 | 文章1,文章3 |
星期天 | 文章2 |
出去玩 | 文章5,文章1 |
實際上es在做存儲的時候,更詳細(記錄出現的在哪個文章,出現的位置和次數)
文章 | |
---|---|
今天 | (文章1,<2,10>,2) (文章1,<8>,1) |
星期天 | (文章2,<12,25,100>,3) |
出去玩 | (文章5,<11,24,89>,3)(文章1,<8,19>,2) |
三、倒排索引待解決的問題
1.大小寫轉換問題 2.詞干抽取 looking和look應該處理為同一個詞 3.分詞處理 4.倒排索引文件過大,需要壓縮編碼