Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL匹配/匹配词序_Mysql_Match Against - Fatal编程技术网

Mysql SQL匹配/匹配词序

Mysql SQL匹配/匹配词序,mysql,match-against,Mysql,Match Against,在使用SQL的匹配/对照功能的查询中,词序何时计算 假设我正在寻找一个名叫Resembles Palwinder Singh的人,使用以下代码: SELECT DISTINCT id,name,surname FROM person WHERE MATCH(name,surname) AGAINST('+Palwinder+Singh' IN BOOLEAN MODE) 这段代码正确地返回与palvinder Singh(在我的数据库中是唯一的)相关的信息(这是预期的结果) 但

在使用SQL的匹配/对照功能的查询中,词序何时计算

假设我正在寻找一个名叫Resembles Palwinder Singh的人,使用以下代码:

  SELECT DISTINCT id,name,surname FROM person 
  WHERE MATCH(name,surname) 
  AGAINST('+Palwinder+Singh' IN BOOLEAN MODE)
这段代码正确地返回与palvinder Singh(在我的数据库中是唯一的)相关的信息(这是预期的结果)

但是,如果我使用以下代码:

  SELECT DISTINCT id,name,surname FROM person 
  WHERE MATCH(name,surname) 
  AGAINST('+Singh+Palwinder' IN BOOLEAN MODE)
我得到了一份所有姓“辛格”的球员名单(总共22人),似乎忽略了我正在寻找帕文德·辛格这一事实


我不明白为什么结果不同?我怎样才能让查询不受词序的影响呢?

你为什么不干脆做一些像

SELECT id
       ,name
       ,surname 
FROM person 
WHERE name = 'Palwinder'
AND   surname = 'Singh' 

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

AGAINST('+Singh +Palwinder' IN BOOLEAN MODE)
我认为当我们使用“+Singh+Palwinder”时,它会搜索具有类似“Singh+Palwinder”字符串的字段。
但是,当我们使用“+Singh+Palwinder”时,会在指定字段中同时搜索“Singh”和“Palwinder”。

这是否真的是SQL SERVER从未听说过MATCH-About子句。因为我不确定用户是否以正确的格式输入了名称。此代码用于导入用户已填写但没有任何要填写的指南的统计表。有些人输入名字、姓氏、其他人的姓氏、姓氏,有些人用姓氏的首字母写名字,还有一些人用姓氏的首字母写名字(不一定按那个顺序!)实际上我将使用的所有工作表都会有这个问题,因此,我试图通过根据用户输入的内容进行搜索来处理它。如果搜索返回一个结果,我将假设用户希望引用该人,否则系统将返回一个错误并允许用户从列表中进行选择。为此,我认为+运算符足以检测两个单词?