首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在可能有排字的MySQL数据库中搜索名称

在可能有排字的MySQL数据库中搜索名称
EN

Stack Overflow用户
提问于 2011-05-31 04:08:07
回答 3查看 1.5K关注 0票数 4

我目前正在编写一个脚本,任务是查看数以万计的帐户信息,清理错误的地址,以及打印关于地址如何被清除的报告。目前,最大的不洁地址来源是错误的街道名称(令人惊讶的是,你能拼写一个街道名称的方式有多少种)。无论如何,目前我的脚本获取输入街道名,并执行一系列针对挪威语言的编辑(v.变成vegengt.变成gata等等)。并在大约200万行地址数据库中搜索街道名称。如果找不到匹配,它就会将街道名称的后半部分分割开来,用通配符替换它。它尝试了通配符搜索的不同变体。

总之,我的问题是:

MySQL是否包括任何能让我更轻松的东西?我记得在MySQL中提到了一个“搜索”函数,它可以在列中找到最匹配的字符或什么的单元格。在我的外卡搜索失败的情况下,这将是一个很好的工具。

任何有助于查找与错误地址匹配的内容都将是很棒的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-31 04:11:40

一个选择可能是尝试使用SOUNDEX让你接近你想要的东西。SOUNDEX将使匹配的发音,所以它可能会让你更近,如果人们是错误的根据拼音拼法的街道名称。

您还可以尝试Levenshtein距离算法。这可能与你正在寻找的东西有着更紧密的联系。基本上看一个词离另一个单词有多近。它可以用于拼写检查等,并且在查找地址字段中的不良数据时可能很有用。这里有一个链接:

http://www.merriampark.com/ld.htm

如果您希望函数在MySQL中使用Levenshtein距离算法,您可以在这里查看一个示例:

http://www.artfulsoftware.com/infotree/queries.php#552

票数 2
EN

Stack Overflow用户

发布于 2011-05-31 04:12:28

您可能需要使用FULLTEXT索引和模糊MATCH ... AGAINST查询。请记住,默认情况下,索引中不包含小于4个字母的单词。

票数 2
EN

Stack Overflow用户

发布于 2011-05-31 04:22:30

这是更多的工作,但是:

  • 使用字段创建一个表words
代码语言:javascript
运行
复制
- word
- num\_appeared

  • 以及wordsaddresses之间的枢轴表
代码语言:javascript
运行
复制
- address\_id
- word\_id

遍历 address 表,将地址按单词拆分,然后在 word 表中插入每个单词,并在pivot表中创建记录。当你做完,排序的单词表由num_appeared ASC和那里-你有最大的机会被错误键入的单词。然后,您可以创建一个脚本,在这些单词之后搜索google,而google提出的建议可能是该单词的正确形式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6182915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档