使用截断的排除词的布尔搜索对我不起作用

时间:2011-06-20 11:01:16

标签: mysql boolean-expression

当我搜索:

SELECT * FROM db.test
WHERE
MATCH(story)AGAINST('(+bananas -banana*)'IN BOOLEAN MODE)

我返回了行但是当我搜索

SELECT * FROM db.test
WHERE
MATCH(story)AGAINST('(+bananas -bananas)'IN BOOLEAN MODE)

SELECT * FROM db.test
WHERE
MATCH(story)AGAINST('(+bananas -bananas*)'IN BOOLEAN MODE)

我没有结果。对我来说,似乎你不能与减号一起使用*。 有没有人知道是否是这种情况,或者它是否是MySql中的设置。

亲切的问候 欧莱

该表是MYISAM,我有一个关于专栏故事的索引。

2 个答案:

答案 0 :(得分:1)

最后2个查询没有给出任何结果,因为它们包含矛盾的条件 - 故事必须有“香蕉”这个词,而且不能有“香蕉”这个词。这是不可能的,因此没有结果。

然而,第一个查询意味着“香蕉”必须存在,但没有“香蕉”。

此外,您可以使用*和减号运算符。

希望这有帮助。

答案 1 :(得分:0)

解决方案是跳过括号。如果我搜索'+ bananas -banana *'而不是'(+ bananas -banana *)'它可以工作。你花了一段时间才弄明白。

干杯