我用来获取行的查询:
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,这对我来说没问题。
这种情况对我没有意义。请解释一下并提出解决方案。
答案 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行的原因。
这是我之前遇到的类似事情