MySQL中的全文检索

转载 2016年05月30日 23:46:12

说起数据库,MYSQL最适合用于小型运用的开发。最近想弄一个简单的音乐网站玩一下,数据库是以前在网上爬去的。数据不是特别多,但是也不少,查了一下一共有六十多万条歌曲的记录。既然是做音乐网站的话,首先要有一个搜索的功能,至少要能够搜索你有的歌曲吧。由于以前没有怎么认真弄过sql查询的问题,所以还是用最简单的方法去查询,但是这次遇到了单表上百万记录。我用select * from song where songname like '%key%';去查询,结果效率低到难以忍受。竟然用了三十多秒才出结果!这对于任何运用都是没办法忍受的。后来就想着去做sql查询的优化,google了很久,试过了建立索引,改变表的结构等等都无济于事啊。后来看到一篇专业文章写道,其实对应大数据量查询的时候,很多数据库是支持全文检索的。知道以后我立马开始弄全文检索:

首先我的表默认是:innoDB,这种表的类型不支持全文检索,所以要先改变其类型为MyISAM。

 alter table song engine=MyISAM;

然后要在对应的要进行查找的字段上面建立全文检索的索引:

alter table add fulltext index(songname);

如果要同时对多个字段进行检索可以这样:

alter table add fulltext index(songname,singername);

这样做好以后呢,就可以对表进行全文检索了,速度提升是飞一般的感觉啊!现在的结果是秒出啊。可以这样去检索字段:

select * from song where match(singername) against('周杰伦') ;

或者多字段:

select * from song where match(singername,songname) against('风雨');

 

MySQL中文全文检索demoSQL

一、概述 MySQL全文检索是利用查询关键字和查询列内容之间的相关度进行检索,可以利用全文索引来提高匹配的速度。 二、语法 MATCH (col1,c...
  • soonfly
  • soonfly
  • 2016年04月15日 17:20
  • 1619

Mysql 全文本检索

mysql 全文索引 注意 并非所有的引擎都支持 全文检索 mysql最常用的引擎 INnodb 和 myisam 后者支持全文检索 前者不支持 创建表的时候指定要检...
  • yujin753
  • yujin753
  • 2015年01月22日 11:07
  • 1346

MySql5.7 InnoDB全文索引(针对中文搜索)

MySql5.7 建立全文索引1、ngram and MeCab full-text parser plugins全文检索在MySQL里面很早就支持了,只不过一直以来只支持英文。缘由是他从来都使用空格...
  • qq_33663251
  • qq_33663251
  • 2017年04月07日 19:00
  • 2867

深度解析MySQL 5.7之中文全文检索

InnoDB默认的全文索引parser非常合适于Latin,因为Latin是通过空格来分词的。但对于像中文,日文和韩文来说,没有这样的分隔符。一个词可以由多个字来组成,所以我们需要用不同的方式来处理。...
  • h106140873
  • h106140873
  • 2017年04月03日 23:52
  • 2095

MySQL 5.7 深度解析: 中文全文检索

全文检索在MySQL里面很早就支持了,只不过一直以来只支持英文。缘由是他从来都使用空格来作为分词的分隔符,而对于中文来讲,显然用空格就不合适,需要针对中文语义进行分词。这不,从MySQL 5.7开始,...
  • zwrj1130
  • zwrj1130
  • 2017年02月17日 11:29
  • 1136

MySQL 5.7 InnoDB中文全文索引测试

从MySQL 5.7.6开始,MySQL内置了ngram全文检索插件,用来支持中文分词,并且对MyISAM和InnoDB引擎有效。在全文索引中,ngram就是一段文字里面连续的n个字的序列。...
  • mysqldba23
  • mysqldba23
  • 2017年04月13日 18:38
  • 2452

全文检索引擎Solr系列——整合MySQL、MongoDB

全文检索引擎Solr系列——整合MySQL、MongoDB
  • makang110
  • makang110
  • 2016年03月18日 17:54
  • 1558

支持中文的MySQL 5.1+ 全文检索分词插件

经过不停的尝试和努力,以最新的 mysql 5.1.11-beta 为基础,制作的分词插件已经测试成功,现在发布如下。 由于 mysql 5.1.x 本身的架构作了修改,所以增加分词直接以插件形式方...
  • ahstudy
  • ahstudy
  • 2011年11月09日 15:18
  • 2246

lucene学习六:lucene全文检索与数据库查询的比较

关于lucene的具体概念和使用,本文不做具体的概述,具体通过一下三点探讨一下lucene全文检索与数据库查询的一些区别 1:性能上 数据库:比如我要查找某个商品,根据商品名,比如select * ...
  • pangliang_csdn
  • pangliang_csdn
  • 2016年06月23日 10:31
  • 2284

MySQL5.6 InnoDB中文全文索引测试

MySQL5.6不支持中文全文索引,原因很简单:与英文不同,中文的文字是连着一起写的,中间没有MySQL能找到分词的地方,但是有变通的办法,就是将整句的中文分词,并按urlencode、区位码、bas...
  • mysqldba23
  • mysqldba23
  • 2017年04月12日 17:59
  • 2670
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL中的全文检索
举报原因:
原因补充:

(最多只允许输入30个字)