0

当我搜索:

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中的设置。

亲切的问候 Olle

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

4

2 回答 2

1

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

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

此外,您可以将 * 与减号运算符一起使用。

希望这可以帮助。

于 2011-06-20T11:19:01.333 回答
0

解决方案是跳过括号。如果我搜索 '+bananas -banana*' 而不是 '(+bananas -banana*)' 它会起作用。花了一段时间才弄清楚你。

干杯

于 2011-06-21T07:16:36.340 回答