我在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)
两者都返回:
1 really bitter chocolate
我已经阅读了以下解决方案: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)
看起来应该是:
SELECT * FROM food WHERE MATCH (name) AGAINST ('+bitter' IN BOOLEAN MODE)
注意我的 加号 +
和 无逗号 ,
以此处的示例为基础
MySQL可以使用IN BOOLEAN
MODE修饰符执行布尔型全文本搜索。使用此修饰符,某些字符在搜索字符串中单词的开头或结尾具有特殊含义。在下面的查询中,+和-运算符表示要出现匹配,分别需要一个单词存在或不存在。因此,查询将检索所有包含单词ySQL''但不包含单词
ourourSQL’‘的行:
mysql> SELECT * FROM articles WHERE MATCH (title,body)
-> AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
我有一个像这样的mysql表 但是我无法用这个函数检索“成人”和“儿童”的值 错误日志显示变量被正确地传递给函数: 为什么此函数返回?
这是一个布尔方法,是我作业的一小部分。我想根据输入和记录之间是否匹配来返回true或false。我想我遇到了语法问题。 这是该方法的代码,但始终有红线指示我应该在代码中添加return,否则将该方法更改为void。但我已经在if语句中添加了return true。
如何获取java主目录? 这样做的时候 一无所获
我的问题是: 接下来我用 它返回[],即不返回任何内容 但是如果我设置cursor=conn.cursor(),同样的查询会返回一些行!怎么了?为什么我不能使用游标?
TestCase 2: baseChars:['a','b'] 所需字符串长度:1 产出: 有人能帮忙吗?我已经把我的代码放在GitHub里了。如果您可以将我的实现更改为非递归,但保留函数返回类型,也将受到重视。
我检测到来自Firebug的响应标头: 响应标头 连接保持活动 内容长度11 内容类型文本/html 日期周一,2012年11月5日18:57:46 GMT 保持活动时间=5,max=99 服务器端/2.2.22(Unix)MOD_SSL/2.2.22 OpenSSL/0.9.8R DAV/2 PHP/5.4.4 X-Pad避免浏览器错误 X-Powered-由PHP/5.4.4 但是没有响应文本