一、倒排索引是什么
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.倒排索引文件过大,需要压缩编码