1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > MySQL全文检索中Like索引的实现

MySQL全文检索中Like索引的实现

时间:2021-09-04 23:36:52

相关推荐

MySQL全文检索中Like索引的实现

数据库|mysql教程

MySQL,全文检索,Like,索引,实现,数据库,使用,D

数据库-mysql教程

mvc5视频企业网站源码,三星平板可以装vscode,开源ubuntu系统,嵌入式tomcat 配置,爬虫读取游戏,php怎么打印sql语句,安庆网络推广seo培训班lzw

在数据库使用中,DBA都会告诉大家SQL的LIKE条件为%XXX%号时,由于不能使用索引,当数据量变大时(比如超过百万条),全表扫描会导致性能很差。 但是在实际业务中,很难避免MySQL全文检索并Like索引的这种需求。比如模糊搜索用户帐号,昵称之类。既然这个需求

匿名网站源码,vscode添加别的终端,ubuntu 快速安装,tomcat监听80,sqlite加密所有数据,chrome 仿站插件,一般公司前端用什么框架,国外爬虫繁殖机构名称,php 获取div,赤峰seo优化方案,网站资源采集教程,简单php网页,html5动态网页模板lzw

qq个人业务宣传网站源码,查看ubuntu17.04,tomcat7弱口令,爬虫 案件 分析,php 家政系统源码,seo商标lzw

在数据库使用中,DBA都会告诉大家SQL的LIKE条件为%XXX%号时,由于不能使用索引,当数据量变大时(比如超过百万条),全表扫描会导致性能很差。

但是在实际业务中,很难避免MySQL全文检索并Like索引的这种需求。比如模糊搜索用户帐号,昵称之类。既然这个需求必须做,但又不可以直接用LIKE。这里我和大家分享一下我们关于这种需求的一种解决方案。当然别人也可能采用过类似的办法,我不是很清楚。所以也用一下“原创”吧。

MySQL数据库很早就支持全文索引,但是全文索引和LIKE语句是不同的。具体点说,全文索引的单位是词,耳LIKE匹配的是字符。当然实际的区别更大,比如“老鼠爱大米”这段文本用全文搜索的话,条件“老鼠爱大米”,“老鼠和大米”,“大米老鼠”,“大米与老鼠”会搜索到内容,但是“爱”,“鼠爱”,“爱大”不会搜索到内容。反之,使用LIKE搜索时,“老鼠和大米”,“大米老鼠”,“大米与老鼠”不会找到内容,而“爱”,“鼠爱”,“爱大”会找到内容。我们这里不讨论两种方式的优劣,根据实际情况每种功能都会有各自的实际需求。比如对于大段文本,全文检索是最好的方法,但是对于姓名,帐号,昵称等很短的通常无意义文本,LIKE会更合适一些。

虽然全文检索和LIKE搜索不同,但是在特殊情况下,可以用全文搜索功能来实现LIKE搜索。具体就是每个字符作为一个词,而且使用双引号来限制词精确匹配(简单点说就是老鼠大米和大米老鼠不同),这样可以实现LIKE搜索的功能。

下面还是说一下具体的做法吧。

首先,数据库指定 –ft_min_word_len=2 –ft_stopword_file=””。第一个参数是告诉数据库,小于2个字符的词忽略。第二个是告诉数据库不忽略任何特殊词。这些设置是给实现功能创造条件。

然后建搜索表

使用上面的代码对要搜索的内容编码,比如内容是“蓝皮鼠”,编码后的结果是“84dd 76ae 9f20 32 30 30 38”。将编码后的内容存入name字段。

使用如下SQL语句进行搜索

这样就基本实现了MySQL全文检索中的Like索引。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。