一文读懂倒排序索引涉及的核心概念
创始人
2024-05-30 16:43:36
0

基础概念

相信对于第一次接触Elasticsearch的同学来说,最难理解的概念就是倒排序索引(也叫反向索引),因为这个概念跟我们之前在传统关系型数据库中的索引概念是完全不同的!在这里我就重点给大家介绍一下倒排序索引,这个概念搞明白之后,然后学习Elasticsearch就会清晰很多了。

正向索引和倒排序索引

在没有搜索引擎时,我们是直接输入一个网址,然后获取网站内容,这时我们的行为是:

document -> to -> words 通过文章,获取里面的单词,此谓正向索引,forward index.

有了搜索引擎后,我们的行为是:输入一个单词,找到含有这个单词或者和这个单词有关系的文章:word -> to -> documents 我们把这种索引叫做inverted index,直译过来叫做倒排序索引,也叫反向索引。

倒排序索引是实现“单词-文档矩阵”的一种具体存储形式,通过倒排序索引,可以根据单词快速获取包含这个单词的文档列表。倒排序索引主要由两个部分组成:“单词词典”和“倒排文件”

倒排序索引中重要的概念

文档(Document)

一般搜索引擎的处理对象是互联网网页,而文档这个概念要更宽泛些,代表以文本形式存在的存储对象,相比网页来说,涵盖更多种形式,比如Word,PDF,html,XML等不同格式的文件都可以称之为文档

字段(Field)

可以理解成数据库行中的字段,一个Document会由一个或多个Field组成

文档编号(Document ID)

在搜索引擎内部,会将文档集合内每个文档赋予一个唯一的内部编号,以此编号来作为这个文档的唯一标识,这样方便内部处理,每个文档的内部编号即称之为“文档编号”,后文有时会用DocID来便捷地代表文档编号。

举个例子,文档和词条之间的关系如下图:

上图中每一行就是一个Document

字段值被分析之后,存储在倒排索引中,倒排索引存储的是分词(Term)和文档(Doc),它们之间的关系,简化版的倒排索引如下图:

上图中counter代表统计分词的次数

单词词典(Lexicon)

搜索引擎的索引单位通常是单词,单词词典是由文档集合中出现过的所有单词构成的字符串集合,它用来维护文档集合中出现过的所有单词的相关信息,同时用来记载某个单词对应的倒排列表在倒排文件中的位置信息。

为了更好的理解单词词典这个抽象概念,我们通过Elasticsearch来进行举例,ES 为了能快速找到某个 Term,先将所有的 Term 排个序,然后根据二分法查找 Term,时间复杂度为 O(log n);,就像通过字典查找一样,这就是 Term Dictionary。如果 Term 太多,Term Dictionary 也会很大,放内存不现实,于是有了 Term Index。就像字典里的索引页一样,S开头的有哪些 Term,分别在哪页,可以理解 Term Index是一棵树,这棵树不会包含所有的 Term,它包含的是 Term 的一些前缀,通过 Term Index 可以快速地定位到 Term Dictionary 的某个 Offset,然后从这个位置再往后顺序查找。

在内存中用 FST 方式压缩 Term Index,FST 以字节的方式存储所有的 Term,这种压缩方式可以有效的缩减存储空间,使得 Term Index 足以放进内存,但这种方式也会导致查找时需要更多的 CPU 资源。对于存储在磁盘上的倒排表同样也采用了压缩技术减少存储所占用的空间。

分词(Analysis)

将文本切分为一系列单词的过程

例如文本:谷歌地图之父跳槽FaceBook

分词结果:谷歌\ 地图\之父\跳槽\FaceBook

倒排列表(PostingList)

倒排列表记录了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息,每条记录称为一个倒排项(Posting)。根据倒排列表,即可获知哪些文档包含某个单词。实际的倒排列表中并不只是存了文档ID这么简单,还有一些其它的信息,比如:词频(Term出现的次数)、偏移量(offset)等,如下图所示:

单词ID、单词和文档频率就不多说了,这里重点解释一下倒排列表:

DocID:单词出现的文档id

TF:单词在某个文档中出现的次数

POS:单词在文档中出现的位置

以单词“加盟”为例,其单词编号为6,文档频率为3,代表整个文档集合中有三个文档包含这个单词,对应的倒排列表为{(2;1;<4>),(3;1;<7>),(5;1;<5>)},含义是在文档2,3,5出现过这个单词,在每个文档的出现过1次,单词“加盟”在第一个文档的POS是4,即文档的第四个单词是“加盟”,其他的类似。

倒排文件(Inverted File)

所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件即被称之为倒排文件,倒排文件是存储倒排索引的物理文件。

词典、单词、倒排文件和倒排列表概念之间的关系

一张图就能很好的说明这些概念的关系

相关内容

热门资讯

北海巨妖标准版驱动:速度飞快但... 哎呀,说到这个北海巨妖标准版驱动,我真是又爱又恨!你知道吗,自从我装了这个驱动,我的电脑就像被附体了...
农村个体诊所申请条件-农村个体... 哎呀,说到咱们农村的个体诊所,这可真是个让人又爱又恨的话题啊!你知道吗,想要在农村开个诊所,那可不是...
uplay枭雄acs停止工作-... 哎呀,真是气死我了!今天本来想在Uplay上痛痛快快地玩一把枭雄ACS,结果这破游戏居然给我来个“停...
pear os 8 beta-... 大家好,我是PearOS的忠实粉丝小王!今天我要和大家聊聊我最近体验的PearOS8Beta版。说实...
北斗导航技术在广州-北斗导航技... 哎呀,说到北斗导航技术啊,这可真是我们广州人的一大福音!以前老是听说什么GPS啊,现在咱们自己有了北...
qt可以做安卓开发吗-用 Qt... 嘿,大家好!今天咱们来聊聊一个挺有意思的话题——用Qt来做安卓开发,是不是听着就觉得有点新鲜?我得说...
ibm aix操作系统-IBM... 说到IBMAix操作系统,可能很多小伙伴会一脸懵逼,这是啥?这不怪你们,毕竟这个老家伙已经有点跟不上...
绿云酒店管理系统缺点-绿云酒店... 哎呀,说起这个绿云酒店管理系统,我真是又爱又恨!爱的是它确实帮我们酒店解决了好多管理上的难题,恨的是...
联想电脑公司的全称-联想电脑公... 嘿,朋友们,今天咱们来聊聊那个大家都熟得不能再熟的品牌——联想电脑公司。你说,联想电脑,这名字谁不知...
windows10桌面便签-W... 哎呀,说到这个Windows10的桌面便签,我简直爱不释手!每天打开电脑,第一眼就能看到那些五颜六色...
品牌机ghost-Ghost ... 在这个数字世界里,品牌机Ghost就像是一个神秘的幽灵,无声无息地穿梭在我们日常生活的每一个角落。它...
如何用名字查身份证号码-通过名... 大家好,我今天要分享一个让我心跳加速的经历——用名字查到了身份证号码!是不是听起来就很刺激?我可不是...
小孩子肺炎怎么治疗-妈妈必知!... 哎呀,说到肺炎,这可真是让每个妈妈都心疼的事儿!尤其是看到小宝贝咳嗽得小脸通红,晚上睡不好觉,真是心...
android平台简介-探索安... 嘿,大家好!今天我要带你走进一个超级酷炫的世界——安卓平台!想象一下,你的手机不仅仅是通讯工具,它是...
雨林木风装机版u盘工具-雨林木... 大家好,我是你们的老朋友,一个对技术充满热情的电脑爱好者。今天,我要和大家聊聊那个让我爱不释手的小工...
ontrac快递-OnTrac... 哎呀,说到OnTrac快递,我这心里头啊,真是五味杂陈!你知道吗,这个OnTrac啊,有时候快得让人...
d3dx11 43.dll丢失... 哎呀,真是气死人了!今天我正准备打开我那心爱的游戏,电脑突然弹出一个窗口,说什么“d3dx11_43...
360恢复手机删除文件-手误删... 哎呀,真是吓死我了!昨天手一抖,不小心把手机里那些珍贵的照片全给删了!那些可是我和闺蜜们的旅行回忆,...
老年人肺气肿怎么办-老年朋友注... 哎呀,说到这肺气肿啊,真是愁死人了!特别是咱们这些老年朋友,年纪一大,身体就开始闹脾气,肺气肿就是其...
交通监控摄像头:城市的眼睛还是... 嘿,朋友们,今天咱们聊聊那些无处不在的交通监控摄像头。它们就像是城市的眼睛,无时无刻不在盯着我们的一...