es倒排索引深入解读

文章目录

    • 一. Lucene
    • 二.倒排索引算法
      • 2.1 Posting List压缩算法
        • 2.1.1 FOR
        • 2.1.2 RoaringBitmap压缩
      • 2.3 FST压缩算法
        • 2.3.1 trie前缀树原理
        • 2.3.2 FST构建过程
          • NFA
          • DFA
          • FSM
          • FSA
          • FST:有限状态转换机构建原理
          • FST在lucene中实现原理


1.什么是搜索引擎?
全文搜索引擎: 自然语言处理(NLP)、爬虫、网页处理大数据处理如谷歌、百度、搜狗、必应等等
垂直搜索引擎: 有明确搜索目的的搜索行为各大电商网站、OA、站内搜索、视频网站等

2.搜索引擎应具备哪些要求?

  • 查询结果快: 高效的压缩算法,快速的编码和解码速度
  • 结果准确度: es7.0+ 使用BM25评分算法,es7.0-使用TF-IDF评分算法
  • 检索结果丰富: 召回率

3. 面向海量数据,如何达到“搜索引擎”级别的查询效率?

  • 索引: 帮助快速检索;以数据结构为载体;以文件的形式落地

4. MySQL innodb索引能解决大数据检索的问题吗?

  • 索引可能会失效
  • 检索的是文本,索引字段可能很长,树深增加,io次数增多
  • 精准度差
    在这里插入图片描述

一. Lucene

Lucene是一个成熟的全文检索库,由Java语言编写,具有高性能、可伸缩的特点,并且开源、 免费。 Lucene是一个IR库(Information Retrieval lib 后来才由Shay Banon在其基础上开发了Elasticsearch

全文检索∶索引系统通过扫描文章中的每一个词,对其创建索引,指明在文章中出现的次数和位置,当用户查询时,索引系统过就会根据事先简历的索引进行查找,并将查找的结果反馈给用户的检索方式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


二.倒排索引算法

倒排表的压缩算法
FOR: Frame Of Reference
RBM:RoaringBitmap

词项索引的检索原理
FST: Finit state Transducers

2.1 Posting List压缩算法

2.1.1 FOR

FOR: 针对稠密数组
在这里插入图片描述
在这里插入图片描述

2.1.2 RoaringBitmap压缩

RBM: 针对稀疏数组
在这里插入图片描述

在这里插入图片描述

2.3 FST压缩算法

2.3.1 trie前缀树原理

什么是trie树?

在这里插入图片描述

为什么要按照term字典序思想处理(但es的索引压缩不是trie)? 为了生成最小化的FST数据结构,复用相同字符节约空间

2.3.2 FST构建过程

NFA

NFA详情

Nondeteministic Finite Automaton,非确定自动状态机
A 是一个五元组 A = (Σ, S, s0, δ, F):
字母表 Σ (ϵ !∈ Σ)
有穷的状态集合 S
唯一的初始状态 s0 ∈ S
状态转移函数 δ
δ : S × (Σ ∪ {ϵ}) → 2S
接受状态集合 F ⊆ S
A 定义了一种语言 L(A): 它能接受的所有字符串构成的集合

在这里插入图片描述
约定:所有没有对应出边的字符默认指向一个不存在的 “空状态” ∅

DFA

NFA详情

Deterministic Finite Automaton,确定性有穷自动机
A 是一个五元组 A = (Σ, S, s0, δ, F):
字母表 Σ (ϵ !∈ Σ)
有穷的状态集合 S
唯一的初始状态 s0 ∈ S
状态转移函数 δ
δ : S × Σ → S
接受状态集合 F ⊆ S
在这里插入图片描述
约定: 所有没有对应出边的字符默认指向一个不存在的 “死状态”

FSM

有限个状态
同一时间只能处于同一个状态不同状态可以互相转换
状态是无序的

FSA

确定性:在任何给定状态下,对于任何输入,最多只能遍历一个transition
非循环:不可能重复遍历同一个状态
Final唯一性:当且仅当有限状态机在输入序列的末尾处于“最终"状态时,才"“接受”"特定的输入序列
在这里插入图片描述

FST:有限状态转换机构建原理

FST最重要的功能是可以实现Key到Value的映射,相当于HashMap<Key,Value>。FST的查询速度比HashMap要慢一点,但FST的内存消耗要比HashMap少很多。FST在Lucene中被大量使用,例如:倒排索引的存储,同义词词典的存储,搜索关键字建议等

在这里插入图片描述
在这里插入图片描述

FST在lucene中实现原理

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/121210.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于git约定式提交IDEA

背景 因为git提交的消息不规范导致被乱喷&#xff0c;所以领导统一规定了约定式提交 官话 约定式提交官网地址 约定式提交规范是一种基于提交信息的轻量级约定。 它提供了一组简单规则来创建清晰的提交历史&#xff1b; 这更有利于编写自动化工具。 通过在提交信息中描述功能…

docker使用(一)生成,启动,更新(容器暂停,删除,再生成)

docker使用&#xff08;一&#xff09; 编写一个 Dockerfile构建镜像构建失败构建成功 运行镜像运行成功 修改代码后再次构建请不要直接进行构建&#xff0c;要将原有的旧容器删除或暂停停止成功删除成功再次构建且构建成功&#xff01; 要创建一个镜像&#xff0c;你可以按照以…

stable diffusion实践操作-hypernetworks

系列文章目录 本文专门开一节写hypernetworks的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、h…

CSS中如何实现元素的旋转和缩放效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 元素的旋转和缩放效果⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏…

【Unity3D】UI Toolkit元素

1 前言 UI Toolkit简介 中介绍了 UI Builder、样式属性、UQuery、Debugger&#xff0c;UI Toolkit容器 中介绍了 VisualElement、ScrollView、ListView、GroupBox 等容器&#xff0c;UI Toolkit样式选择器 中介绍了简单选择器、复杂选择器、伪类选择器等样式选择器&#xff0c;…

韩老师java教程

基础知识 进制 进制首位表示方式二进制0B十进制无八进制0十六进制0X 进制转换 x进制转十进制 正常&#xff0c;没什么问题 十进制转x进制 将该数不断除以x&#xff0c;直到商为0为止&#xff0c;然后将每一步得到的余数倒过来&#xff0c;就是对应的x进制 二进制转八进…

酷开科技丨酷开系统,把电影院给你搬回家

在繁忙、混乱的快节奏工作中&#xff0c;人们总是渴望在下班后&#xff0c;逃离工作的桎梏找到一丝慰藉&#xff0c;看电影&#xff0c;则成为了很多人宣泄情感、放松心情的一种方式。但是&#xff0c;电影院的时间和地点总是那么不受控制&#xff0c;要么地点太远、要么场次不…

OS | 第5章 插叙:进程API

OS | 第5章 插叙&#xff1a;进程API 文章目录 OS | 第5章 插叙&#xff1a;进程API5.1 fork()系统调用代码过程分析 5.2 wait()系统调用5.3 exec() 系统调用执行过程 为什么这样设计API&#xff1f;shell执行过程shell 重定向pipe()>>>>> 欢迎关注公众号【三戒…

IDEA报错:Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found

问题&#xff1a; 使用IDEA新建spring boot项目&#xff0c;报错如下&#xff1a; Plugin org.springframework.boot:spring-boot-maven-plugin: not found解决办法&#xff1a; 1.在本地maven仓库中找到spring-boot-maven-plugin的版本号 2.在pom.xml文件中添加对应的版本…

城市小车的优势,用五菱宏光mini,轻松应对城市拥堵与环保挑战。

掌握五菱宏光mini的驾驶技巧&#xff0c;让拥堵不再困扰你 合理利用车辆尺寸&#xff0c;轻松穿梭于城市道路 五菱宏光mini的尺寸小巧&#xff0c;长度不到3米&#xff0c;宽度不到1.5米&#xff0c;让你可以在狭窄的城市街道上轻松穿梭。掌握这一技巧&#xff0c;让你在拥堵…

什么是瓷片电容封装 | 百能云芯

瓷片电容封装是一种常见的电子元件封装方式&#xff0c;它广泛应用在电子设备中&#xff0c;用于存储和释放电荷&#xff0c;以实现电路的稳定工作。在本文中&#xff0c;我们将详细介绍瓷片电容封装的特点以及用途。 瓷片电容封装的特点&#xff1a; 瓷片电容是一种以陶瓷材料…

【USRP】调制解调系列6:16APSK、32APSK 、基于labview的实现

APSK APSK是&#xff0c;与传统方型星座QAM&#xff08;如16QAM、64QAM&#xff09;相比&#xff0c;其分布呈中心向外沿半径发散&#xff0c;所以又名星型QAM。与QAM相比&#xff0c;APSK便于实现变速率调制&#xff0c;因而很适合目前根据信道及业务需要分级传输的情况。当然…

机器学习前沿:改进自身缺陷,满足新战略

前机械师&#xff08; 来源) 一、说明 机器学习在人工智能历史上扮演重要角色&#xff0c;然而&#xff0c;存在问题也不少。为了适应新时代和新任务&#xff0c;不做出重大改进是不可能的&#xff0c;本篇就一些突出问题和改进做出讨论。以便读者掌握未来的思路和方向。 二、机…

1783_CMD启动MATLAB同时执行一个脚本

全部学习汇总&#xff1a; GitHub - GreyZhang/g_matlab: MATLAB once used to be my daily tool. After many years when I go back and read my old learning notes I felt maybe I still need it in the future. So, start this repo to keep some of my old learning notes…

框架分析(9)-Hibernate

框架分析&#xff08;9&#xff09;-Hibernate 专栏介绍Hibernate特性对象关系映射&#xff08;ORM&#xff09;数据库连接和事务管理查询语言&#xff08;HQL&#xff09;缓存机制透明的持久化操作对象的延迟加载事务管理 优缺点优点简化数据库操作跨数据库平台高度可定制性缓…

两台电脑共享文件设置

步骤一&#xff1a;确保网络连接正常&#xff0c;可网线直连。 两台电脑IP设置&#xff0c;例&#xff1a; 步骤二&#xff1a;启用共享功能。 1.在【控制面板】中选择【网络和Internet】&#xff1b; 2.点击【网络和共享中心】&#xff0c;在左侧导航栏中&#xff0c;点击【…

1775_树莓派3B键盘映射错误解决

全部学习汇总&#xff1a; GitHub - GreyZhang/little_bits_of_raspberry_pi: my hacking trip about raspberry pi. 入手树莓派3B之后用了没有多长时间&#xff0c;最初的这段时间感觉想让它代替我的PC机是不肯能的。性能先不说&#xff0c;我完全没有找到当初在我的笔记本上使…

【STM32】IIC使用中DMA传输时 发送数据总少一个的问题

问题描述 在使用STM32 I2C数据发送过程中&#xff0c;发现每轮实际发送出去的数据总比在DMA配置中设定的传输数据个数要少一个。比方说&#xff1a;DMA配置里设定的传输数据个数是10个&#xff0c;结果发现在总线上只能发出9个&#xff0c;经过进一步发现是少了最后一个数据。…

ARM DIY(六)音频调试

前言 今天&#xff0c;调试一下音频 硬件焊接 硬件部分核心是 LM4871 音频功放芯片 对于 SOC 来讲很简单&#xff0c;就一个引脚 HPOUTL&#xff08;单声道&#xff09;&#xff1b;对于扬声器来讲也很简单&#xff0c;就两个引脚&#xff0c;插上就可以了。 另外一个关键点…

实现 Trie (前缀树)

题目链接 实现 Trie (前缀树) 题目描述 注意点 word 和 prefix 仅由小写英文字母组成 解答思路 首先要理解前缀树是什么&#xff0c;参照该篇文章【图解算法】模板变式——带你彻底搞懂字典树(Trie树)在了解前缀树是什么后&#xff0c;设计前缀树就会更加容易&#xff0c;…