NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
MySQL允许在char、varchar、text类型上建立全文索引 ## 使用 1.创建表 `blog ~~~sql DROP TABLE IF EXISTS `blog`; CREATE TABLE `blog` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL, `content` text, PRIMARY KEY (`id`), ) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8; ~~~ 2.创建在需要搜索的字段`title`和`content`创建全文索引(使用`ngram parser`) ~~~sql ALTER TABLE `blog` ADD FULLTEXT INDEX index_name(`title`,`content`) WITH PARSER ngram; 或 CREATE FULLTEXT INDEX index_name ON `blog` (`title`,`content`) WITH PARSER ngram; #也可以添加配置分词的数量,默认值1 [mysqld] ngram_token_size=2 ~~~ 3.进行全文检索 ~~~sql select * from `table_name` where MATCH(col1,col2,…) AGAINST (expr[search_modifier]) eg. select * from `blog` where MATCH(`title`,`content`) AGAINST ('博客搜索' IN NATURAL LANGUAGE MODE) ~~~ MATCH(col1,col2,…) AGAINST (expr\[search\_modifier\])。 其中MATCH中的内容为已建立FULLTEXT索引并要从中查找数据的列, AGAINST中的expr为要查找的文本内容,search\_modifier为可选搜索类型。 `search_modifier`的可选值 ~~~text search_modifier: { IN NATURAL LANGUAGE MODE | IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION | IN BOOLEAN MODE | WITH QUERY EXPANSION } ~~~