ElasticSearch 倒排索引(第六章)

ElasticSearch 目前也算是非常火了,站内搜索、日志分析都会用到它,而且还可以直接当成 NoSQL 数据库来使用。
接下来,我们就通过下面这个简单介绍,开启 es 之旅吧~

公众号 : 倔强小狮子

在这里插入图片描述


1. 正排索引

  1. 在我们关系型数据库中见到的索引成为 "正序索引"
  2. 假设一个 表中
idtitlecontent
1倔强的小狮子正在学习 ElasticSearch
2倒叙索引正在学习
3正序索引关系型数据库
  1. 那我们可以根据表中的数据进行建立索引
indexcontent
1正在学习 ElasticSearch
2正在学习
3关系型数据库
倔强的小狮子正在学习 ElasticSearch
倒叙索引正在学习 ElasticSearch
正序索引关系型数据库
  1. 当我们通过Id进行查询或者标题查询时可以快速定位到 centent 内容进行进行检索出来(当然关系型数据库存在导致索引失效,快速定位不是必然的)
  2. 当然我们可以进行 内容模糊(like)去搜索,就只能去内容中做匹配,熟知 关系型中进行 lilke 查询时,效率会受到性能瓶颈, 所以考虑到 倒叙索引
  3. 可以理解成是通过索引查询内容

2.倒叙索引

  1. 为了创建倒排索引,我们首先将每个文档的 content 域拆分成单独的 词(我们称它为 词条 或 tokens ),创建一个包含所有不重复词条的排序列表,然后列出每个词条出现在哪个文档。结果如下所示
  2. 倒叙索引恰恰与正序索引相反,而是通过 内容分词后建立 Index (第二章讲解ES分词器),通过 Index 找到 文档Id, 然后通过文档 Id 找到文档
idtitlecontent
1倔强的小狮子正在学习 ElasticSearch
2倒叙索引正在学习
3正序索引学习关系型数据库
  1. 倒叙索引后
indexdoc id = 1doc id = 2doc id = 3
正在
学习
ElasticSearch
正在学习
关系型
数据库
  1. 假设我们搜索学习,ElasticSearch, 我们只需要查找包含每个词条的文档
indexdoc id = 1doc id = 2doc id = 3
学习
ElasticSearch
  1. 两个文档都匹配,但是第一个文档比第二个匹配度更高。ES 使用仅计算匹配词条数量的简单 相似性算法 ,那么,第一个文档比第二个文档更佳。
  2. ElasticSearch官网具体解释
  3. 通过 文档关键字就可以快速定位到 文档 id, 通过 文档id 进而可以找到文档
  4. 一般来说,倒排索引分为两个部分:
  • 单词词典(记录所有的文档词项(content 中分词词项列表),以及词项到倒排列表的关联关系)
  • 倒排列表(记录单词与对应文档的结合关系,由一系列倒排索引项组成
  • 倒排索引项指:文档 id、词频(TF)(TF词项在文档中出现的次数,评分时使用(该词典在文档中出现的频率会进行打分,评分越高相似度越高))、位置(Position,后期短语查询会用到, 词项在文档中分词的位置)、偏移(记录词项开始和结束的位置,高亮显示时会用到,在搜索文档词项出现的位置前后加上标签))
  • 当我们去索引一个文档时,就会建立倒排索引,搜索时,直接根据倒排索引搜索。

期待你的关注,和我一起学习
转载说明:转载携带原文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值