编程知识
正排索引与倒排索引
  • By刘立博
  • 2021-08-31 21:48:19
  • 690人已阅读

正排索引

正排索引(forward index) 类似关系型数据库数据行的指针,建立的是索引到数据行的映射关系,类似于本书的目录:

 

ID

内容

1

elastic是最流行的搜索引擎

2

搜索引擎是如何诞生的

 

倒排索引

倒排索引(inverted index) 建立的是字段到数据行的映射关系,类似于关键词索引

 

单词

ID

Elastic

1

流行

1

搜索引擎

1,2

如何

2

诞生

2

 

倒排索引查询流程

首先通过倒排索引获得对应的数据行主键,然后通过正排索引查找出主键对应的数据行指针,最后通过指针获取到完整的数据行信息

倒排索引组成

单词词典(term Dictionary)

单词字典一般由B+实现,数据结构由下图所示

倒排列表(Posting List)

倒排列表记录了单词对应的文档集合,由倒排索引Posting组成,主要包含以下信息:

 

(1)文档id: 用于获取原始信息

(2)单词频率: 记录该单词在文档中出现次数,用于后续相关性算法

(3)位置: 记录单词在文档中的分词位置(多个),用于词语搜索

(4)偏移: 记录单词在文档的开始和结束位置,用于高亮显示