在使用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)
我得到了所有姓"Singh"的球员的名单(总共22人),似乎忽略了我正在寻找Palwinder Singh的事实。
我不明白为什么结果不同?我怎样才能使查询与词序无关?
关键字之间应使用空格,如
AGAINST('+Singh +Palwinder' IN BOOLEAN MODE)
我想当我们使用'+Singh+Palwinder'时,它会搜索像'Singh+Palwinder'这样的字符串字段。但是当我们使用'+Singh +Palwinder'时,在指定的字段中搜索'Singh'和'Palwinder'。
你为什么不干脆这样做呢?
SELECT id
,name
,surname
FROM person
WHERE name = 'Palwinder'
AND surname = 'Singh'