Elasticsearch中的倒排索引

栏目: 后端 · 发布时间: 5年前

内容简介:再在创建索引之前,会对文档中的字符串进行分词。ES中字符串有两种类型,keyword和text。不同的分词器对相同字符串分词的结果大有不同,选择不同的分词器对索引的创建有很大的影响

前言

Elasticsearch创建索引流程 一文中,介绍了ES创建索引的流程。再流程中是调用Lucene的接口来创建索引的。本篇文章主要介绍ES中的索引——倒排索引

分词

在创建索引之前,会对文档中的字符串进行分词。ES中字符串有两种类型,keyword和text。

  • keyword类型的字符串不会被分词,搜索时全匹配查询
  • text类型的字符串会被分词,搜索时是包含查询

不同的分词器对相同字符串分词的结果大有不同,选择不同的分词器对索引的创建有很大的影响

如拆分“中华人民共和国国歌”

  1. ik_max_word分词器: 最细粒度拆分,分词结果如下:

    • 中华人民共和国
    • 中华人民
    • 中华
    • 华人
    • 人民共和国
    • 人民
    • 共和国
    • 共和
    • 国国
    • 国歌
  2. ik_smart分词器: 最粗粒度的拆分,分词结果如下:

    • 中华人民共和国
    • 国歌

可见,再ES中创建索引,选择合适的分词器是很重要的。

单词-文档矩阵

- 单词1 单词2 单词3 单词4
文档1
文档2
文档3
文档4

该矩阵是表达单词和文档两者之间包含关系的概念模型。

从横向看,每行代表文档包含了哪些单词,比如文档1包含了单词1和单词3,而不包含其它单词。

从纵向看,每列代表了某个单词存在于哪些文档。比如单词1在文档1和文档4中出现过。

简单来说,索引就是实现“单词-文档矩阵”的具体数据结构,而倒排索引则是实现了这种数据结构的具体方式。

倒排索引

倒排索引由两部分构成:

  • 单词词典
  • 倒排列表

它的结构如下:

Elasticsearch中的倒排索引

单词词典

单词词典的特性:

  1. 是文档集合中所有单词的集合
  2. 它是保存索引的最小单位
  3. 其中记录着指向倒排列表的指针

单词词典的实现:

Elasticsearch中的倒排索引

单词词典有两种数据结构实现: B+树Hash表

B+树和 Mysql 索引结构中主键索引数据结构一样,这里就不再介绍了

哈希表的key是单词的hash值,值是单词的链表,因为hash算法会有冲突的情况发生,所以这里的值是一个集合,里面保存着相同hash值得单词以及改词指向倒排列表的指针

倒排列表

倒排列表特性:

  1. 记录出现过某个单词的文档列表
  2. 同时还记录单词在所有文档中的出现次数和偏移位置

倒排列表元素数据结构:$$(DocID;TF;<POS>)$$

其中:

  • DocID:出现某单词的文档ID
  • TF(Term Frequency):单词在该文档中出现的次数
  • POS:单词在文档中的位置

举例

有下面单个文档

- 内容
文档1 百度的年度目标
文档2 AI技术生态部的年度目标
文档3 AI市场的年度目标

则他们生成的倒排索引

单词ID 单词 逆向文档频率 倒排列表(DocID;TF;<POS>)
1 目标 3 (1;1;<3>),(2;1;<5>),(3;1;<4>)
2 年度 3 (1;1;<2>),(2;1;<4>),(3;1;<3>)
3 AI 2 (2;1;<1>),(3;1;<1>)
4 技术 1 (2;1;<2>)
5 生态 1 (2;1;<3>)
6 市场 1 (3;1;<2>)

比如单词“年度”,单词ID为2,在三个文档中出现过,所以逆向文档频率为3,同时倒排索引中的元素也有三个: (1;1;<2>),(2;1;<4>),(3;1;<3>) 。拿第一个元素 (1;1;<2>) 进行说明,他表示“年度”再文档ID为1的文档中出现过1次,出现的位置是第二个单词

倒排索引的搜索过程

直到了倒排索引的内部结构之后,就能很好理解倒排索引的搜索过程了,其内部搜索过程如下图所示:

Elasticsearch中的倒排索引


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

跟小贤学运营

跟小贤学运营

陈维贤 / 机械工业出版社 / 2016-12-9 / 69.00

这是一部能帮助运营新人快速构建互联网运营方法论和快速掌握互联网运营实操的著作,是小贤在百度贴吧和小红书成长经历和运营经验的复盘。书中包含5大运营主题、40余种运营工具和渠道、50余种运营方法和技巧、100余个真实接地气的运营案例,能迅速帮助运营新人掌握全套实操技能和构建完整运营体系。 本书的视角和知识体系都比较立体化: 既有百度这样的互联网巨头运营规范和思路,又有小红书这样的明星创业公......一起来看看 《跟小贤学运营》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具