MySQL进阶实战10,MySQL全文索引

news2025/1/22 13:13:16

一、全文索引

全文索引的目的是 通过关键字的匹配进行查询过滤,基于相似度的查询,而不是精确查询。

全文索引利用分词技术分析出文字中某关键字的频率和重要性,并按照一定的算法智能的筛选出我们想要的结果。

全文索引一般用于字符串中某关键字的查询,比如char、varchar、text,也支持自然语言全文索引和布尔全文索引。

二、使用全文索引

1、创建worker表,并创建全文索引

CREATE TABLE `worker` (
  `id` int NOT NULL,
  `name` varchar(50) NOT NULL,
  `age` int NOT NULL,
  `address` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  FULLTEXT INDEX `idx_fulltext`(`address`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

添加全文索引

alter table city add fulltext idx_fulltext(city)

删除全文索引

drop index idx_fulltext on city

2、插入10条记录

INSERT INTO worker (id, name, age, address) VALUES(1, '哪吒编程1', 18, '辽宁省大连市沙河口区中山路572号星海广场');
INSERT INTO worker (id, name, age, address) VALUES(2, '哪吒编程2', 19, '辽宁省大连市甘井子区高能街1号');
INSERT INTO worker (id, name, age, address) VALUES(3, '哪吒编程3', 20, '辽宁省大连市甘井子区燕邻街大连理工大学');
INSERT INTO worker (id, name, age, address) VALUES(4, '哪吒编程4', 21, '辽宁省大连市中山区五五路35号');
INSERT INTO worker (id, name, age, address) VALUES(5, '哪吒编程5', 22, '北京市东城区长安街');
INSERT INTO worker (id, name, age, address) VALUES(6, '哪吒编程6', 23, '上海市浦东新区世纪大道1号');
INSERT INTO worker (id, name, age, address) VALUES(7, '哪吒编程7', 24, '上海浦东陆家嘴,');
INSERT INTO worker (id, name, age, address) VALUES(8, '哪吒编程8', 25, '上海市浦东新区世纪大道105号');
INSERT INTO worker (id, name, age, address) VALUES(9, '哪吒编程9', 26, '广东省深圳市罗湖区建设路1003号');
INSERT INTO worker (id, name, age, address) VALUES(10, '哪吒编程10', 27, '广东省深圳市南山区中山路12号');

3、使用全文索引

select * from worker where match(address) against('广东省深圳市')

查看执行计划
在这里插入图片描述

  • 如果您的表格中没有足够的数据(例如1行),则全文搜索将无效;
  • MySQL InnoDB 最短索引字符串默认为4,也就是只有达到4个字符才会生效;

三、自然语言的全文索引

自然语言的搜索引擎将计算每一个文档对象和查询的相关度。

相关度是基于匹配的关键词个数、在文档中出现的次数。出现次数越少的关键字,匹配时的相关度就越高,相反,非常常见的单词将不会搜索这类词语。

函数match() 将返回关键词匹配的相关度,是一个浮点数字。在一个查询中使用两次 match() 函数不会有额外的消耗,MySQL 会自动识别并只进行一次搜索。不过你将 match() 函数放到 order by 子句中, MySQL 将会使用文件排序。

在match()中指定的列必须和全文索引中指定的列完全相同,否则就无法使用全文索引。

四、布尔全文索引

在布尔全文搜索中,用户可以在查询中自定义某个被搜索的词语的相关性。

当编写一个布尔搜索查询时,可以通过一些前缀修饰符来定制查询。

  1. +行记录中必须包含此关键字;
  2. -行记录中必须不包含此关键字;
  3. >提高该词的相关性,查询的结果靠前
  4. <降低该词的相关性,查询的结果靠后
  5. *星号 通配符,只能接在词后面

select * from worker where match(address) AGAINST('上海市*' in boolean mode);

在这里插入图片描述



MySQL进阶实战系列文章

MySQL进阶实战1,数据类型与三范式

MySQL进阶实战2,那些年学过的事务

MySQL进阶实战3,mysql索引详解,上篇

MySQL进阶实战4,那些年学过的索引,下篇

MySQL进阶实战5,为什么查询速度会慢

MySQL进阶实战6,缓存表、视图、计数器表

MySQL进阶实战7,查询的执行过程

MySQL进阶实战8,分区表详解

MySQL进阶实战9,InnoDB和MyISAM的数据分布对比

SQL性能优化的21个小技巧

mysql索引详解

MySql基础知识总结(SQL优化篇)

哪吒精品系列文章

Java学习路线总结,搬砖工逆袭Java架构师

10万字208道Java经典面试题总结(附答案)

Java基础教程系列
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

tomcat服务器安装及配置教程(保姆级教程)

Tomcat安装教程 &#xff08;以tomcat-9.0.62为例&#xff1a;&#xff09; 1.下载安装包 可以从官网下载安装包&#xff1a; &#xff08;1&#xff09;从官网下载 输入网址进入官网 选择版本10&#xff0c;版本9&#xff0c;或者版本8&#xff0c;都可以&#xff0c;这里…

掘金热榜首推!阿里内部都在用的Java后端面试笔记,囊括99%的主流技术

纵观今年的技术招聘市场&#xff0c; Java依旧是当仁不让的霸主 &#xff01;即便遭受 Go等新兴语言不断冲击&#xff0c;依旧岿然不动。究其原因&#xff1a; Java有着极其成熟的生态&#xff0c;这个不用我多说&#xff1b;Java在 运维、可观测性、可监 控性方面都有着非常优…

Spring Boot JPA 本机查询示例

在本教程中&#xff0c;您将了解如何在 Spring 引导中使用 Spring Data JPA 本机查询示例&#xff08;带参数&#xff09;。我将向您展示&#xff1a; 将 Spring JPA 本机查询与Query注释一起使用的方法如何在 Spring 引导中执行 SQL 查询具有 WHERE 条件的 JPA 选择查询示例 …

动态SQL

动态SQL 可以根据具体的参数条件&#xff0c;来对SQL语句进行动态拼接。比如在以前的开发中&#xff0c;由于不确定查询参数是否存在&#xff0c;许多人会使用类似于where 1 1 来作为前缀&#xff0c;然后后面用AND 拼接要查询的参数&#xff0c;这样&#xff0c;就算要查询的…

MongoShake数据灾备与迁移

安装部署 解压 建议部署在离目标端近的地方&#xff0c;比如部署再目标端本地 tar -zxvf mongo-shake-v2.8.1.tgz配置 同构环境下主要参数 启动 执行下述命令启动同步任务&#xff0c;并打印日志信息&#xff0c;-verbose 0表示将日志打印到文件&#xff0c;在后台运行 …

【Linux从入门到放弃】Linux基本指令大全

&#x1f9d1;‍&#x1f4bb;作者&#xff1a; 情话0.0 &#x1f4dd;专栏&#xff1a;《Linux从入门到放弃》 &#x1f466;个人简介&#xff1a;一名双非编程菜鸟&#xff0c;在这里分享自己的编程学习笔记&#xff0c;欢迎大家的指正与点赞&#xff0c;谢谢&#xff01; L…

黑苹果之微星(MSI)主板BIOS详细设置篇

很多童鞋安装黑苹果的时候会卡住&#xff0c;大部分原因是cfg lock 没有关闭&#xff0c;以及USB端口或SATA模式设置错误。 为了避免这些安装阶段报错的情况发生&#xff0c;今天给大家分享一下超详细的BIOS防踩坑设置指南--微星&#xff08;MSI&#xff09;主板BIOS篇&#xf…

springcloud总结篇

一.整体结构 springcloud总体架构 对比学习 二.具体 1.场景模拟 订单服务调用库存服务来更新数据库中的库存 2.springcloud问题解析 Eureka OpenFeign &#xff08;RibbonRestTemplate&#xff09; Hystrix Gateway config Bus 订单服务只知道库存服务的名称…

Python测试-unittest,2022-11-27

(2022.11.27 Sun) unittest是Python自带的单元测试框架。unittesthtml和pytestallure(测试报告)成为常用的自动测试和报告的框架组合。 unittest-archi-2022-11-23-2114.png 概念 test case测试用例&#xff1a;测试用例是测试的基本单元&#xff0c;用于测试一组特定输入的特…

OpenCV图像特征提取学习四,SIFT特征检测算法

一、SIFT特征检测概述 SIFT的全称是Scale Invariant Feature Transform&#xff0c;尺度不变特征变换&#xff0c;由加拿大教授David G.Lowe提出的。SIFT特征具有对旋转、尺度缩放、亮度变化等保持不变性&#xff0c;是一种非常稳定的局部特征。 1.1 SIFT算法具的特点 图像…

平衡搜索树——AVL树小记

文章目录二叉搜索树平衡搜索树AVL树定义AVL中平衡(Balance)因子的定义AVL树插入规则AVL树失衡情况左左失衡/右右失衡左右失衡RL失衡代码左旋-调整平衡插入调整平衡因子AVL树正确性的验证二叉搜索树 理想情况下&#xff0c;二叉搜索树的查找时间复杂度是0(log(n)) 但是&#xff…

Linux 进程概念 —— 初识操作系统(OS)

文章目录1. 概念2. 设计操作系统的目的3. 定位4. 如何理解管理5. 再谈操作系统&#x1f351; 硬件部分&#x1f351; 操作系统&#x1f351; 驱动程序&#x1f351; 用户部分&#x1f351; 系统调用接口&#x1f351; 用户接口操作6. 总结1. 概念 任何计算机系统都包含一个基本…

HTML5基础汇总

目录 一&#xff0c;html5文档头部 1.页面标题及字符集的收集 &#xff08;1&#xff09;.title标签 &#xff08;2&#xff09;.charset属性 2.元信息的设置 &#xff08;1&#xff09;.meta标签的作用 &#xff08;2&#xff09;.http-equiv/content &#xff08;2&am…

数据结构堆介绍,图文详解分析——Java/Kotlin双版本代码

堆介绍 堆是一种特殊的树结构。根据根节点的值与子节点值的大小关系&#xff0c;堆又分为最大堆和最小堆。 最大堆&#xff1a;每个节点的值总是大于或者等于其任意子节点的值。所以最大堆中根节点即为最大值。 最小堆&#xff1a;每个节点的值总是小于或者等于其任意子节点…

第六章课后题(LSTM | GRU)

目录习题6-3 当使用公式(6.50)作为循环神经网络得状态更新公式时&#xff0c;分析其可能存在梯度爆炸的原因并给出解决办法.习题6-4 推导LSTM网络中参数的梯度&#xff0c;并分析其避免梯度消失的效果​编辑习题6-5 推导GRU网络中参数的梯度&#xff0c;并分析其避免梯度消失的…

集合框架----源码解读Vector篇

1.vector官方简绍 Vector类实现了一个可增长的对象数组。与数组一样&#xff0c;它包含可以使用整数索引访问的组件。但是&#xff0c;Vector的大小可以根据需要增加或缩小&#xff0c;以适应在创建Vector之后添加和删除项。 每个向量都试图通过维护一个容量和一个capacityIncr…

C#设计模式详解(2)——Factory Method(工厂方法)

文章目录C#设计模式详解(2)——Factory Method&#xff08;工厂方法&#xff09;工厂方法模式1.1 概念1.2 意图1.3 问题1.4 解决方案1.5 工厂方法模式结构1.6 案例代码1.7 游戏开发中的应用C#设计模式详解(2)——Factory Method&#xff08;工厂方法&#xff09; 工厂方法模式…

领悟《信号与系统》之 非周期信号的傅里叶变换

非周期信号的傅里叶变换一、非周期信号的傅里叶变换二、 典型信号的傅立叶变换1.单边指数信号2.偶双边指数3. 矩阵脉冲信号4. 奇双边指数5. 符号函数6. 冲激信号7. 阶跃信号三、常用傅里叶变换表这里记录的信号都是非周期信号的傅里叶变化&#xff0c;频谱变换的特点就是&#…

【计算机网络】数据链路层:使用广播信道的数据链路层(1)

局域网的数据链路层 局域网特点&#xff1a;网络为一个单位所拥有&#xff0c;地理范围和站点数目均有限。 地理范围和站点数目均有限。 局域网优点&#xff1a; 具有广播功能&#xff0c;从一个站点可以很方便地访问全网。 便于系统的拓展和演变&#xff0c;各设备的位置…

Discourse 论坛激活邮件问题

根据 Discourse 的官方推荐&#xff0c;我们使用的是 MailGun 的服务。 在大部分情况下都没有问题&#xff0c;但是在一些特定的邮件地址&#xff0c;例如 iCloud&#xff0c;我们在发送激活邮件的时候有提示为&#xff1a; "message": "5.5.1 Error: need MA…