什么是倒排索引?


一、背景

在ElasticSearch中,通过关键字/关键词去查找对应文本的过程,是由全文检索引擎实现的。

全文检索引擎就是对非结构化文本进行解析、搜索的技术,而非结构化文本的处理关键在于分词倒排索引

二、什么是倒排索引?

在ElasticSearch中,倒排索引是一种常用的数据结构,用于快速检索文档中的某个词汇。

在传统的索引结构中,是通过哈希表或B+树的数据结构来实现的,存储的是文档ID与对应文档的映射。而在倒排索引中,存储的是关键词与对应文档ID的映射,所以可以快速定位到包含指定关键词的文档列表。

传统索引结构

ID 文档
1 深入理解Java虚拟机
2 Java编程思想

倒排索引结构

关键词 文档ID
深入 1
理解 1
Java 1,2
虚拟机 1
编程 2
思想 2

三、怎么使用倒排索引?

1、分词

分词指的是将文档中的原始文本拆分成一个个词项,在ElasticSearch中默认使用标准分词器(Standard Analyzer)进行分析。如"深入理解Java虚拟机"在经过分词之后就会拆分成["深入","理解","Java","虚拟机"]

2、排序

排序指的是搜索结果中会根据每个文档不同得分进行排序,一般会根据相似度算法(TF-IDF和BM25)进行算分。

得分排序规则:

  • 优先按得分排序,得分高的排前面
  • 得分相同的按文档长度排序,文档短的排前面

文章作者: GaryLee
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 GaryLee !
  目录