繁体   English   中英

用于搜索所有类似记录的firstName和lastName列的SQL查询

[英]Sql query for searching through firstName and lastName columns for all similar records

我正在努力在MYSQL中构建一个查询,通过它我可以搜索表中的firstName和lastName列,这些列可以返回几乎匹配它的所有记录。

就像我想搜索一个名字一样, Aditya Kumar Sharma和我的桌子包含这样的东西:

ID    firstName        lastName
1     Jack             Mathews
2     Aditya           Singh
3     James            Hopes
4     Aditya Kumar     Sharma
5     Adityahappy      Singh

现在我想要在firstName和lastName列中包含任何这些AdityaKumarSharma的所有记录,这意味着我需要在结果集中包含以下记录:

ID    firstName        lastName
2     Aditya           Singh
4     Aditya Kumar     Sharma
5     Adityahappy      Singh

任何人都可以提供一些线索,如何完成它。 如果最匹配的记录出现在顶部会更令人愉悦,那就是:

ID    firstName        lastName
4     Aditya Kumar     Sharma

来自结果集,因为它完全匹配查询字符串。

编辑:我正在为我的数据库使用InnoDB引擎,所以FullText不能解决这个问题,有没有其他方法或我被迫切换我的数据库引擎?

我认为FULLTEXT搜索会起作用

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 FULLTEXT搜索 ,它可以帮助您。 如果在firstName和lastName上添加FULLTEXT索引,则可以像这样查询它:

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            |
+-----------------+-----------------+

您可以使用此函数的结果来比较字符串

您必须使用MySQL全文搜索内置功能。 请参阅此处以获取示例说明。 试试这个查询。

如果您使用的是MyISAM Engine。

 SELECT *FROM Emps
    WHERE MATCH(firstName,lastName) AGAINST ('Aditya Kumar Sharma' IN BOOLEAN MODE) 

对于Innodb,您必须花一些时间使用其中一些专家解决方案。 Plz通过Link1 Link2将帮助您。

http://en.wikipedia.org/wiki/Levenshtein_distance

一旦识别出类似的大型数据文件中的地址,我就用它来提高效率。 我们还将其转换为匹配名称并获得了非常好的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM