1

我正在使用 Google 地理编码 API 开发地址匹配应用程序。问题是我试图验证的数据库中的一些地址类似于:

收件人: THOMAS WONG 先生 2457 Yonge St., Toronto, ON, N2S 2V5, Canada

而不是

2457 Yonge St.,多伦多,ON,N2S 2V5,加拿大

第一个字符串返回空结果(因为它以人名开头),第二个字符串将验证并返回完整正确的地址。

我的问题是:解决这个问题的正确方法是什么?我正在考虑一种仅从地址字符串中提取相关部分(具有某些功能)的方法,但也许有更好的想法?

谢谢你,先生

4

2 回答 2

1

我在 SmartyStreets 工作并编写了我们现在通过 LiveAddress API提供的地址提取器。这个很难(硬。您需要强迫自己不要做出很多假设,包括“如果地址以数字开头”。(对不起 DwB——有很多事情要考虑。)

如果您有美国地址,您可能仍然会发现我们的工具很有用(在某种程度上,它是免费注册和使用的)。这是另一个关于提取实用程序的 Stack Overflow 帖子:https ://stackoverflow.com/a/16448034/1048862

做到这一点的最好方法是使用地址验证服务——一种可以验证交货点而不仅仅是地址范围的服务(这是最常见的,所以当它真的只是在某些范围内猜测时,要警惕声称“地址验证”界)。

请注意,Google 不会验证地址。它可能会将它们标准化,并会在地址存在时返回结果,如果它是真实的,如果它实际上是有效的,那么这是你的幸运日。

于 2013-06-13T18:49:14.130 回答
1

如果地址的所需部分始终以数字开头,请尝试以下操作:

  1. 找到字符串中的第一个数字。
  2. 获取从第一个数字到字符串末尾的子字符串。
  3. 你现在有了地址。

为了解析地址,您需要知道所有可能的格式。

您是否需要包括:

  • 圣诞老人,北极。
  • 大不列颠女王
  • 上尉胡桃
  • Bob Goldenberry,乡村 7 号公路,明尼苏达州
  • Jackie Blam,邮政信箱 78,Hootville,OH

对于全面的地址解析解决方案,您需要为不同的地址格式提供多种算法,然后根据输入确定使用哪种算法。

于 2013-06-13T16:43:27.320 回答