2011-03-25 55 views
0

我的查询是如此配制:空间在MySQL搜索

$sql = "SELECT name, id FROM table WHERE MATCH (name) AGAINST ('".$query."*' IN BOOLEAN MODE) LIMIT 0,10"; 

因此搜索tom检索:

Tom Anderson | 1 
Tom Bennet  | 2 
Tom Cane  | 3 

但是,如果我搜索tom anderson查询编译为:

...MATCH (name) AGAINST ('tom anderson*' IN BOOLEAN MODE)... 

它返回相同的结果集(我只想要第一个)。我应该如何改变我的查询?

+1

我现在不能测试,但是'AGAINST(''tom anderson *''BOOLEAN MODE)'(注意引号)应该这样做,''AGAINST('+ tom + anderson%'BOOLEAN模式)'' (尽管这也会发现“安德森汤姆”)。 – 2011-03-25 21:57:56

+0

我把'*'放在'''之外'是否有一个首选项? – Nanne 2011-03-25 21:59:29

+0

谢谢,这很好。转换为答案,我可以接受。 – fredley 2011-03-25 22:02:01

回答

1

您应该使用+指示字必须存在,或使用"来表示一个完整的frase

检查布尔mode manual

我想这会工作

...MATCH (name) AGAINST ('"tom anderson"*' IN BOOLEAN MODE)...