Mysql 带有截断排他词don'的布尔搜索;我不工作

Mysql 带有截断排他词don'的布尔搜索;我不工作,mysql,boolean-expression,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) 或 我没有结果。对我来说,似乎你不能把*和减号一起使用。 有人知道是这样还是MySql中的设置 问候 奥利 表是

当我搜索:

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)

我没有结果。对我来说,似乎你不能把*和减号一起使用。 有人知道是这样还是MySql中的设置

问候 奥利


表是MYISAM,我在列story上有一个索引。

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

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

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


希望这有帮助。

解决方法是跳过括号。如果我搜索“+香蕉-香蕉*”而不是“(+香蕉-香蕉*)”,它会工作。花了一段时间才明白你的意思


干杯

我认为第一行也不应该返回任何行,因为我搜索的是香蕉而不是香蕉*;香蕉与香蕉、香蕉船等相配。我的问题是,当我用*@Olle:aha截断排除词时,我得到了行。对了,我想我没有注意到您的第一个查询使用了“-banana*”中的-(减号)运算符。据我所知,您的第一个查询也不能返回任何结果。即使您执行“+bananas-b*”,它也不会返回任何结果。我在我的开发工具上试过一次测试,发现(+Philippine)上的搜索返回结果,但(+Philippine-ph*)没有返回结果。嗯,我注意到了那些括号,但我认为它们不会对查询产生影响。我自己也试过了,查询返回了相同的结果,有括号也有括号,因为我认为)after-banana*没有任何意义。
SELECT * FROM db.test
WHERE
MATCH(story)AGAINST('(+bananas -bananas*)'IN BOOLEAN MODE)