使用SQL的MATCH / AGAINST功能在查询中何时对单词顺序进行计数?
假设我正在寻找一个名字以Palwinder Singh为名的人,使用以下代码:
SELECT DISTINCT id,name,surname FROM person
WHERE MATCH(name,surname)
AGAINST('+Palwinder+Singh' IN BOOLEAN MODE)
此代码正确返回与名为Palwinder Singh的人相关的信息(在我的数据库中恰好是唯一的)(这是预期的结果)
但是,如果我使用以下代码:
SELECT DISTINCT id,name,surname FROM person
WHERE MATCH(name,surname)
AGAINST('+Singh+Palwinder' IN BOOLEAN MODE)
我得到了一个名为'辛格'的所有球员的名单(总共22人),似乎无视我正在寻找Palwinder Singh的事实。
我不明白为什么结果有所不同?如何让查询对单词顺序无动于衷?
答案 0 :(得分:0)
为什么不简单地做一些像......
SELECT id
,name
,surname
FROM person
WHERE name = 'Palwinder'
AND surname = 'Singh'
答案 1 :(得分:0)
您应该在关键字之间使用空格,例如
AGAINST('+Singh +Palwinder' IN BOOLEAN MODE)
我认为当我们使用'+ Singh + Palwinder'时,它会搜索具有'Singh + Palwinder'字符串的字段。 但是当我们使用'+ Singh + Palwinder'时,在指定的字段中搜索'Singh'和'Palwinder'。