为了账号安全,请及时绑定邮箱和手机立即绑定

【ES系列(1)】倒排索引

标签:
Java

问题1)为什么会有倒排索引?

问题2)倒排索引是什么?(定义)

问题3)倒排索引的使用场景?


1,为什么会有倒排索引?

我们使用百度搜索,搜索记录的时候,是通过关键词和关键句子。是如何根据这些关键词,查询到对应的文档(页面)这些关键词是在数据库中怎么查询的呢?是用like吗?这样效率也太低了。所以就有了通过关键字查询文档的需求。这个需求肯定不能直接查询数据库,那该怎么办呢,所以ES就是为了解决这个问题。


2,倒排序?

倒排序的目标是根据关键字找到记录。(为了查询当前记录所在的位置)正排序的目标是根据关联字段,找到对应的关联记录内容。(为了查询关联的记录内容。)

例子:何为倒排索引?

常见的正常索引


https://img3.sycdn.imooc.com/605ebf4c0001271104970641.jpg

假设我们要通过id去查找content,我们会将ID做成索引,加快我们的查找

现在的问题是我们要去查到那些content中有b这两个词

首先想到的是依次去尝试content中是否有b,显然在时间复杂度上是很大的,尤其是数据库中数量很多时

那么如何去解决这个问题?

现在都需要引入倒排索引的思想

我们已content做成索引,这样查找ID的时间就快很多

跟正向的索引比较,也就是做了一个倒置,这就是倒排索引的思想

https://img1.sycdn.imooc.com/605ebf4c00016a6604820637.jpg


3,倒排序使用场景?
根据倒排序的特性,为了查询当前关键字所以在记录的位置。1、全文搜索(搜索引擎)在一组文档中查找某一单词所在文档及位置2、模糊匹配通过用户的输入去匹配词库中符合条件的词条3、商品搜索通过商品的关键字去数据源中查找符合条件的商品

原文链接:https://mp.weixin.qq.com/s/71r6OZ9TTmD_gZ2XiqFhUw

作者:一起写程序


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消