我在MySQL数据库中使用Match Against时遇到问题,希望有人能提供帮助。
这是我数据库中数据的示例:
id name 1 really bitter chocolate 2 soft cheese
当我运行此查询时:
SELECT * FROM food WHERE (name) LIKE "%bitter%"
这带来了第一个结果:
1 really bitter chocolate
但是,它是更大的查询的一部分,并且当我运行Match Against代码时,这些查询中的任何一个都不会返回任何内容:
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)
两者都返回:
我已经阅读了以下解决方案:http : //dev.mysql.com/doc/refman/5.5/en/fulltext- boolean.html
我在这里看过:mysql哪里匹配
有人可以请问我出了什么问题或向正确的方向指出吗?
谢谢!
编辑
好的,按照下面的Woot4Moo很好的答案,我已经更改了代码以删除不应该在那里的逗号。我还添加了+并将其放在单引号中,但仍然没有运气。
我当前的查询现在看起来像这样:
SELECT * FROM food WHERE MATCH (name) AGAINST ('+bitter' IN BOOLEAN MODE)
但是,它在查询浏览器中不返回任何结果,也不返回任何错误或警告。
SELECT * FROM food WHERE MATCH (name) AGAINST ("bitter", IN BOOLEAN MODE)
看起来应该是:
注意我的 加号 +和 无逗号 ,
+
,
以此处的示例为基础
MySQL可以使用IN BOOLEAN MODE修饰符执行布尔型全文本搜索。使用此修饰符,某些字符在搜索字符串中单词的开头或结尾具有特殊含义。在下面的查询中,+和-运算符表示要出现匹配,分别需要一个单词存在或不存在。因此,查询将检索所有包含单词ySQL''但不包含单词ourourSQL’‘的行:
ySQL''但不包含单词
mysql> SELECT * FROM articles WHERE MATCH (title,body) -> AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);