Mysql全文搜索返回空结果,而有100多行

时间:2015-06-21 06:52:46

标签: mysql search full-text-search

我用来获取行的查询:

SELECT * FROM `sentence` WHERE MATCH(text) AGAINST('hello')

当我运行此查询时,Mysql返回空结果。

但是如果我使用LIKE关键字来获取行

SELECT * FROM `sentence` WHERE text LIKE '%hello%'

然后,Mysql返回144行。

让我们来一个更奇怪的事情

Mysql全文适用于某些单词o.O

例如,当我搜索杀手'单词,LIKE返回44,Fulltext返回20,这对我来说没问题。

这种情况对我没有意义。请解释一下并提出解决方案。

1 个答案:

答案 0 :(得分:1)

要回答你的第一种情况,即hello什么都不撤回,那么当你搜索单词hello

时,它的全文搜索停用词没有做任何事情

http://dev.mysql.com/doc/refman/5.6/en/fulltext-stopwords.html

您可以将自己的文件设置为

  • 在mysql配置文件中,对于debian /etc/mysql/my.cnf,添加ft_stopword_file =' path / to / stopword_file.txt'

  • 如果需要,我们可以将此文件留空。

第二种情况killer未返回预期的行数,这可能有多种原因

  • 单词
  • 中的空格
  • 区分大小写问题。
  • 和全文搜索只会匹配complete word,因为您尝试它不会与AGAINST('killer')进行模式匹配,但使用like '%killer%'将匹配任何字符串killer

如果您创建一个有用的小提琴,则复制问题并查看问题的原因。但对于第一种情况,它的禁用词列表就是你获得0行的原因。

这是我之前遇到的类似事情

mysql ft_min_word_len change on ubuntu does not work