返回顶部
首页 > 资讯 > 数据库 >Mysql使用全文索引(FullText index)的实例代码
  • 748
分享到

Mysql使用全文索引(FullText index)的实例代码

2024-04-02 19:04:59 748人浏览 泡泡鱼
摘要

目录什么是全文索引注意创建全文索引使用全文索引自然语言搜索BOOLEAN MODE总结什么是全文索引 全文索引,通过建立倒排索引,可以极大的提升检索效率,解决判断字段是否包含的问题.

什么是全文索引

全文索引,通过建立倒排索引,可以极大的提升检索效率,解决判断字段是否包含的问题. 例如: 有title字段,需要查询所有包含 "政府"的记录. 需要 like "%政府%"方式查询,查询速度慢,当查询包含"政府" OR "中国"的需要是,sql难以简单满足.全文索引就可以实现这个功能.

倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构

注意

Mysql 5.6版本以前,只有MyISAM存储引擎支持全文引擎.在5.6版本中,InnoDB加入了对全文索引的支持,但是不支持中文全文索引.在5.7.6版本,mysql内置了ngram全文解析器,用来支持亚洲语种的分词.

创建全文索引

  • 创建表的时候创建
CREATE TABLE articles (
    id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    title VARCHAR (200),
    body TEXT,
    FULLTEXT (title, body) WITH PARSER ngram
) ENGINE = INNODB DEFAULT CHARSET=utf8mb4 COMMENT='文章表';

创建了一个给title和body字段添加全文缩影的表

  • 给字段添加全文索引 ALTER TABLE articles ADD FULLTEXT INDEX title_body_index (title,body) WITH PARSER ngram;

使用全文索引

MySQL的全文索引查询有多种模式

自然语言搜索

普通的判断是否包含

mysql> SELECT * FROM articles WHERE MATCH (title,body) AGaiNST ('精神' IN NATURAL LANGUAGE MODE);
+----+-----------------+-------------------------+
| id | title           | body                    |
+----+-----------------+-------------------------+
|  1 | 弘扬正能量      | 贯彻党的18大精神        |
+----+-----------------+-------------------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('精神');
+----+-----------------+-------------------------+
| id | title           | body                    |
+----+-----------------+-------------------------+
|  1 | 弘扬正能量      | 贯彻党的18大精神        |
+----+-----------------+-------------------------+
1 row in set (0.00 sec)
可以看到,搜索结果命中了一条,且在不指定搜索模式的情况下,默认模式为自然语言搜索.

BOOLEAN MODE

这个模式和lucene中的BooleanQuery很像,可以通过一些操作符,来指定搜索词在结果中的包含情况.比如 + 表示必须包含 , -表示必须不包含,默认为误操作符,代表可以出现可以不出现,但是出现时在查询结果集中的排名较高一些.也就是该结果和搜索词的相关性高一些.

具体包含的所有操作符可以通过MySQL查询来查看:

show variables like '%ft_boolean_syntax%'

+-------------------+----------------+
| Variable_name     | Value          |
+-------------------+----------------+
| ft_boolean_syntax | + -><()~*:""&| |
+-------------------+----------------+
mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+精神' IN BOOLEAN MODE);
+----+-----------------+-------------------------+
| id | title           | body                    |
+----+-----------------+-------------------------+
|  1 | 弘扬正能量      | 贯彻党的18大精神        |
+----+-----------------+-------------------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+精神 -贯彻' IN BOOLEAN MODE);
Empty set (0.01 sec)
当搜索必须命中精神时,命中了一条数据,当在加上不能包含贯彻的时候,无命中结果.

强烈注意:MySql自带的全文索引只能用于数据库引擎为MYISAM的数据表,如果是其他数据引擎,则全文索引不会生效。此外,MySql自带的全文索引只能对英文进行全文检索,目前无法对中文进行全文检索。如果需要对包含中文在内的文本数据进行全文检索,我们需要采用Sphinx(斯芬克斯)/Coreseek技术来处理中文。

注:目前,使用MySql自带的全文索引时,如果查询字符串的长度过短将无法得到期望的搜索结果。MySql全文索引所能找到的词默认最小长度为4个字符。另外,如果查询的字符串包含停止词,那么该停止词将会被忽略。

注:如果可能,请尽量先创建表并插入所有数据后再创建全文索引,而不要在创建表时就直接创建全文索引,因为前者比后者的全文索引效率要高。

总结

到此这篇关于Mysql使用全文索引(FullText index)的文章就介绍到这了,更多相关Mysql使用全文索引内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: Mysql使用全文索引(FullText index)的实例代码

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

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

猜你喜欢
  • Mysql使用全文索引(FullText index)的实例代码
    目录什么是全文索引注意创建全文索引使用全文索引自然语言搜索BOOLEAN MODE总结什么是全文索引 全文索引,通过建立倒排索引,可以极大的提升检索效率,解决判断字段是否包含的问题....
    99+
    2024-04-02
  • MySQL innodb 全文索引使用
    1、mysql 5.7 全文索引以下几个参数(配置文件/etc/my.cnf)#控制innodb全文检索分词的最小长度,如果设置为2那么一个汉字和一个字母将不能搜到ngram_token_size=1#存储...
    99+
    2024-04-02
  • MySQL 全文索引使用指南
    全文索引需要特殊的查询语法。有没有索引都可以进行全文检索,但是存在索引时会提高匹配的速度。全文索引的索引通过特殊的结构存储以便于找到文档中包含搜索关键字对应的内容。在我们日常生活中,最常见的全文检索就是网络搜索引擎。...
    99+
    2022-05-14
    MySQL 全文索引 MySQL 索引
  • MySQL中怎么使用Generated Columns + index代替函数索引
    这篇文章主要讲解了“MySQL中怎么使用Generated Columns + index代替函数索引”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQ...
    99+
    2024-04-02
  • MySQL 全文检索的使用示例
    目录1. 环境准备2. 数据准备3. 开始表演4. 分词引擎总结参考资料1. 环境准备 MySQL 5.7.6之前,全文索引只支持英文全文索引,不支持中文全文索引,需要利用分词器把中文段落预处理拆分成单词,然后存入...
    99+
    2022-05-27
    MySQL 全文检索
  • Java使用强大的Elastisearch搜索引擎实例代码
    Elastisearch是一个很强大,易用的搜索引擎在系统上运行Elastisearch只需以下几步下载Elastisearch复制代码 代码如下:...
    99+
    2023-05-31
    java elastisearch ava
  • Mysql实现简易版搜索引擎的示例代码
    目录前言简介ngram 全文解析器创建全文索引检索方式1、自然语言检索(NATURAL LANGUAGE MODE)2、布尔检索(BOOLEAN MODE)与 Like 对比总结前言...
    99+
    2024-04-02
  • Django对接elasticsearch实现全文检索的示例代码
    目录前言 第一步:首先安装相关的依赖包 第二步:在django项目配置文件settings.py中注册应用 第三步:在django项目配置文件settings.py中指定搜索的后端 ...
    99+
    2024-04-02
  • mysql索引的重要性及实例使用
    本篇内容主要讲解“mysql索引的重要性及实例使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql索引的重要性及实例使用”吧!  一,索引的重要性  索...
    99+
    2024-04-02
  • MySQL中索引+explain的使用示例
    这篇文章给大家分享的是有关MySQL中索引+explain的使用示例的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。一、索引的介绍在mysql中,索引就是数据结构,已经在文件中按照...
    99+
    2024-04-02
  • mysql全文索引实现的原理是什么
    MySQL全文索引实现的原理主要是利用倒排索引和自然语言处理技术。具体步骤如下: 创建全文索引:在创建表时,可以为需要进行全文检...
    99+
    2024-04-18
    mysql
  • Mysql索引分类及其使用实例详解
    目录mysql的索引分类单列索引创建单列索引的几种方式:唯一索引创建唯一索引的几种方式:联合索引(复合索引)创建联合索引(复合索引)的方式:Mysql的索引类型INDEX | NORMAL 普通索引UNIQUE 唯一索引...
    99+
    2022-07-19
    Mysql索引分类 Mysql索引使用
  • mysql5.7.25使用全文检索功能的实例教程
    目录前言1. 创建带有全文索引的表2. 添加全文索引3. 添加测试数据4. 执行查询5. 语法总结前言 有时项目中需要用到全文检索功能,如果全文检索数量相对较小,并且不希望单独搭建e...
    99+
    2024-04-02
  • 怎么使用ABAP Restful API进行代码的全文搜索
    这篇文章主要介绍“怎么使用ABAP Restful API进行代码的全文搜索”,在日常操作中,相信很多人在怎么使用ABAP Restful API进行代码的全文搜索问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-04
  • MySql索引提高查询速度常用方法代码示例
    使用索引提高查询速度 1.前言   在web开发中,业务模版,业务逻辑(包括缓存、连接池)和数据库这三个部分,数据库在其中负责执行SQL查询并返回查询结果,是影响网站速度最重要的性能瓶颈。本文主要针对Mysql数据库...
    99+
    2022-05-14
    MySql 索引 提高 查询速度
  • Java实现文件检索系统的示例代码
    示例代码 package Demo; import java.io.File; import java.io.FilenameFilter; import java.util.Sc...
    99+
    2024-04-02
  • Vue+better-scroll实现通讯录字母索引的示例代码
    目录环境准备:实现步骤:数据结构基本HTML使用better-scroll实现内容区列表的滚动给索引添加点击事件和移动事件实现跳转给索引添加高亮全部代码总结参考文献如图,实现一个滚动...
    99+
    2024-04-02
  • 如何使用MySQL的全文检索功能实现高效率的文本搜索?
    如何使用MySQL的全文检索功能实现高效率的文本搜索?作者:AI助手摘要:本文介绍了如何使用MySQL的全文检索功能,在数据库中实现高效率的文本搜索。首先,我们会讲解MySQL全文索引的基本原理和使用方法。然后,我们会探讨如何优化全文检索的...
    99+
    2023-10-22
    MySQL 全文检索 文本搜索
  • MySQL中的全表扫描和索引树扫描 的实例详解
    目录引言实例引言 在学习mysql时,我们经常会使用explain来查看sql查询的索引等优化手段的使用情况。在使用explain时,我们可以观察到,explain的输出有一个很关键...
    99+
    2024-04-02
  • mysql+mybatis下全文搜索的使用方法
    第一步在你的需要全文搜索的列上点击 全文搜索full text类型索引,注意我的例子是该列是个longText类型的列 第一步建立fulltext类型索引如下图 索引类型选择fu...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作