今天遇到了一个MySQL全文搜索的问题,请教各位,谢谢。
MySQL版本:5.7.9
表结构:
CREATE TABLE `promotion` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`keyword` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `building` (`keyword`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在keyword字段中建立了一个全文索引,表中有大量数据。
用LIKE语句查询
SELECT id, keyword FROM `promotion` WHERE keyword LIKE '%保利国际广场%';
查询结果:
1 保利国际广场
2 保利国际广场论坛
3 北京保利国际广场
4 保利国际广场论坛
5 保利国际广场地址
6 ……
用全文搜索
SELECT id, keyword FROM `promotion` MATCH(keyword) AGAINST ('保利国际广场' IN BOOLEAN MODE)
查询结果:
1 保利国际广场
以上的查询有点像精确匹配了,凡是包含“保利国际广场”的词都没出来,在网上查询了一些资料以后修改成了以下的语句
SELECT id, keyword FROM promotion
MATCH(keyword) AGAINST ('保利国际广场*' IN BOOLEAN MODE)
查询结果:
1 保利国际广场
2 保利国际广场论坛
3 保利国际广场论坛
4 保利国际广场地址
5 ……
这个结果有点像模糊匹配了,但是……“北京保利国际广场”这个词没有匹配到。
请问,如何才能用全文搜索的方法获得像LIKE一样的结果呢?
谢谢大家
MySQL5.7已经支持中文分词的全文检索,你要像以下这样创建索引,不加with parser ngram 默认是按照英文的空格分词,你这几个汉字当然会被当做一个整体。