mysql5.7.25全文检索功能怎么使用

前言

有时项目中需要用到全文检索功能,如果全文检索数量相对较小,并且不希望单独搭建elasticsearch这样的专用索引工具,就可以考虑使用mysql自带的全文检索功能。

mysql 5.7.25自带的全文检索功能,有一定的方便性。

在MySQL 5.7.6之前,全文索引只支持英文全文索引,不支持中文全文索引,需要利用分词器把中文段落预处理拆分成单词,然后存入数据库。

从MySQL 5.7.6开始,MySQL内置了ngram全文解析器,用来支持中文、日文、韩文分词。

本文使用的MySQL 版本是5.7.25,InnoDB数据库引擎。

1. 创建带有全文索引的表

CREATE TABLE `tbl_article_content` (  `id` bigint(40) NOT NULL AUTO_INCREMENT,  `article_title` varchar(60) COMMENT '标题',  `article_summary` varchar(120) COMMENT '摘要',  `article_content` text NOT NULL COMMENT '内容',  `article_id` bigint(40) NOT NULL COMMENT '对应文章ID',  `create_date` datetime NOT NULL COMMENT '创建时间',  `modified_date` datetime NOT NULL COMMENT '更新时间',  PRIMARY KEY (`id`) USING BTREE,  KEY `artid` (`article_id`) USING BTREE,  FULLTEXT KEY `article_content` (`article_content`) /*!50100 WITH PARSER `ngram` */ ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

/*!50100   */ 它表示5.01.00 版本或者更高的版本,才执行.

 WITH PARSER `ngram`是指定分词引擎。

超能文献 超能文献

超能文献是一款革命性的AI驱动医学文献搜索引擎。

超能文献 14 查看详情 超能文献

2. 添加全文索引

如果在创建表的时候未添加全文索引,可以在建表之后进行添加。

create fulltext index article_content on tbl_article_content(article_content) WITH PARSER ngram;

3. 添加测试数据

INSERT INTO `tbl_article_content` VALUES ('2', '文章标题', '文章摘要', '文章内容', '2', '2022-02-05 13:47:55', '2022-02-05 13:47:59');

4. 执行查询

mysql> select * FROM tbl_article_content222 WHERE MATCH(article_content) AGAINST('内容');+----+---------------+-----------------+-----------------+------------+---------------------+---------------------+| id | article_title | article_summary | article_content | article_id | create_date         | modified_date       |+----+---------------+-----------------+-----------------+------------+---------------------+---------------------+|  2 | 文章标题      | 文章摘要        | 文章内容        |          2 | 2022-02-05 13:47:55 | 2022-02-05 13:47:59 |+----+---------------+-----------------+-----------------+------------+---------------------+---------------------+1 row in set

全文查询的关键字为MATCH和AGAINST。

5. 语法

MATCH (col1,col2,...) AGAINST (expr [search_modifier])search_modifier: { IN BOOLEAN MODE | WITH QUERY EXPANSION }

 例如:SELECT * FROM tab_name WHERE MATCH (‘列名1,列名2…列名n’) AGAINST(‘词1 词2 词3 … 词m’);

 即:MATCH 相当于要匹配的列,而 AGAINST 就是要找的内容。

以上就是mysql5.7.25全文检索功能怎么使用的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/268643.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2026年10月13日 18:58:49
java怎么给数组自动赋值
下一篇 2025年11月26日 20:37:16

相关推荐

  • MySQL表文件的示例分析

      mysql表文件介绍   一个数据库对应一个文件夹   一个表对应一个或者多个文件   引擎myisam,一个表对应三个文件   .frm存储的是表结构  .myd存储的是表数据  .myi 存储的是表数据的索引   引擎innodb,一个表对应一个表结构文件,innodb的所有表数据保存一起,…

    2026年10月13日
    000
  • MySQL中如何转换时区

    CONVERT_TZ(date,from_tz ,to_tz ):转换时区 稿定AI社区 在线AI创意灵感社区 60 查看详情 SELECT CONVERT_TZ(‘2004-01-01 12:00:00′,’+00:00′,’+10:00′) -> 2004-01-01 22:00:00 以…

    2026年10月13日
    200
  • MySQL中PERIOD_ADD函数怎么用

    PERIOD_ADD(month,add) SELECT PERIOD_ADD(1601,2) SELECT PERIOD_ADD(191602,3) SELECT PERIOD_ADD(191602,-3) -> 201603-> 191605-> 191511 该函数返回对mo…

    2026年10月13日
    100
  • Docker容器怎么迁移Oracle到MySQL

    Docker容器怎么迁移Oracle到MySQLDocker容器怎么迁移Oracle到MySQLDocker容器怎么迁移Oracle到MySQLDocker容器怎么迁移Oracle到MySQL

    ⛳️ 1. 创建专用网络 docker network create –subnet=168.66.6.0/24 db-network[root@docker ~]# docker network inspect db-network –查看网络信息 ⛳️ 2. Oracle 12C部署 ✨ 2…

    2026年10月13日 • 用户投稿
    400
  • MySQL锁及分类有哪些

    MySQL锁及分类有哪些MySQL锁及分类有哪些MySQL锁及分类有哪些MySQL锁及分类有哪些

    1. 数据库并发场景 在高并发场景下,不考虑其他中间件的情况下,数据库会存在以下场景: 读读:不存在任何问题,也不需要并发控制。 读写:有线程安全问题,可能会造成事务隔离性问题,可能遇到脏读,幻读,不可重复读。 写写:有线程安全问题,可能会存在更新丢失问题,比如第一类更新丢失,第二类更新丢失。 针对…

    2026年10月13日 • 用户投稿
    100
  • MySQL池化自定义实例分析

    可池化对象 首先,我们需要一个可池化对象,这里我选用了com.funtester.db.mysql.funmysql,这是一个我自己写的单链接的mysql对象。我计划用这个作为基础可池化对象。 package com.funtester.db.mysql;import com.funtester.b…

    2026年10月13日
    000
  • 解决PHP对MySQL数据库进行批量操作时的错误

    在php中进行mysql批量操作时,常见的错误包括连接错误、语法错误和事务处理不当。解决这些问题的方法是:1. 使用mysqli或pdo确保连接稳定性;2. 使用mysqli_multi_query进行批量操作,并正确处理结果集;3. 开启事务以保证数据一致性;4. 使用预处理语句防止sql注入,提…

    2026年10月13日
    100
  • docker安装mysql的方法是什么

    docker安装mysql的方法是什么docker安装mysql的方法是什么docker安装mysql的方法是什么docker安装mysql的方法是什么

    快速完成 直接复制粘贴跟着做即可快速完成,可以不用查看详细步骤 docker pull mysql:5.7 docker run -d -p 3306:3306 –privileged=true -v /usr/local/mysql/log:/var/log/mysql -v /usr/loca…

    2026年10月13日 • 用户投稿
    200
  • centos7 mysql数据库安装和配置的方法

    centos7 mysql数据库安装和配置的方法centos7 mysql数据库安装和配置的方法centos7 mysql数据库安装和配置的方法centos7 mysql数据库安装和配置的方法

    一、系统环境 yum update升级以后的系统版本为 [root@yl-web yl]# cat /etc/redhat-release centos linux release 7.1.1503 (core) 二、mysql安装 一般网上给出的资料都是 #yum install mysql#yu…

    2026年10月13日 • 用户投稿
    100
  • mysql查询乱码的原因有哪些

    一、MySQL字符集 MySQL提供多个字符集的支持,其中包括ASCII、GB2312、GBK、UTF-8等。UTF-8是一种通用的字符集,能够支持多种语言和一些常见的特殊字符。在安装MySQL时,可以选择安装相应的字符集。 在创建数据库时,也需要指定相应的字符集。如果没有指定,默认为服务器端字符集…

    2026年10月13日
    200
  • MySQL中怎么计算同比和环比

    MySQL中怎么计算同比和环比MySQL中怎么计算同比和环比MySQL中怎么计算同比和环比MySQL中怎么计算同比和环比

    我们先来看看什么是同比,什么是环比: 同比:通常是指今年第n月与去年第n月相比。同比发展速度主要是为了消除季节变动的影响,用以说明本期发展水平与去年同期发展水平对比而达到的相对发展速度。 环比通常用于表示连续两个时间段(例如连续两个月份)内数量的变化比例。环比包括两种:环比增长速度和环比发展速度。 …

    2026年10月13日 • 用户投稿
    300
  • MySQL transaction事务安全怎么实现

    事务安全 transaction 事务 transaction 访问可能更新数据库中各种数据项的一个程序执行单元unit 事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成 事务基本原理 MySQL允许将事务统一进行管理(存储引擎i…

    2026年10月13日
    100
  • 如何用Python玩转Mysql

    如何用Python玩转Mysql如何用Python玩转Mysql如何用Python玩转Mysql如何用Python玩转Mysql

    前提:这里默认大家已经安装好mysql。 01 Mysql简介 mysql是关系型数据库,支持大型的数据库,可以处理拥有上千万条记录的大型数据库。通过爬虫采集的数据集存储到mysql后,可以借助mysql的关联查询将相关的数据一步取出。具体的作用这里就不赘述了,下面开始进入实际操作。 1.安装pym…

    2026年10月13日 • 用户投稿
    100
  • MySQL数据库连接方式及工具有哪些

    MySQL数据库连接方式及工具有哪些MySQL数据库连接方式及工具有哪些MySQL数据库连接方式及工具有哪些MySQL数据库连接方式及工具有哪些

    一、MySQl命令行客户端 在mysql安装完成后,mysql命令行会自动配置在计算机上,在菜单中找到mysql 8.0 command line client,输入密码即可进入。(密码在安装过程中设定的) 二、CMD命令进行连接 1.、按住win+r 建进入命令行 然后cd 到mysql的bin目…

    2026年10月13日 • 用户投稿
    100
  • MySQL大批量数据更新如何高效且避免死锁?

    MySQL大批量数据更新如何高效且避免死锁?MySQL大批量数据更新如何高效且避免死锁?MySQL大批量数据更新如何高效且避免死锁?MySQL大批量数据更新如何高效且避免死锁?

    MySQL批量数据更新:高效策略与死锁预防 本文深入探讨MySQL UPDATE语句的底层机制,分析其在大规模数据更新中的性能表现,以及事务中可能出现的死锁问题。 高效且安全地更新大量数据,尤其是在高并发环境下,至关重要。 文章将解答如何在事务中高效更新1000到10000条记录,并避免死锁。这需要…

    2026年10月13日 • 用户投稿
    700
  • php如何查询mysql的一个数据

    在进行查询之前,必须确认已经创建了MySQL数据库,并且其中包含需要查询的数据表。一个名为”users”的数据表可以被创建,例如使用下面的SQL语句: CREATE TABLE users ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY…

    2026年10月13日
    100
  • Mysql锁机制中行锁、表锁、死锁如何实现

    Mysql锁机制中行锁、表锁、死锁如何实现Mysql锁机制中行锁、表锁、死锁如何实现Mysql锁机制中行锁、表锁、死锁如何实现Mysql锁机制中行锁、表锁、死锁如何实现

    一、Mysql锁是什么?锁有哪些类别? 锁定义:    同一时间同一资源只能被一个线程访问    在数据库中,除传统的计算资源(如cpu、i/o等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个…

    2026年10月13日 • 用户投稿
    200
  • MySQL慢日志查询实例分析

    MySQL慢日志查询实例分析MySQL慢日志查询实例分析MySQL慢日志查询实例分析MySQL慢日志查询实例分析

    一、慢查询日志概念 使用explain分析SQL语句是为了优化SQL和索引的问题。对于真正的企业级项目,其SQL语句可能达到成千上万条,因此我们无法逐条解释并进行分析。我们从什么地方可以获取那些运行时间长,耗性能的SQL?? 我们可以打开慢查询日志: 根据具体的业务和并发量来预估一个时间上限(20m…

    2026年10月13日 • 用户投稿
    1500
  • php mysql如何以关联数组形式返回查询结果

    一、什么是关联数组 简单来说,数组(Array)是一种数据类型,它可以保存多个数据,并且每个数据可以通过一个指定的索引来访问。关联数组(Associative Array)是一种特殊的数组,它以“键(key)”和“值(value)” 的形式存储数据。关联数组的索引与普通数组不同,不再局限于数字,而是…

    2026年10月13日
    300
  • jdbc中自带MySQL连接池实例分析

    jdbc中自带MySQL连接池实例分析jdbc中自带MySQL连接池实例分析jdbc中自带MySQL连接池实例分析jdbc中自带MySQL连接池实例分析

    引言 下面是com.mysql.cj.jdbc.mysqlconnectionpooldatasource使用实践,比较简单,api 倒是挺多的,但是大多数都用不到。 package com.funtest.groovytestimport com.funtester.frame.SourceCod…

    2026年10月13日 • 用户投稿
    000

发表回复

登录后才能评论
关注微信