倒排索引的原理

倒排索引的原理:

有倒排索引肯定有正向索引,先说一下什么是正向索引:

​ 通俗的来说:正向索引就是通过文档去找关键词,倒排索引就是通过关键词去找文档

正向索引:

​ 假设有5个文件,每个文件都对应一个文件ID,文件的内容被表示为一系列关键词的集合。例如“文档1”经过分词,提取了20个关键词,然后记录每个关键词在文档中的出现次数和出现位置。

​ 得到正向索引的结构如下:

​ “文档1”的ID —> 单词1:出现次数,出现位置列表;单词3:出现次数,出现位置列表;……。

​ “文档2”的ID > 单词2:出现次数,出现位置列表;单词4:出现次数,出现位置列表;……。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gNpygwhs-1578474212414)(mdpic/855959-20170706154309815-1724421988.png)]

​ 所以正向索引就是:通过key(文档ID),去找value(关键词),然后确定出所有包含该 关键词 的 文档 ,将这些文档展示给用户。

​ 而倒排索引就是:通过value(关键词),去找key(文档ID),然后将找到的结果,即这些文档,展示给用户;

正向索引举例:

​ 当用户在主页上搜索关键词“华为手机”时,假设只存在正向索引(forward index),那么就需要扫描索引库中的所有文档,找出所有包含关键词“华为手机”的文档,然后将这些文档排出名次后,呈现给用户。

​ **因为互联网上收录在搜索引擎中的文档的数目是个天文数字,**所以这样的索引结构根本无法满足实时返回结果的要求。

所以,搜索引擎会采用倒排索引的搜索方式。

​ 即:把正向索引中的,由文件ID对应到关键词的方式,转换为由关键词对应到文件ID,每个关键词都对应着一系列的文件,这些文件中都出现过这个关键词。这就是倒排索引。

倒排索引的结构如下:

​ “关键词1” -----> “文档1”的ID,“文档3”的ID,…………。

​ “关键词2” -----> “文档2”的ID,“文档4”的ID,…………。。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9oCN2hW9-1578474212430)(mdpic/855959-20170706154505378-610589524.png)]

即:从关键字,去找文档。

倒排索引举例:

​ 假设文档集合包含五个文档,每个文档内容如图所示:

​ 图中最左端一栏是每个文档对应的文档ID。

​ 我们的任务就是对这个文档集合建立倒排索引。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7tKbnYfw-1578474212439)(mdpic/855959-20170224200300601-1967186316.png)]

图3 文档集合

首先要用分词系统(比如:IK分词器)将文档切分成一个一个的关键词

​ 这样每个文档就转换为:由多个关键词组成的一个序列,

​ 对每个不同的关键词赋予不同的关键词ID,同时记录下哪些文档中包含这个关键词,

​ 如此处理之后,我们就可以得到最简单的倒排索引。

如图所示:

​ 在图中,“单词ID”一栏记录了每个关键词的关键词ID,第二栏是对应的单词/关键词,第三栏即每个单词对应的一系列文档的ID,(也称为:倒排列表)。

​ 比如单词“谷歌”,其单词编号为1,它对应的文档ID列表为{1,2,3,4,5},即:说明文档集合中每个文档都包含了这个单词。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iy1C3UfG-1578474212444)(mdpic/855959-20170224200334195-2052728227.png)]

图4 简单的倒排索引

事实上,索引系统还可以记录除此之外的更多信息。

​ 比如:在单词对应的文档列表/倒排列表中,不仅记录了文档ID,还可以记载单词的频率信息(TF)和位置信息。

​ 频率信息,即:这个单词在某个文档中的出现次数,之所以要记录这个信息,是因为方便后续进行排序。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Stkm2Alq-1578474212452)(mdpic/855959-20170224200448148-924219280.png)]

图6 带有单词频率、文档频率和出现位置信息的

​ 以单词“拉斯”为例,其单词编号为8,文档频率为2,代表整个文档集合中有两个文档包含这个单词,对应的倒排列表为:{(3;1;<4>),(5;1;<4>)},其含义为:在文档3和文档5出现过这个单词,单词频率都为1,单词“拉斯”在两个文档中的出现位置都是4,即文档中第四个单词是“拉斯”。

​ 这个时候的倒排索引已经是一个非常完备的索引系统了,实际搜索系统的索引结构也是基本如此。

中的出现位置都是4,即文档中第四个单词是“拉斯”。

​ 这个时候的倒排索引已经是一个非常完备的索引系统了,实际搜索系统的索引结构也是基本如此。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值