历史文章文章累计490+)

国内最全的Spring Boot系列之一

国内最全的Spring Boot系列之二

国内最全的Spring Boot系列之三

国内最全的Spring Boot系列之四

国内最全的Spring Boot系列之五》

国内最全的Spring Boot系列之六

Mybatis-Plus通用枚举功能 [MyBatis-Plus系列] – 第493篇

Mybatis-Plus自动填充功能配置和使用 [MyBatis-Plus系列] – 第494篇

15篇MyBatis-Plus系列集合篇「值得收藏学习」

悟纤:哎,头发都白了~

师傅:徒儿这是怎么了?

悟纤:最近发现mysqllike “%sprinboot%” 查询很慢呢?

师傅:徒儿,你这是全表扫描了,在数据量大的情况下,确实查询比较慢。

悟纤:师傅,那这个怎么办,这个搜索功能少不了呀。

师傅:这个师傅就要用到搜索引擎了。

悟纤:那师傅,你赶紧教教我这个技能呢。

师傅:为师正有这个打算。

悟纤:那真是太好了。开干!!!!!!

导读

Hi大家好,我是悟纤。我就是我,不一样的烟火。我就是我,与众不同的小苹果

学习ElasticSearch之前,要先学习一些基本概念,这一小节的话,先来了解下全文检索概念

一、什么是全文检索

1.1 全文检索基本概念

全文检索是一种通过对文本内容进行全面索引搜索技术。它可以快速地在大量文本数据查找包含特定关键词或短语的文档,并返回相关的搜索结果全文检索广泛应用于各种信息管理系统应用中,如搜索引擎文档管理系统电子邮件客户端、新闻聚合网站等。它可以帮助用户快速定位所需信息提高检索效率和准确性。

(1)查询:有明确的搜索条件边界。比如年龄 15~25 岁,颜色 = 红色,价格 < 3000,这里的 15、25、红色、3000 都是条件边界。即有明确的范围界定。

(2)检索:即全文检索,无搜索条件边界,召回结果取决于相关性,其相关性计算无明确边界性条件,如同义词、谐音、别名、错别字、混淆词、网络热梗等均可成为相关性判断依据。

说明显示了符合包含java设计模式的搜索结果,并且对于java设计模式进行了高亮显示

1.2 用传统关系型数据库实现搜索存在问题

设想一个关于全文检索场景比如搜索Java设计模式

思考一下:用传统关系型数据库实现有什么问题?

如果是用MySQL存储文章我们应该使用这样的 SQL 去查询

select * from t_blog where content like “%Java设计模式%”

这种需要遍历所有的记录进行匹配,不但效率低,而且搜索结果不符合我们搜索时的期望

二、全文检索原理

在全文检索中,首先需要对文本数据进行处理,包括分词去除停用词等。

然后,对处理后的文本数据建立索引,索引会记录每个单词文档中的位置信息以及其他相关的元数据,如词频权重等。这个过程通常使用倒排索引inverted index)来实现,倒排索引将单词映射包含单词的文档列表中以便快速定位相关文档。

用户发起搜索请求时,搜索引擎会根据用户提供的关键词或短语,在建立好的索引中查找匹配的文档。搜索引擎会根据索引中的信息计算文档的相关性,并按照相关性排序返回搜索结果。用户可以通过不同的搜索策略过滤条件来精确控制搜索结果的质量和范围。

三、什么是倒排索引

正排索引(Forward Index和倒排索引(Inverted Index)是全文检索中常用的两种索引结构,它们在索引和搜索的过程中扮演不同的角色。

3.1正排索引(正向索引)

正排索引是将文档按顺序排列并进行编号的索引结构每个文档都包含了完整的文本内容,以及其他相关的属性或元数据,如标题、作者发布日期等。在正排索引中,可以根据文档编号或其他属性快速定位访问文档的内容。正排索引适合用于需要对文档进行整体检索展示场景,但对于包含大量文本内容的数据集来说,正排索引的存储和查询效率可能会受到限制

MySQL 中通过 ID 查找就是一种正排索引的应用

3.2倒排索引(反向索引)

倒排索引是根据单词或短语建立的索引结构。它将每个单词映射包含单词的文档列表中。倒排索引的建立过程是先对文档进行分词处理然后记录每个单词在哪些文档中出现,以及出现的位置信息。通过倒排索引,可以根据关键词或短语快速找到包含这些词语的文档,并确定它们的相关性。倒排索引适用于在大规模文本数据中进行关键词搜索和相关性排序场景,它能够快速定位文档,提高搜索效率。

我们在创建文章的时候,建立一个关键词文章对应关系表,就可以称之为倒排索引。如下图所示

我就是我,是颜色不一样的烟火。
我就是我,是与众不同的小苹果

à悟纤学院:

学院中有Spring Boot相关的课程点击阅读原文」进行查看

SpringBoot视频http://t.cn/A6ZagYTi

SpringBoot交流平台https://t.cn/R3QDhU0

SpringSecurity5.0视频http://t.cn/A6ZadMBe

ShardingJDBC分库分表http://t.cn/A6ZarrqS

分布式事务解决方案http://t.cn/A6ZaBnIr

JVM内存模型调优实战http://t.cn/A6wWMVqG

Spring入门到精通:https://t.cn/A6bFcDh4

大话设计模式之爱你:https://dwz.cn/wqO0MAy7

原文地址:https://blog.csdn.net/linxingliang/article/details/134645851

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_12801.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注