elasticsearch之倒排索引

倒排索引

elasticsearch有如此高的搜索性能,无异于使用了倒排索引。
倒排索引中有两个重要的概念:

  • 文档(Document):用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息
  • 词条(Term):对文档数据或用户搜索数据,利用某种算法分词,得到的具备含义的词语就是词条。例如:我是中国人,就可以分为:我、是、中国人、中国、国人这样的几个词条

创建倒排索引是对正向索引的一种特殊处理和应用,流程如下:

  • 将每一个文档的数据利用分词算法根据语义拆分,得到一个个词条
  • 创建表,每行数据包括词条、词条所在文档id、位置等信息
  • 因为词条唯一性,可以给词条创建正向索引
    此时形成的这张以词条为索引的表,就是倒排索引表,两者对比如下:
    image

在这里提一下,正向索引就是一张数据库创建的表

倒排索引的流程

这里以搜索华为手机为例

  • 第一步用户输入华为手机进行搜索
  • 第二步对用户输入的条件进行分词,分词结果为“华为”,“手机”
  • 第三步在倒排索引中查询词条对应的文档id
  • 上一步查询到的对应的文档id,可以通过正向索引来查询具体的文档

下面用一个流程图来介绍:
image

posted @   我睡觉时候不困  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示