SQL MATCH / AGAINST单词顺序

时间:2014-03-15 20:13:37

标签: mysql match-against

使用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的事实。

我不明白为什么结果有所不同?如何让查询对单词顺序无动于衷?

2 个答案:

答案 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'。