MySQL 匹配布尔模式在中间词上不返回任何内容

hlh*_*406 2 mysql sql match-against

我在 MySQL 数据库中使用 Match Against 时遇到问题,希望有人能提供帮助。

这是我数据库中数据的示例:

id   name
1    really bitter chocolate
2    soft cheese
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时:

SELECT * FROM food WHERE (name) LIKE "%bitter%"
Run Code Online (Sandbox Code Playgroud)

这带来了第一个结果:

1    really bitter chocolate
Run Code Online (Sandbox Code Playgroud)

然而,它是一个更大的查询的一部分,当我运行 Match Against 代码时,我没有从这些查询中得到任何返回:

SELECT * FROM food WHERE MATCH (name) AGAINST ("bitter")

SELECT * FROM food WHERE MATCH (name) AGAINST ("bitter", IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)

我打开了全文搜索,当我搜索名称的开头时它可以工作:

SELECT * FROM food WHERE MATCH (name) AGAINST ("really")

SELECT * FROM food WHERE MATCH (name) AGAINST ("really", IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)

两者都返回:

1    really bitter chocolate
Run Code Online (Sandbox Code Playgroud)

我已经通读了这个解决方案:http : //dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html

我在这里看过:mysql WHERE MATCH AGAINST

有人可以看看我哪里出错或指出我正确的方向吗?

谢谢!

编辑

好的,根据下面的 Woot4Moo 很好的答案,我更改了代码以删除不应该存在的逗号。我还添加了 + 并将其放在单引号中,但仍然没有运气。

我当前的查询现在看起来像这样:

SELECT * FROM food WHERE MATCH (name) AGAINST ('+bitter' IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)

但它在查询浏览器中没有返回任何结果,也没有返回任何错误或警告。

小智 5

如果这是您表中仅有的两行,那么您在 50% 的记录中有搜索字符串,它将被忽略。