我有一份50万个账户的名单,每个账户都有一个地址。
我需要做的是清理地址,这样我就可以找出哪些帐户属于同一个地址。我知道会有一些错误,但我需要尽我所能。
有没有一个服务我可以使用,它可以验证地址或格式的地址到一个标准格式?
例如
RD->ROAD
ST->Street
STE->SUITE
.....
....
我不知道所有的组合。我可以运行一个脚本来更新地址吗?
我知道我可以使用MySQL
REPLACE()
函数将RD替换为ROAD,但是如果steet名称本身与单词“RD”联系会导致问题怎么办?如果我要做一个替换,它必须是一个单词替换,而不是一个标准字符串替换。我可以编写一个PHP脚本来更新地址(如下所示)
但我需要知道所有可能的组合。
解决这个问题的最佳方法是什么?
我怎样才能找到我需要检查的所有/大部分组合?
<?php
$arr = explode(" ", $row['address']);
$clean = array();
foreach($arr AS $key=>$val){
if($val == 'RD')
$new = 'ROAD';
else if ($val == 'STE')
$new = 'SUITE';
else
$new = $val;
$clean[] = $new;
}
?>
最佳答案
这真的很难(相信我,我知道——我在SmartyStreets已经写了很多年这样的脚本了)。当整个地址是一个字符串时就更难了。您需要的是一个支持自由格式解析的地址验证服务。(SmartyStreets可以。)
Google Maps API的服务条款禁止将其用于海量数据,或出于临时缓存以外的原因存储结果。此外,它不验证地址——地址可能无效,并且仍然返回带有该API的地理代码。
你可以做你自己的研究,找到一个满足你需要的服务。我有偏见,但我相信SmartyStreets能最经济地满足你的需要。该API是由SLA保证的,它易于使用(只需发出最多100个地址的POST请求),并且您可以根据需要存储数据(尽管您可能应该每90-120天检查一次数据更新,这取决于您需要的地址有多严格)。
通过CASS认证的服务还可以将地址标准化为适当的格式,这样就可以轻松地消除重复数据(即合并表示不同的相同地址)。
关于php - 如何使用PHP和/或MySQL清理美国地址格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26762911/