MySQL自带全文索引(FULLTEXT)
- 创建表
CREATE TABLE `demo` ( `id` int(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, `title` varchar(20) DEFAULT NULL COMMENT '标题', FULLTEXT(title) WITH PARSER ngram COMMENT 'ngram_token_size=2' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试表' - 插入数据
INSERT INTO `demo` (`title`) VALUES ('旺旺饼干'); INSERT INTO `demo` (`title`) VALUES ('鸡蛋饼干'); INSERT INTO `demo` (`title`) VALUES ('奶油饼干'); INSERT INTO `demo` (`title`) VALUES ('旺旺仙贝'); INSERT INTO `demo` (`title`) VALUES ('旺旺雪饼'); - 查询
- 在布尔模式中,+ 符号表示该词必须存在, 但可以省略
- 在布尔模式中,- 符号表示该词必须不存在,但必须配合至少一个肯定条件使用
// 同时包含旺旺和饼干的记录
SELECT * FROM demo WHERE MATCH(title) AGAINST('+旺旺 +饼干' IN BOOLEAN MODE);
// 包含旺旺或饼干的记录
SELECT * FROM demo WHERE MATCH(title) AGAINST('旺旺 饼干' IN BOOLEAN MODE);
// 包含旺旺但不包含饼干的记录
SELECT * FROM demo WHERE MATCH(title) AGAINST('+旺旺 -饼干' IN BOOLEAN MODE);
// 不包含旺旺的所有记录
SELECT * FROM demo WHERE MATCH(title) AGAINST('+* -旺旺' IN BOOLEAN MODE);