业务场景:现在你数据库中有一张表article,用于存文章,数据有很多条,查询速度非常慢,而且使用like模糊查询不仅效率低,还会出现关键字不正确就查询不到答案。
这个时候,我们就需要了解一下MySQL的全文索引以及使用了。PS:这时候你就可以用不着安装一个Elasticsearch搜索引擎了,一般小场面咋们MySQL能解决就犯不着整一个Elasticsearch对吧!
教程开始啦!
数据库和表的建立就不赘述了,自己百度去。
(1)建立全文索引
新建数据表的同时建立索引:CREATE TABLE article (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR (200),
content TEXT,
FULLTEXT (title, content) WITH PARSER ngram
) ENGINE = INNODB;
给已经建立的表的字段建立索引:ALTER TABLE article ADD FULLTEXT INDEX article_search_index (title ,content) WITH PARSER ngram;
以上是两种MySQL建立全文索引的方法,按照百度结果的说法是第二种建立索引的方法在查询数据的时候效率高于第一种,这个有待测试。
(2)根据索引查询数据(也就是搜索内容了)select t.* from article t where MATCH (title,content) AGAINST ('阳光的下午' IN NATURAL LANGUAGE MODE)
字符[阳光的下午]就