为什么elasticsearch使用倒排索引

什么是倒排索引

首先,既然有倒排,肯定就也有正排(正向)索引

在搜索引擎中,关键词会被提取出来并且记录他在文档中出现的位置和次数,得到正向索引
文档1->关键词1:出现次数,位置列表->关键词2:出现次数,位置列表
文档2->关键词1:出现次数,位置列表->关键词2:出现次数,位置列表
当我要去查询关键词[csgo]要扫描索引库中所有文档,找出包含关键词csgo的文档,再根据打分模型打分,排出名次后给用户返回,当数据库文件数量庞大时,这样扫描全部文档的办法肯定无法满足需求。
所以搜索引擎会将正向索引重构为倒排索把文件到关键词的映射改为关键词到文件的映射。
索引结构变为:
关键词1->文档1->文档2
关键词2->文档1->文档2
假设我有俩个文档内容为 文档一:我是一个java工程师,他是ruby工程师文档2:我是一个ruby工程师
提取关键词
[我][java工程师][他][ruby工程师]
[我][java工程师]

对应关系如下表
关键词文章号
1,2
1
java工程师1,2
ruby工程师1

加上位置之后

关键词文章号[出现频率]出现位置
1[1],2[1]1,1
1[1]1
java工程师1[1],2[1]2,2
ruby工程师1[1]4

实现时,将上面三列保存为词典文件,频率文件,位置文件,当搜索一个词时,先在词典文件找到该词,通过词典文件指针找到位置文件,而词典文件通常非常小,所以整个过程是毫秒级的。
当数据非常庞大达到PB级时,普通的索引无法满足快速查询,就会极大地体现出倒排索引的优势

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值