Mysql 全文搜索 returns 超过 100 行时为空结果

Mysql Fulltext search returns empty result while there are 100+ rows

我用来获取行的查询:

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

Mysql returns 当我 运行 这个查询时结果为空

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

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

那么,Mysql returns 144行。

让我们来看看更奇怪的事情

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

例如,当我搜索 'killer' 单词时,LIKE returns 44 和 Fulltext returns 20 对我来说没问题。

这种情况对我来说没有意义。请对此进行解释并提出解决方案。

要回答您的第一种情况,即 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%' 将匹配具有字符串 [=12] 的任何内容=].

要复制问题并查看问题的原因,如果您创建一个 fiddle 会有帮助。但对于第一种情况,它是停用词列表,这就是为什么你得到 0 行的原因。

这是我之前遇到的类似问题

mysql ft_min_word_len change on ubuntu does not work