Skip to content

Latest commit

 

History

History
41 lines (22 loc) · 1.8 KB

倒排索引基本概念.md

File metadata and controls

41 lines (22 loc) · 1.8 KB

什么叫做倒排索引

在搜索场景中,有一个名词非常的频繁叫做“倒排索引”,今天看了一篇参考资料,大致的了解了一下基本原理,记录下来,以备后用。

首先我们来看,搜索场景是这样的:我有海量文本存储在数据库中,同时每次搜索请求,会有query。

基于海量文本,一个比较直观的想法就是建立正排索引。就是我们的每一个文本(有着自己唯一的一个编号)对应着自己文档中的关键词。

形式如下:

doc1: 关键词1,关键词2,关键词3..... doc2:关键词3,关键词4,关键词5..... doc3:关键词1,关键词9,关键词7.....

这样的数据存储结构很不利与搜索。假设我们有一关键词“苹果”,我要找到包含苹果的文档,那么我需要对每个文档进行遍历,才可以,这样下来搜索时长太大。

倒排索引是这样的,使用关键词作为存储结构的key,每个关键词对应着包含这个关键词的doc,形式如下:

关键词1: doc1,doc3...... 关键词2: doc1...... 关键词3: doc1,doc2......

在这种情况下,如果我们去搜索包含“苹果”这个关键词的文档,只需要对key进行索引就可以。

这就是倒排索引,简单讲就是关键词作为key,包含对应关键词的文档集合作为value。

然后我们在讲一个比较细节的东西,整个倒排索引可以分为三个部分:词典,倒排列表,倒排文件

词典:存储自身编号和指向倒排列表的指针

倒排列表:存储包含某个关键词的所有文档列表以及对应关键词出现的次数位置等信息。

倒排文件:倒排文件是存储倒排索引的物理文件

参考文件链接: https://www.cnblogs.com/zlslch/p/6440114.html

我觉得这个讲的很好