MySQL 全文搜索得不到所要的结果

今天遇到了一个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一样的结果呢?

谢谢大家

阅读 7.8k
3 个回答

MySQL5.7已经支持中文分词的全文检索,你要像以下这样创建索引,不加with parser ngram 默认是按照英文的空格分词,你这几个汉字当然会被当做一个整体。

FULLTEXT KEY `building` (`keyword`) with parser ngram
新手上路,请多包涵

mysql的全文检索是英文的全文检索,英文单词之间是空格分开的,所以可以搜索到,中文是连在一起的,所以必须先分词,否则全部当一个词的。参考mysql教程

=.=~试过,刚好有个应用使用了全文索引。结果就是不采用其他方式处理的话,咩有效果

这是结果说明

推荐问题