iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL实现分词搜索(FULLTEXT)的方法
  • 224
分享到

MySQL实现分词搜索(FULLTEXT)的方法

2024-04-02 19:04:59 224人浏览 独家记忆
摘要

目录FULLTEXT全文搜索的简单使用建表添加FULLTEXT索引尝试搜索结束FULLTEXT 以前使用查找时都是以 %关键字% 进行模糊查询结果的,这种查询方式有一些缺点,比如不能查询多个列必须手动添加条件以实现,效率

FULLTEXT

以前使用查找时都是以 %关键字% 进行模糊查询结果的,这种查询方式有一些缺点,比如不能查询多个列必须手动添加条件以实现,效率不高等
现在有一种新的查找方式可以解决以上问题,就是使用全文索引进行查找
注意:并非所有存储引擎都支持全文搜索功能。在mysql 5.6或更高版本中,只有MyISAM和InnoDB存储引擎支持全文搜索。

全文搜索的简单使用

建表添加FULLTEXT索引

使用该技术非常简单,首先需要有一张表,我建立了一张图书表并插入了两条数据

CREATE TABLE `book`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `book_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `author` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `publisher` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  FULLTEXT INDEX `bookname_author_publisher_fulltext`(`book_name`, `author`, `publisher`) WITH PARSER `ngram`
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

在这里插入图片描述

接下来添加索引

添加FULLTEXT索引的语法是

CREATE FULLTEXT INDEX index_name ON table_name(idx_column_name,…)

但是由于我们需要分词搜索,Mysql本身不支持中文分词,所以在使用全文索引时需要引入Ngram解析器使得支持中文分词搜索(mysql版本大于5.6),只需要在创建索引时在语句后面添加WITH PARSER NGRAM 即可
例如,创建了一个支持以书名,作者和出版社为搜索条件的全文索引语法如下
create FULLTEXT index bookname_author_publisher on book(book_name,author,publisher) WITH PARSER ngram

尝试搜索

现在,我们已经创建好了索引,它支持以书名,作者和出版社的内容进行搜索,我们尝试搜索下包含三国的数据
select * from book where MATCH(book_name,author,publisher) against(‘三国’)
结果:

在这里插入图片描述

可以看到,包含三国的数据有两条,分别是书名为三国演义和作者为张三国的数据,已经成功实现分词搜索了
需要说明的是,该Ngram解析器默认的分词长度(ngram_token_size)是2,也就是说,默认是以2个字符进行分词的,如果你只搜索1个字符的话是不会有任何结果的,但是这个值可以自定义。

  • 查看分词长度 SHOW VARIABLES LIKE ‘ngram_token_size’;
  • 修改分词长度 在Mysql的配置文件中(.ini)找到[mysqld]字样的地方,在下方添加ngram_token_size=1即可修改为支持1个字符起搜索(范围1~10)

关于MySQL的配置文件的位置,如果你是压缩包安装的应该直接就能找到,如果是通过安装程序安装的话可以从服务中找到你的MySQL服务,然后点击属性就可以看到位置了

在这里插入图片描述

结束

以上就是关于MySQL实现分词搜索的简单过程了,详细语法可以通过该网址进行学习
需要补充的是,我在学习时看到使用该索引进行全文搜索时,会应用50%阈值(50%阈值意味着如果一个单词出现在超过50%的行中,MySQL将在搜索结果中忽略它。),但是实际测试下来并没有忽略掉。
1.布尔全文搜索模式进行搜索时,不会应用50%阈值
2.按理说使用自然语言搜索进行全文搜索时会应用50%阈值,可是我实际测试并没有忽略(innoDB),后来看到一句话

这里是引用

MyISAM全文搜索会忽略至少在一半以上数据行中出现的单词(也即所谓的50%阈值),InnoDB无此限制。而在布尔全文搜索中MyISAM的50%阈值不生效。(来自https://www.likecs.com/show-374225.html?sc=8500)

这一块暂时不清楚什么情况,后续测试再更新吧

到此这篇关于MySQL实现分词搜索(FULLTEXT)的文章就介绍到这了,更多相关MySQL分词搜索内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL实现分词搜索(FULLTEXT)的方法

本文链接: https://www.lsjlt.com/news/34373.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL也可以实现分词搜索(FULLTEXT)
    FULLTEXT 以前使用查找时都是以 %关键字% 进行模糊查询结果的,这种查询方式有一些缺点,比如不能查询多个列必须手动添加条件以实现,效率不高等 现在有一种新的查找方式可以解决以上问题,就是使用全文索引进行查找 注意:并非所有存储引擎都...
    99+
    2023-08-22
    mysql 数据库 sql
  • c语言单词搜索的实现
    单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺...
    99+
    2024-04-02
  • C++实现LeetCode(79.词语搜索)
    [LeetCode] 79. Word Search 词语搜索 Given a 2D board and a word, find if the word exists in the...
    99+
    2024-04-02
  • Sphinx PHP 实现全文搜索的中文分词与检索优化
    引言:随着互联网的发展和信息爆炸的时代,全文搜索引擎成为了人们进行信息检索的重要工具。传统的全文搜索引擎主要针对英文等西方语言进行优化,而对于中文这种特殊的语言来说,传统的全文搜索引擎存在一些问题。本文将介绍如何利用Sphinx PHP实现...
    99+
    2023-10-21
    Sphinx - A software library used for performing full-text se
  • c语言怎么实现单词搜索
    本文小编为大家详细介绍“c语言怎么实现单词搜索”,内容详细,步骤清晰,细节处理妥当,希望这篇“c语言怎么实现单词搜索”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。单词搜索给定一个 m x n 二维字符网格 boa...
    99+
    2023-06-30
  • Sphinx 分布式搜索的 PHP 实现方法解析
    引言:在当今互联网时代,搜索引擎已经成为人们获取信息的主要方式之一。为了提供更高效、更准确的搜索结果,一些大规模的网站或应用程序通常会使用分布式搜索引擎来处理搜索请求。Sphinx 是一种知名的分布式搜索引擎,具有良好的性能和扩展性。本文将...
    99+
    2023-10-21
    分布式 PHP Sphinx 方法解析
  • RiSearch PHP 与分词技术的结合实现高效中文搜索
    近年来,随着互联网技术的发展,越来越多的中文内容被存储在各种类型的数据库中。然而,传统的英文搜索引擎对中文的支持相对较弱,常常存在分词错误或漏词等问题,导致搜索结果的准确性不高。为了解决这一问题,我们可以借助RiSearch PHP和分词技...
    99+
    2023-10-21
    RiSearch PHP 分词技术 中文搜索
  • mysql搜索自增列的方法
    这篇文章主要介绍了mysql搜索自增列的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql搜索自增列的方法:1、使用【selec...
    99+
    2024-04-02
  • PHP商城中的关键词搜索功能实现
    在现如今的电商时代,搜索功能已成为了电商网站上不可或缺的一部分,能够大大提高用户的购物体验。在PHP商城中,关键词搜索功能更是实现了这个功能的集大成者。本文将从关键词搜索的原理开始,深入探讨PHP商城中的关键词搜索功能实现。一、关键词搜索原...
    99+
    2023-05-22
    PHP 商城 关键词搜索 功能实现
  • vue实现搜索关键词高亮的详细教程
    目录正文解析正则api——execreg.exec执行接下来看看执行具体的执行结果提取关键字并分组完整vue代码正文 废话少说先上效果(左侧代码,右侧效果) ...
    99+
    2024-04-02
  • mysql索引的实现方法
    mysql索引的实现方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!MySQL索引的概念索引是一种特殊的文件(InnoD...
    99+
    2024-04-02
  • JAVA使用前缀树(Tire树)实现敏感词过滤、词典搜索
    目录简介Trie树code结论简介 有时候需要对用户输入的内容进行敏感词过滤,或者实现查找文本中出现的词典中的词,用遍历的方式进行替换或者查找效率非常低,这里提供一个基于Trie树的...
    99+
    2023-01-03
    JAVA前缀树敏感词过滤 JAVA前缀树
  • python实现二叉搜索树的四种方法
    目录树的介绍二叉搜索树列举几种Python中几种常见的实现方式:1.使用类和递归函数实现2.使用列表实现3.使用字典实现4.使用堆栈实现树的介绍 树不同于链表或哈希表,是一种非线性数...
    99+
    2023-05-15
    python 二叉搜索树
  • SpringBoot+Elasticsearch实现数据搜索的方法详解
    目录一、简介二、代码实践2.1、导入依赖2.2、配置环境变量2.3、创建 elasticsearch 的 config 类2.4、索引管理2.5、文档管理三、小结一、简介 在上篇 E...
    99+
    2024-04-02
  • Mysql使用全文索引(FullText index)的实例代码
    目录什么是全文索引注意创建全文索引使用全文索引自然语言搜索BOOLEAN MODE总结什么是全文索引 全文索引,通过建立倒排索引,可以极大的提升检索效率,解决判断字段是否包含的问题....
    99+
    2024-04-02
  • Sphinx PHP 实现代码搜索的最佳实践方法
    简介:Sphinx是一个开源的全文搜索引擎,它提供了高效的搜索解决方案。PHP是一种流行的服务器端脚本语言,与Sphinx结合使用,可以实现强大的代码搜索功能。本文将介绍在PHP中实现Sphinx代码搜索的最佳实践方法,并提供具体的代码示例...
    99+
    2023-10-21
    PHP Sphinx 代码搜索
  • html中圆角搜索框得实现方法
    这篇文章将为大家详细讲解有关html中圆角搜索框得实现方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。html中圆角搜索框的实现方法:首先创建一个HTML示例文件;然后创建一个form标签;接着定义好i...
    99+
    2023-06-06
  • RiSearch PHP 实现搜索关键词的自动纠错与补全
    搜索引擎是现代互联网世界中必不可少的工具,可以帮助用户快速找到所需的信息。然而,用户的输入往往存在拼写错误或不完整的情况,这给搜索过程带来了一定的困扰。为了改善用户搜索体验,我们可以通过自动纠错和补全功能,提供更准确、更完整的搜索结果。Ri...
    99+
    2023-10-21
    搜索关键词 自动纠错 补全
  • Sphinx 高可用搜索的 PHP 实现方法研究
    导语:Sphinx 是一个开源的全文搜索引擎,它提供了快速、准确和可扩展的搜索解决方案。在 PHP 网站中集成 Sphinx 可以实现高可用的搜索功能。本文将探讨 Sphinx 在 PHP 中的实现方法,并提供具体的代码示例。一、Sphin...
    99+
    2023-10-21
    高可用 PHP实现 Sphinx
  • python实现二叉搜索树的方法有哪些
    这篇文章主要介绍“python实现二叉搜索树的方法有哪些”,在日常操作中,相信很多人在python实现二叉搜索树的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python实现二叉搜索树的方法有哪些...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作