SQL匹配/对词序



在使用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' 

相关内容

  • 没有找到相关文章

最新更新