Mysql 用于在firstName和lastName列中搜索所有类似记录的Sql查询
我正致力于在MYSQL中构建一个查询,通过该查询,我可以搜索表中的firstName和lastName列,这些列可以返回几乎匹配它的所有记录 就像我想搜索一个名字,比如说,Aditya Kumar Sharma,我的表包含如下内容:Mysql 用于在firstName和lastName列中搜索所有类似记录的Sql查询,mysql,sql,Mysql,Sql,我正致力于在MYSQL中构建一个查询,通过该查询,我可以搜索表中的firstName和lastName列,这些列可以返回几乎匹配它的所有记录 就像我想搜索一个名字,比如说,Aditya Kumar Sharma,我的表包含如下内容: ID firstName lastName 1 Jack Mathews 2 Aditya Singh 3 James Hopes 4 Aditya
ID firstName lastName
1 Jack Mathews
2 Aditya Singh
3 James Hopes
4 Aditya Kumar Sharma
5 Adityahappy Singh
SELECT *,MATCH(fullNameIndex) AGAINST ('search term') AS relevance
FROM `table`
ORDER BY relevance DESC
现在,我希望在firstName和lastName列中包含以下任何一个Aditya或Kumar或Sharma的所有记录,这意味着我的结果集中需要以下记录:
ID firstName lastName
2 Aditya Singh
4 Aditya Kumar Sharma
5 Adityahappy Singh
谁能给我一些线索,如何完成它。如果最匹配的记录出现在顶部,那将更令人高兴,即:
ID firstName lastName
4 Aditya Kumar Sharma
位于resultset之上,因为它与查询字符串完全匹配
编辑:我在数据库中使用InnoDB引擎,所以全文不必再重复了,有没有其他方法,或者我被迫切换我的DB引擎?你应该试试MySQL,它会对你有所帮助。如果在firstName和lastName上添加全文索引,则可以按如下方式对其进行查询:
ID firstName lastName
1 Jack Mathews
2 Aditya Singh
3 James Hopes
4 Aditya Kumar Sharma
5 Adityahappy Singh
SELECT *,MATCH(fullNameIndex) AGAINST ('search term') AS relevance
FROM `table`
ORDER BY relevance DESC
它甚至应该首先为您提供最佳匹配。字符串函数
SOUNDEX
将字符串转换为声音代码(可用于生成口语)
示例:
mysql> select soundex('text'), soundex('test');
+-----------------+-----------------+
| soundex('text') | soundex('test') |
+-----------------+-----------------+
| T230 | T230 |
+-----------------+-----------------+
您可以使用此函数的结果来比较字符串我认为
全文
搜索将起作用
SELECT *,
MATCH ( `FirstName`, `Lastname`)
AGAINST ('+name +middle_name +lastname' IN BOOLEAN MODE) as `rel`
FROM `table`
WHERE MATCH ( `FirstName`, `Lastname`)
AGAINST ('+name +middle_name +lastname' IN BOOLEAN MODE)
ORDER BY `rel` DESC
当我在一个大数据文件中识别出相似的地址时,我使用它非常有效。我们还将其用于匹配名称,并获得了非常好的结果。您必须使用内置的MySQL全文搜索功能。 有关示例的解释,请参见。 尝试此查询 如果您使用的是MyISAM引擎
SELECT *FROM Emps
WHERE MATCH(firstName,lastName) AGAINST ('Aditya Kumar Sharma' IN BOOLEAN MODE)
对于Innodb,您必须花一些时间研究这些专家解决方案。
Plz浏览将对您有所帮助。但我使用的是InnoDB引擎而不是MyISAM,据我所知,全文在InnoDB上不起作用,还有其他方法吗?Plz浏览我在更新答案中发布的链接将对您有所帮助。感谢链接,他们确实非常有帮助。他希望所有的记录包含这些阿迪亚或库马尔或夏尔马在FrimtNew和ListNeNeTrimes列中,你是意味着我们需要考虑或条件这里不'和'。