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

MySQL全文索引检索中文

MySQL全文索引检索中文

5.7.6版本不支持中文检索,需要手动修改配置 ft_min_word_len = 1 ,因为默认配置 4

SHOW VARIABLES LIKE 'ft%';
show VARIABLES like 'ngram_token_size';

配置

修改 MySQL 配置文件

vim /etc/my.cnf

在配置的 [mysqld] 下面添加**ft_min_word_len = 1** ,如果是 innodb 引擎添加配置 innodb_ft_min_token_size = 1

以上配置都不推荐,我比较推荐使用 MySQL 自带的插件 N-gram 因为它对中文的检索更友好。N-gram 插件不需要安装,当创建索引的时候申明使用N-gram就可以了,这个本文后面会提到。一般分词都是设置为2,设置为1我试过检索不出来。设置了 ngram_token_size之后,innodb_ft_min_token_sizeinnodb_ft_max_token_size就没有用了。

可以使用以下语句查询 ngram_token_size配置。

SHOW VARIABLES LIKE 'ngram_token_size';

重启MySQL

修改配置以后重启 MySQL服务

service mysqld stop
service mysqld start

创建全文索引

-- 不使用n-gram
ALTER TABLE <表名> ADD FULLTEXT <索引名>(<字段名>);-- 使用n-gram,全文索引名一般使用 ft_ 的前缀,例如 ft_user_id
ALTER TABLE <表名> ADD FULLTEXT INDEX <索引名>(<字段名>) WITH PARSER ngram;

全文索引字段必须是中文字符类型,最好是 utf8mb4

优化索引

如果在修改配置前就已经创建了全文索引,则需要重新生成全文索引。可以先删除再重新创建全文索引,也可以执行如下sql优化索引。

-- 更新索引
OPTIMIZE TABLE <表名>;-- 删除索引,再重新创建索引
ALTER TABLE <表名> DROP INDEX <索引名>;
ALTER TABLE <表名> ADD FULLTEXT INDEX <索引名>(<字段名>) WITH PARSER ngram;

全文检索

MySQL 的 MATCH AGAINST 语句支持多种搜索模式,每种模式都有其特定的应用场景。以下是 MySQL 中 MATCH AGAINST 支持的几种主要模式:

1. 自然语言模式(Natural Language Mode)

自然语言模式是最简单的全文搜索模式,默认情况下,如果没有显式指定搜索模式,MATCH AGAINST 将使用自然语言模式。在这种模式下,多个词语之间用空格分隔,表示任意一个词语都可以匹配。

示例

假设你希望匹配包含任意其中一个词语的记录:

SELECT * FROM <表名>
WHERE MATCH(<字段名>) AGAINST('关键词1 关键词2 关键词3');

2. 布尔模式(Boolean Mode)

布尔模式允许你更精细地控制搜索行为,可以使用特殊符号来表示逻辑运算符。布尔模式的特点包括:

  • 加号(+)表示必须包含的词,类似于 and
  • 减号( -)表示必须不包含的词,类似于 not
  • 空格表示或的关系,类似于 or
  • 星号( *)表示通配符,用于模糊匹配。
  • > 和 < 可以用来表示词频的阈值。
  • 双引号(")表示短语搜索。

示例

假设你希望匹配包含所有词语的记录:

SELECT * FROM <表名>
WHERE MATCH(<字段名>) AGAINST('+关键词1 +关键词2' IN BOOLEAN MODE);

3. 查询扩展模式(Query Expansion Mode)

查询扩展模式是在布尔模式的基础上增加了查询扩展的功能,它允许 MySQL 根据已有的搜索词自动扩展搜索范围,以找到更多相关文档。查询扩展模式使用 WITH QUERY EXPANSION 关键字。

示例

假设你希望匹配包含所有词语的记录,并扩展搜索范围:

SELECT * FROM <表名>
WHERE MATCH(<字段名>) AGAINST('+关键词1 +关键词2' WITH QUERY EXPANSION);

4. 混合模式

你可以结合使用自然语言模式和布尔模式,根据需要选择最适合的模式。例如,你可以使用自然语言模式来匹配多个词语中的任意一个,同时使用布尔模式来精确控制某些词语的匹配。

示例

假设你希望匹配包含任意其中一个词语的记录,并且排除某些词语:

SELECT * FROM <表名>
WHERE MATCH(<字段名>) AGAINST('关键词1 关键词2' IN BOOLEAN MODE);

注意事项

  1. 全文索引:确保你已经在相关列上创建了全文索引。
  2. 字符集:确保使用支持中文的字符集,如 utf8mb4
  3. 停用词处理:对于中文全文搜索,停用词的处理非常重要,可以自定义停用词列表来提高搜索质量。
  4. 全文索引参数:根据需要调整全文索引的相关参数,如 ft_min_word_len 和 ft_max_word_len

参考

  • MySQL5.7 中文全文检索与停用词的常用设置 https://blog.csdn.net/ordinary_csdn/article/details/127222125
  • MySQL使用全文索引(fulltext index) 及中文全文索引使用 https://blog.csdn.net/yygg329405/article/details/97110984#::text=MySQL中文分词全#::text=MySQL中文分词全

相关文章:

MySQL全文索引检索中文

MySQL全文索引检索中文 5.7.6版本不支持中文检索&#xff0c;需要手动修改配置 ft_min_word_len 1 &#xff0c;因为默认配置 4 SHOW VARIABLES LIKE ft%; show VARIABLES like ngram_token_size;配置 修改 MySQL 配置文件 vim /etc/my.cnf在配置的 [mysqld] 下面添加**ft_…...

pikachu靶场-Cross-Site Scripting(XSS)

sqli-labs靶场安装以及刷题记录-dockerpikachu靶场-Cross-Site Scripting pikachu靶场的安装刷题记录反射型xss(get)反射型xss(post)存储型xssDOM型xssDOM型xss-xxss盲打xss之过滤xss之htmlspecialcharsxss之href输出xss之js输出 pikachu靶场的安装 刷题记录 反射型xss(get) …...

在数据库访问中,使用localhost、127.0.0.1和IP地址有什么差异

在数据库访问中&#xff0c;使用127.0.0.1和IP地址&#xff08;在本地环境中通常指的是局域网IP或环回地址&#xff09;的速度差异&#xff0c;实际上是非常微小的&#xff0c;甚至在很多情况下可以忽略不计。不过&#xff0c;为了更深入地理解这个问题&#xff0c;我们可以从以…...

C语言 | Leetcode C语言题解之第513题找树左下角的值

题目&#xff1a; 题解&#xff1a; #define MAX_NODE_SIZE 10000int findBottomLeftValue(struct TreeNode* root){int ret;struct TreeNode** queue (struct TreeNode **)malloc(sizeof(struct TreeNode) * MAX_NODE_SIZE);int head 0;int tail 0;queue[tail] root;whil…...

人工智能:改变未来生活与工作的无尽可能

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;正成为推动全球变革的重要力量。无论是在医疗、企业&#xff0c;还是日常生活中&#xff0c;AI技术通过赋能各行业&#xff0c;正在深刻地改变我们的生活和工作方式。这些变化为我们提供了便捷与效率的同时&a…...

讲一讲 kafka 的 ack 的三种机制?

大家好&#xff0c;我是锋哥。今天分享关于【K讲一讲 kafka 的 ack 的三种机制&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; 讲一讲 kafka 的 ack 的三种机制&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka的消息确认机制&…...

若依框架部署到服务器后头像资源访问404

排错过程 第一开始以为是代理出问题了 官网给出的解决方案 第一种是用代理后端接口&#xff0c;第二种是重写路径直接访问静态文件 接口通过捕获profile开头的路径/profile/avatar…&#xff0c;转为/home…/avatar找到我们在该路径下的文件 但是我想了一下&#xff0c;我ngin…...

纯GO语言开发RTSP流媒体服务器-RTSP推流直播、本地保存录像、录像回放、http-flv及hls协议分发

温馨提示&#xff1a;我们分享的文章是给需要的人&#xff0c;不需要的人请绕过&#xff0c;文明浏览&#xff0c;误恶语伤人&#xff01; 前言 在软件开发中遇到使用流媒体音视频的行业比较多&#xff0c;如安防监控系统、无人机巡逻视频上云处理、直播平台、教育与企业培训…...

el-table相关的功能实现

1. 表格嵌套表格时&#xff0c;隐藏父表格的全选框 场景&#xff1a;当table表格设置复选&#xff08;多选&#xff09;功能时&#xff0c;如何隐藏表头的复选框&#xff0c;不让用户一键多选。 <el-table :header-cell-class-name"cellClass">// 表头复选框禁…...

衡石分析平台系统分析人员手册-展示类控件创建富文本攻略

富文本​ 富文本控件是一种常见的控件&#xff0c;可用来展示文本信息、用户属性信息&#xff0c;在数据分析中起到辅助分析的功能。 富文本常见的使用场景有&#xff1a; 仅展示纯文本信息。在富文本中展示数据集字段、指标、参数等信息。使用富文本展示用户属性相关信息。在…...

为什么在网络中不能直接传输数据

为什么在网络中不能直接传输数据 原因 在网络中不能直接传输原始数据形式&#xff0c;主要有以下几方面原因&#xff1a; 数据表示的多样性&#xff1a;不同的计算机系统、编程语言和应用程序对数据的表示方式可能各不相同。例如&#xff0c;整数在不同的编程语言中可能有不同…...

javascript实现aes算法(支持微信小程序)

概述&#xff1a; 本代码是本人从c代码上转换成的javascript代码&#xff0c;并测试验证通过的。代码比较长1000多行&#xff0c;考虑放其他地方要么要会员要么容易关闭&#xff0c;不容易被需要的获取到&#xff0c;故直接贴在本文档下面的章节&#xff0c;功能代码。 测试平…...

Centos系统新增网卡后获取不到网卡的IP地址解决方法

一、问题描述 当我们给Centos系统添加了新的网卡后,使用查看IP地址命令【ip addr】时,发现新网卡没有获取到对应的IP地址信息,如下图所示: 二、解决方法 有两种解决方法:一种是自动获取IP地址;另外一种是手动配置IP地址; 2.1、自动获取IP地址 #自动获取网卡的IP地址命…...

U-net医学分割网络——学习笔记

《U-Net: Convolutional Networks for Biomedical Image Segmentation》 一、提出背景 U-Net 的提出是为了解决生物医学图像分割的几个关键问题&#xff1a;需要像素级的精确分割、标注数据稀缺、滑动窗口方法效率低以及多尺度特征融合的需求。U-Net 通过对称的 U 型全卷积结…...

CIM+全场景应用,铸就智慧城市发展新篇

在数字化浪潮的推动下&#xff0c;智慧城市建设正成为全球城市发展的新趋势。而CIM&#xff08;城市信息模型&#xff09;作为智慧城市建设的核心&#xff0c;正以其强大的数据集成和分析能力&#xff0c;引领着城市发展的新篇章。今天&#xff0c;让我们一起探讨CIM全场景应用…...

ts:对象数组的简单使用

ts中对象数组的简单使用 一、主要内容说明二、例子1、源码12、源码1运行效果 三、结语四、定位日期 一、主要内容说明 平常ts创建数组的格式如下&#xff1a; let array:string[]["元素1","元素2","元素3","元素3","元素4"…...

当我们在微服务中使用API网关时,它是否会成为系统的瓶颈?这种潜在的瓶颈如何评估和解决?如何在微服务架构中保证高效请求流量?|API网关|微服务|异步处理

目录 1. API网关在微服务中的角色与重要性 2. API网关瓶颈的评估 2.1 请求延迟分析 2.2 并发请求量监控 2.3 内存和CPU使用情况 2.4 限流和熔断机制评估 2.5 日志分析 3. API网关瓶颈的解决方案 3.1 缓存机制优化 3.2 负载均衡优化 3.3 异步处理与消息队列 3.4 限流…...

微服务设计模式 - 特性标志(Feature Flags)

微服务设计模式 - 特性标志&#xff08;Feature Flags&#xff09; 定义 特性标志&#xff08;Feature Flags&#xff09;&#xff0c;又称特性开关&#xff08;Feature Toggles&#xff09;&#xff0c;是一种常见的云计算设计模式&#xff0c;允许开发人员通过配置动态地打开…...

故障诊断 | MTF-TLSSA-DarkNet-GRU-MSA迁移学习故障识别程序(t分布+莱维飞行改进麻雀优化)

故障诊断 | 故障诊断实例代码 目录 故障诊断 | 故障诊断实例代码效果一览基本介绍程序设计参考资料 效果一览 基本介绍 利用了迁移学习和多项技术改进&#xff0c;包括麻雀搜索法、DarkNet19、GRU、多头注意力机制等&#xff0c;以提高故障识别的准确性和效率 模型框架&#x…...

【mysql 进阶】2-1. MySQL 服务器介绍

MySQL 服务器简介 通常所说的 MySQL 服务器指的是mysqld程序&#xff0c;当运⾏mysqld后对外提供MySQL 服务&#xff0c;这个专题的内容涵盖了以下关于MySQL 服务器以及相关配置的内容&#xff0c;包括&#xff1a; 服务器⽀持的启动选项。可以在命令⾏和配置⽂件中指定这些选…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...