mysql全文检索与模糊查询

22 篇文章 3 订阅
订阅专栏
1 篇文章 0 订阅
订阅专栏

全文检索

新建全文检索方式(支持中文全文检索):
本文使用mysql数据库版本为5.7+,InnoDB数据库引擎
全文检索解析器ngram(解决不支持中文检索方式,版本要求5.7.6+,为mysql内置插件,不需要安装,默认支持检索最短字符为2,即不支持单个字如’国’检索)

alter table news_info add fulltext index ft_in(title,category) with parser ngram;

第二种建立全文检索方法:

create fulltext index 检索名词(如:ft_in) on table_name(检索列名) with parser ngram;

其中fulltext表示全文,index索引,ft_in检索名称,(title,category)表示要设置全文检索的字段名,parser ngram即使用ngram全文解析。
执行完成后,就可以通过一下语句检索:

select *from news_info where match(title,category) against('中国' in boolean mode);

查询结果如下:
在这里插入图片描述
首先解释一下sql语句,使用全文检索的格式:

select xxx from  table_name where 
match(自己设置的检索字段名) against('xx' in boolean mode);

关于设置ngram的最短检索字符值,请自行百度。
使用全文检索在数据量较大的情况下,比(like’’)模糊查询要更快一筹。

模糊查询 like用法

其实使用全文检索也可以达到模糊查询的效果,这里不做比较
注意使用like方法实现模糊查询会使建立好的索引失效(前提是你查询的字段名不是你建立的索引,例:我查询name,where条件是phone like‘%XXX%’其中phone设置了索引,但是name没有,那模糊查询就不会使用索引,如果查询的是phone,则模糊查询还是会使用索引,这是一个很细的细节哦
关于检索的用法请看: mysql复合索引
使用sql语句:

select title from news_info where title like '%中国%' 
这种like '%X%'是指查询包括x的所有数据,%指的是X之前无数个字符,或是X之后无数个字符

查询结果:
在这里插入图片描述
我们可以看到使用了like’%中国%’,查询到的结果是所有包含中国的数据,无论中国所属的位置。我为什么要说所属的位置呢,因为如果查询条件换成like’中%'即输入如下:

select title from news_info where title like'中%'

在这里插入图片描述
我们发现查询到的数据都是中国开头的,我们继续输入查询语句(这里就不查中了,因为数据库里没有以中为结尾的):

select title from news_info where title like'%会'

结果如下:
在这里插入图片描述
我们发现查询到的数据都是末尾为会的。
我们总结一下:
'%X%'表示查询所有包含X的数据,不管位置。
'X%'表示查询以X为开头的数据。
'%X’表示查询以X为末尾的数据。
%表示n个字符。
检查自己是否使用了索引只需要在select的前面加上explain,即:

explain select title from news_info where title like '%中国%' 

在这里插入图片描述
其中title字段设置了索引,所以下面查询显示的key存在,且type为index检索。
换一下查询内容:

explain select * from news_info where title like'%中%'

在这里插入图片描述
我们可以看到type是所有,且key为空,即没有用到索引。

正则表达

^匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置。
$匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置。

通过实例讲解:
输入以下sql语句:

select title from news_info where title regexp '^中'

查询结果为:
在这里插入图片描述
出来这个结果应该很熟悉吧,比较上面的like用法也查出来过,通过查询的内容,我们发现regexp '^X’表示查询以X为开头的数据。
输入如下:

select title from news_info where title regexp '会$'
表示查询以会为结尾的数据

在这里插入图片描述

mysql全文模糊搜索MATCH AGAINST方法示例
12-15
mysql 4.x以上提供了全文检索支持 MATCH ……AGAINST 模式(不区分大小写) 建立全文索引的表的存储引擎类型必须为MyISAM 问题是match against对中文模糊搜索支持不是太好 新建一个utf8 MyISAM类型的表并建立一个...
mysql使用全文检索实现模糊查询再也不使用like+%
zouyang920的博客
01-14 3491
前言 mysql模糊查询数据时使用 “%xx” 会导致索引失效,MySQL 5.6 开始,InnoDB 开始支持全文检索(使用B+tree索引完成模糊查询全文检索 1、创建表时创建全文索引语法如下: CREATE TABLE table_name ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, author VARCHAR(200), title VARCHAR(200), content TEXT(500), FULLTEXT full
MySQL使用全文检索实现模糊搜索
weixin_42495123的博客
04-11 1226
sql使用全文检索实现模糊查询
MySQL模糊查询
最新发布
qq_43470534的博客
04-15 586
%通配符可以匹配任意字符,但是不能匹配NULL,也就是说SELECT * FROM blog where title_name like '%';--模糊匹配含有“xxx网xxx车xxx”的数据,如“滴滴网约车司机端,网络约车平台”2.“_”下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符。--查询前三个字符为xx网,后面任意匹配,如:“城通网盘、模具网平台”--模糊匹配含义“xx网x车xxx”的数据,如:“携程网约车客户端”--查询以“网”为结尾的,长度为三个字的数据,如:“链家网”
mysql 全文模糊搜索
java之路
12-31 763
mysql使用全文模糊搜索
like模糊查询和全文索引的区别
weixin_42223524的博客
02-28 630
不是直接和值进行比较,而是用来查找文本中的关键字,如果我们希望根据关键字匹配查找数据,而不是全数据类型匹配,这就可以使用全文索引来提高查询的效率。使用Navicat或者sql命令都可以,创建全文索引,注意需要添加中文分词器,默认只是对英文支持, 中文解析器为:ngram。:关键字虽然可以实现模糊匹配查询,但是这只是针对数据量比较少的情况下,当数据量比较大的时候效率就会明显降低。使用全文索引如果想要修改下索引的长度,我们可以进行配置,在 my.ini(或my.cnf)中的mysqld。
mysql全文搜索实现模糊查询_mysql使用全文索引实现大字段的模糊查询
weixin_30877775的博客
01-18 1605
0.场景说明centos7 mysql5.7 InnoDB引擎0.1创建表DROP TABLE IF EXISTS tbl_article_content;CREATE TABLE tbl_article_content (id bigint(40) NOT NULL AUTO_INCREMENT,content text CHARACTER SET utf8 COLLATE utf8_gene...
mysql模糊查询text字段时 查询效率极慢(优化)
m0_55584658的博客
02-22 3226
mysql模糊查询text字段时 查询效率极慢(优化)
解决MySQL数据库中文模糊检索问题的方法
09-14
在进行中文模糊检索时,MySQL 的 default collagenation 会导致模糊检索结果不准确,返回一些与之不相关的记录。这是因为 MySQL 的 default collagenation 不支持中文模糊检索,导致模糊检索结果不准确。 解决方法 ...
Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办
09-02
主要介绍了Mybatis使用MySQL模糊查询时输入中文检索不到结果的解决办法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
如何实现MySQL数据库中文模糊检索
03-03
MySQL下,在进行中文模糊检索时,经常会返回一些与之不相关的记录,本文介绍了实现MySQL数据库中文模糊检索的方法。
Lucene全文搜索 分组,精确查找,模糊查找
04-17
NULL 博文链接:https://zm603380946.iteye.com/blog/1827318
MySQL全文索引、联合索引、like查询、json查询速度哪个快
12-14
我们需要在这10万条数据中检索特定类型的数据,目标总数据量:2931条 SELECT COUNT(*) FROM tmp_test_course WHERE `type`=5 AND del=2 AND is_leaf=1 我们在限定为上面类型的同时,还得包含下面任意一个编码(也...
嵌入式数据库(MySQL)中数据模糊检索方法解析.pdf
10-10
嵌入式数据库(MySQL)中数据模糊检索方法解析.pdf
MySQL DML - 条件查询.md
07-31
通过文档,您可以学习如何使用`SELECT`语句和不同的条件查询语句从表中检索满足特定条件的数据。 示例代码演示了根据单个条件、多个条件、逻辑运算符、比较运算符和模糊查询来筛选数据的方法。还包括了查询为空或...
MySql基本查询、连接查询、子查询、正则表达查询讲解
08-24
(3)模糊查询 like 像 LIKE关键字可以匹配字符串是否相等。如果字段的值与指定的字符串相匹配,则满足查询条件,该纪录将被查询出来。如果与指定的字符串不匹配,则不满足查询条件。其语法规则如下:[ NOT ] LIKE ...
MySQL中文全文检索
Java牛马的博客
04-17 1343
常规数据库搜索都是用 like 语句,但是like 语句是不能利用索引的,查询效率极其低下。这也就是为什么很多功能都只提供标题搜索的原因,因为如果搜索内容,几万数据就跑不动了。Mysql 全文索引是专门为了解决模糊查询提供的,可以对整篇文章预先按照词进行索引,搜索效率高,能够支持百万级的数据检索。
ElasticSearch总结
m0_47612445的博客
04-28 1429
一、索引 简单来说:正向索引是通过key找value,反向索引则是通过value找key 1、正向索引 是什么 以ID为主键,通过ID快速检索到对应的数据或者信息 优缺点 优点:新增数据时,直接存储到数据库中并按照lD创建索引删除数据时,直接删除数据即可,然后将ID对应的索引移除。综上所述:数据的新增和删除与其他行的数据关联很小 缺点:针对于非主健的列进行查询,效率比较低,比如说一些模糊查询 like %yjx% 2、反向索引(也叫倒排索引) 是什么 以字或者词为主键,然后记录这个字词出现在的文档以及文档的
【ELK】Elasticsearch入门04 -- 基础语法 查询语法(全文检索、多字段匹配、词条匹配、模糊检索、结果过滤)
qq_36615278的博客
04-28 1905
【ELK】Elasticsearch入门03 – 基础语法 查询语法(全文检索、多字段匹配、词条匹配、模糊检索、结果过滤)   查询所有数据 GET /索引名/_search { "query" : { "match_all": {} } } GET /test/_search { "query" : { "match_all": {} } } 返回 { "took" : 0, "timed_out" : false, "_shards" : {
mysql模糊查询全文索引
09-30
MySQL支持全文检索的查询,可以使用全文索引来进行模糊查询。全文索引只能在InnoDB或MyISAM的表上使用,并且只能用于创建char、varchar和text类型的列。 要进行模糊查询,可以使用MATCH AGAINST语句,语法如下: SELECT * FROM table_name WHERE MATCH(column_name) AGAINST('keyword' IN BOOLEAN MODE); 在这个语句中,column_name是要进行全文检索的列名,'keyword'是要搜索的关键词。BOOLEAN MODE表示使用布尔模式进行匹配。可以使用AND、OR、NOT等布尔运算符来连接多个关键词。 需要注意的是,全文检索可能会带来许多非相关性的查询结果,因此在使用时需要谨慎。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Android连接Mysql数据库教程以及增删改查 32791
  • 解决Android升级工程项目 compileSdkVersion 29版本 API9.0可能出现的错误 12637
  • SVN访问You don't have permission to access this resource 403错误 11094
  • platform-tools\adb.exe,start-server' failed -- run manually if necessary,adb 10442
  • java.lang.NullPointerException: Attempt to invoke interface method 'java.sql.Statement java.sql.Conn 10330

分类专栏

  • Compose使用 4篇
  • 研究 6篇
  • 简易音乐 33篇
  • 开源库 7篇
  • 学习笔记 22篇
  • WebView学习 3篇
  • 内功修炼 4篇
  • Kotlin学习开发 2篇
  • 简易新闻App 28篇
  • SVN使用学习 1篇
  • 电梯APP 6篇
  • Mysql学习 1篇
  • 学习手札 17篇
  • 转载专区 2篇
  • 常见问题专区 18篇
  • 网络访问方法学习 3篇
  • Android与数据库 11篇
  • Git使用学习 1篇
  • 图片加载框架学习 2篇

最新评论

  • Android连接Mysql数据库教程以及增删改查

    Sxiaocai: 请问,我使用的也是和博主相同的版本,但是就是连接数据库为null是怎么回事啊,就是在localhost上,用户密码都是对的表情包

  • Android音乐App开发准备( 简易音乐 一 )

    2201_75517443: 大神您好,我(纯小白)想请问一下简易音乐专栏里的简易音乐一里面的第四步那个APP进程java添加在那个Java文件里,还是说要单独在项目里新建一个java然后把第四步的代码放进去呢?

  • Android简易音乐重构MVVM Java版-github开源+功能介绍(二十三)

    城南花已开�280: up主请问一下为啥导入成功以后data.getProfile()、getData()还是会爆红

  • 添加 Android App Links

    bhi: OK,谢谢老哥

  • 添加 Android App Links

    雪の星空朝酱: 这个账号是你自己网易云账号,做的简单的demo,没有注册功能,如果你要是毕设做这种的话我建议你是去github上面搜索成熟的仿网易云音乐项目比较好

大家在看

  • 【C语言】宏offsetof的模拟实现(计算结构体中某变量相对于首地址的偏移) 323
  • eNSP学习——RIP的路由引入 537
  • File文件教会你
  • PBox iOS端的应用隐藏、图片视频加密软件
  • [c++]placement new(定位new运算符)用法及用途 16

最新文章

  • 添加 Android App Links
  • Compose中常用的一些Modifier的扩展ui方法记录
  • Android调用google原生裁剪,兼容三方相册裁剪功能
2023年5篇
2022年34篇
2021年32篇
2020年15篇
2019年65篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪の星空朝酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司白城seo多少钱石岩网站设计防城港企业网站制作报价遵义优化价格南昌推广网站推荐白城网站制作哪家好德州企业网站制作公司昆明百度竞价公司固原网站优化按天收费公司垦利英文网站建设公司铜陵网站搜索优化多少钱平顶山阿里店铺托管公司唐山百度爱采购哪家好荆州网站优化软件河池建站价格大运SEO按效果付费价格喀什seo排名莆田百姓网标王推广价格绥化网站优化按天扣费吉祥网站改版推荐固原网站关键词优化推荐马鞍山SEO按天计费价格崇左关键词按天扣费多少钱昌吉网站改版哪家好怀化阿里店铺运营多少钱玉树高端网站设计池州网页设计报价宿迁关键词排名哪家好永州网站优化软件报价鞍山网页设计多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化