我在 MySQL 数据库中使用 Match Against 时遇到问题,希望有人能提供帮助。
这是我的数据库中的数据示例:
id name
1 really bitter chocolate
2 soft cheese
当我运行此查询时:
SELECT * FROM food WHERE (name) LIKE "%bitter%"
这会返回第一个结果:
1 really bitter chocolate
然而,它是一个更大的查询的一部分,当我运行“匹配”代码时,我没有从这些查询中得到任何返回的内容:
SELECT * FROM food WHERE MATCH (name) AGAINST ("bitter")
SELECT * FROM food WHERE MATCH (name) AGAINST ("bitter", IN BOOLEAN MODE)
我打开了全文搜索,当我搜索名称的开头时它会起作用:
SELECT * FROM food WHERE MATCH (name) AGAINST ("really")
SELECT * FROM food WHERE MATCH (name) AGAINST ("really", IN BOOLEAN MODE)
两者都返回:
1 really bitter chocolate
我已阅读此内容以寻求解决方案:http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html
我看过这里:mysql 哪里匹配 https://stackoverflow.com/questions/10931701/mysql-where-match-against/10931978#10931978
有人可以看看我哪里出错了或者指出我正确的方向吗?
Thanks!
EDIT
好的,根据下面的 Woot4Moo 很好的答案,我更改了代码以删除不应该存在的逗号。我还添加了 + 并将其放在单引号中,但仍然没有运气。
我当前的查询现在如下所示:
SELECT * FROM food WHERE MATCH (name) AGAINST ('+bitter' IN BOOLEAN MODE)
但它在查询浏览器中没有返回任何结果,并且没有返回任何错误或警告。