倒排索引
ElasticSearch 使用一种称为 倒排所以的结构,他适用于快速的全文搜索,一个倒排索引由文档中所有不重复词的列表构成,对于其中没歌词,都有一个包含他的文档列表
实例
(1): 假设文档集合包含五个文档,每个文档内容如图所示,在图中最左端一栏是每个文档对应的文档编号,我们的任务就是对这个文档集合建立倒排索引。
(2): 中文和英文等语言不同,单词之间没有明确分割符号,所以首先要用分词系统将文档自动切分成单词序列,这样每个文档就切换成为有单词序列构成的数据流,为了系统后续处理方便,需要对每个不同的单词赋予唯一的单词编号,同事记录下哪些文档包含这个单词,在如此处理结果后,我们可以得到最简单的倒排索引,单词ID
一栏记录了每个单词的单词编号,第二栏是对应的单词,第三栏即每个单词对应的倒排列表
举例
会出现的问题
Quick 和 quick 以独立的词条出现,然而用户可能认为他们是相同的词
fox 和 foxes 非常相似,就像 dog 和 dogs ; 他们有相同的词根
jumped 和 leap 尽管没有相同的词根,但是他们的意思很相近。 他们是同义词
搜索含有 Quick fox 的文档是搜索不到的
使用标准化规则 (normalization)
建立倒排索引的时候,会对拆分出的各个单词进行相应的处理,以提升后面搜索的时候能够搜索到县关联的文档的概率
这个时候 搜索 fox 和 foxes, foxes 转换 fox 。