Mysql SQL匹配/匹配词序
在使用SQL的匹配/对照功能的查询中,词序何时计算 假设我正在寻找一个名叫Resembles Palwinder Singh的人,使用以下代码: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(在我的数据库中是唯一的)相关的信息(这是预期的结果) 但
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子句。因为我不确定用户是否以正确的格式输入了名称。此代码用于导入用户已填写但没有任何要填写的指南的统计表。有些人输入名字、姓氏、其他人的姓氏、姓氏,有些人用姓氏的首字母写名字,还有一些人用姓氏的首字母写名字(不一定按那个顺序!)实际上我将使用的所有工作表都会有这个问题,因此,我试图通过根据用户输入的内容进行搜索来处理它。如果搜索返回一个结果,我将假设用户希望引用该人,否则系统将返回一个错误并允许用户从列表中进行选择。为此,我认为+运算符足以检测两个单词?