背景:搞个个人博客的全文搜索得用like啥的,现在mysql版本号已经大于5.6.4了也就支持了innodb的全文搜索了,刚查了下目前版本号都到MySQL Community Server 5.6.19 了,所以,一些小的应用可以用它做全文搜索了,像sphinx和Lucene这样偏重的、需要配置或开发的,节省了成本。
这儿有一个原创的Mysql全文搜索的文章, mysql的全文搜索功能:
http://blog.csdn.net/bravekingzhang/article/details/6727541
基于mysql全文索引的深入理解:
http://www.jb51.net/article/37738.htm
为什么要设置 Mysql 的 ft_min_word_len=1:
http://blog.csdn.net/shilian_h/article/details/6215537
MySQL 全文搜索支持简述:
从MySQL 4.0以上 myisam引擎就支持了full text search 全文搜索,在一般的小网站或者blog上可以使用这个特性支持搜索。
那么怎么使用了,简单看看:
1.创建一个表,指定支持fulltext的列
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
);
2.插入一些数据作为测试
INSERT INTO articles (title,body) VALUES
(‘MySQL Tutorial‘,‘DBMS stands for DataBase ...‘),
(‘How To Use MySQL Well‘,‘After you went through a ...‘),
(‘Optimizing MySQL‘,‘In this tutorial we will show ...‘),
(‘1001 MySQL Tricks‘,‘1. Never run mysqld as root. 2. ...‘),
(‘MySQL vs. YourSQL‘,‘In the following database comparison ...‘),
(‘MySQL Security‘,‘When configured properly, MySQL ...‘);
3.select查询fulltext的列
SELECT * FROM articles
WHERE MATCH (title,body) AGAINST (‘database‘);
查询结果:
5 MySQL vs. YourSQL In the following database comparison ...
1 MySQL Tutorial DBMS stands for DataBase ...
全文查询中的boolean语句, + -跟普通的搜索引擎语法一样
SELECT * FROM articles WHERE MATCH (title,body)
AGAINST (‘+MySQL -YourSQL‘ IN BOOLEAN MODE);
innodb不支持fulltext,当然可以使用http://sphinxsearch.com/ sphinx来dump数据库数据支持全文搜索。