当前位置: 首页 > news >正文

ES中倒排索引机制

在ES的倒排索引机制中有四个重要的名词:Term、Term Dictionary、Term Index、Posting List。

  • Term(词条):词条是索引里面最小的存储和查询单元。一段文本经过分析器分析以后就会输出一串词条。一般来说英文语境中词条是一个单词,中文语境中一个词条是分词后的一个词组。

    此处涉及到分词器,分词器的作用是将一段文字分解为若干个词组,不同的分词器使用的分词算法不同,得到的分词结果也不同。

  • Term Dictionary(词典):词典是词条的集合,顾名思义,词典中维护的是Term。词典一般是由文本集合中出现过的所有词条所组成的集合。

  • Term Index(词条索引):由于词典中维护着文本中所有的词条,为了在其中更快的找到某个词条,我们为词条建立索引。通过压缩算法,词条索引的大小只有所有词条的几十分之一,因此词条索引可以存储在内存中,因此可以提供更快的查找速度。

  • Posting List(倒排表):倒排表记录的是词条出现在哪些文档里,以及出现的位置和频率等信息。倒排表中的每条记录称为一个倒排项(posting)。

将以上概念类比到词典中,Term相当于词典中的词语,Term Dictionary相当于词典本身,Term Index相当于词典的目录。

举个栗子,假设现在我们输入系统多段文本,经过分词器分词后得到以下词条:

  • elastic
  • flink
  • hadoop
  • kafka
  • spark

ES倒排索引机制

我们使用ES进行全文搜索时,如图所示,系统首先会通过Term Index找到该Term在Term Dictionary中的位置,再通过倒排索引结构找到对应的Posting,从而定位到该词组在文本中的位置,完成一次搜索。

 

http://www.lryc.cn/news/126266.html

相关文章:

  • 一生一芯4——使用星火应用商店在ubuntu下载QQ、微信、百度网盘
  • 编程练习(1)
  • pytorch安装VAE项目详解
  • SQL-每日一题【1517. 查找拥有有效邮箱的用户】
  • Python web实战之Django 的 WebSocket 支持详解
  • CDN(内容分发网络)
  • 前端高频面试题 Day01
  • 『C语言初阶』第八章 -隐式类型转换规则
  • Fortinet数据中心防火墙及服务ROI超300%!Forrester TEI研究发布
  • 【vue】简洁优雅的火花线、趋势线
  • 【软件工程】数据流图/DFD概念符号/流程图分层/数据字典
  • 时序预测 | MATLAB实现基于CNN卷积神经网络的时间序列预测-递归预测未来(多指标评价)
  • Python中的字符串与字符编码
  • 图数据库_Neo4j学习cypher语言_使用CQL命令002_删除节点_删除属性_结果排序Order By---Neo4j图数据库工作笔记0006
  • C语言学习笔记---数据的存储详解
  • js中的常见事件(鼠标事件,键盘事件,表单事件......)
  • 学校如何公布录取情况?源代码公布了
  • JAVA基础知识(一)——Java语言描述、变量和运算符
  • 时序预测 | MATLAB实现基于KNN K近邻的时间序列预测-递归预测未来(多指标评价)
  • 冉冉升起的星火,再度升级迎来2.0时代!
  • centos7安装erlang及rabbitMQ
  • 项目介绍:《WeTalk》网页聊天室 — Spring Boot、MyBatis、MySQL和WebSocket的奇妙融合
  • (el-Table)操作(不使用 ts):Element-plus 中Table 表格组件:多选修改成支持单选及表格相关样式的调整
  • 【JAVA】变量的作用域与生存周期
  • 中科亿海微FIFO使用
  • 使用maven打包时如何跳过test,有三种方式
  • 005-Spring 扩展点 :PostProcess
  • MFC中的窗体绘制事件函数:OnCtlColor、OnPaint、OnNcPaint、OnDrawItem、OnEraseBkgnd、OnDraw
  • dialogbot:开箱即用的对话机器人解决方案,涵盖问答型对话、任务型对话和聊天型对话等多种场景,为您提供全方位的对话交互体验。
  • TCP服务器—实现数据通信