0

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

我不明白为什么结果不同?我怎样才能让查询对词序漠不关心?

4

2 回答 2

0

您应该在关键字之间使用空格,例如

AGAINST('+Singh +Palwinder' IN BOOLEAN MODE)

我认为当我们使用“+Singh+Palwinder”时,它会搜索具有“Singh+Palwinder”之类的字符串的字段。但是当我们使用“+Singh +Palwinder”时,会在指定字段中同时搜索“Singh”和“Palwinder”。

于 2014-03-16T17:03:47.727 回答
0

你为什么不简单地做一些类似...

SELECT id
       ,name
       ,surname 
FROM person 
WHERE name = 'Palwinder'
AND   surname = 'Singh' 
于 2014-03-15T22:00:18.377 回答