用户输入解析 - 城市/州/邮政编码/国家(User input parsing - city /

2019-07-29 12:05发布

我在寻找的建议来自于市/州/邮政编码/国家的多种组合用户解析输入。

一个常见的例子是什么谷歌地图一样。

输入的一些例子是:

  • “市,省,国家”
  • “城市,国家”
  • “城市,邮编,国家”
  • “市,州,邮政编码”
  • “邮政编码”

什么是解析从用户这个输入一个有效的,正确的方法是什么?

如果您知道任何示例实现的,请分享:)

Answer 1:

第一步骤是拆散文成使用空格或逗号作为界定字符个人令牌。 对于可扩展性,可以再手中的每个令牌线程或服务器(如果使用地图,减速状结构)可以计算出每个令牌是什么。 例如,

  • 如果我们的模式有一个数字,那么它可能是一个邮政编码。
  • 在已知状态列表中的项目?
  • 国家也很容易处理这样的状态,有一个数量有限。
  • 什么顺序相比,写地址的常见方式令牌? 大多数的输入可能会遵循地址格式当地邮局定制。

一旦你的个人标记的结果,你可以胶水件返还在一起,以得到完整的地址。 在有问题的情况下,你可以促使他们真正的意思(如谷歌地图)的用户和信息添加到列表中了解到。

最简单的方法到支持添加到应用程序,假设你没有试图建立一个地图系统,是查询谷歌或雅虎,请他们解析日期为您服务。



Answer 2:

我自己很着迷与谷歌如何处理。 我不记得看到其他地方类似的事情。

我相信,你尽量分开文字尝试不同的定界符输入字符串 - 空格,逗号,分号等等,那么你有几种组合。 对于每一个组合,你把每个单词和匹配它的国家,城市,城镇,邮政编码数据库。 然后定义如何评估每个组合的组匹配的结果有些度量。 这里也应该是交叉的规​​则一样,如果邮政编码不匹配良好,但国家,城市,城镇以及匹配和组合,是指一个有效的地址,然后将指标得到高分。

这是肯定很难,而不是一个晚上代码运动。 这还需要强大的计算资源 - 一个共享的主机将在短短10请求可能产生裂纹,但数据中心可以成为很好。

不知道是否有一个示例实现。 许多地理服务都是有偿的基础上。 一些复杂的如谷歌地图可能会花一大笔钱。

如我错了请纠正我。



Answer 3:

我发现了一个简单的PHP实现

  • http://www.eotz.com/2008/07/parsing-location-string-php/

雅虎似乎有一个Web服务,它提供的功能(在某种程度上)

  • http://developer.yahoo.com/geo/placemaker/

OpenStreetMap的似乎提供了在其主页上相同的搜索功能

  • http://www.openstreetmap.org/


Answer 4:

假设你只有这四个领域的交易(市邮编州国家),也有除市各个领域的有限值,甚至说我想如果你有一个大的城市名单也是有限的。 因此,只要用逗号分割每个字段,然后核对每个字段列表。

假设我们正在谈论美国的地址 -

  • Zip是最明显的,所以检查,第一。
  • 国家有50X2选项(加利福尼亚州或加利福尼亚州),检查下一个
  • 国家有〜190x2选项,这取决于如何围绕你想成为(美国,美国,USA)。
  • 无论剩下的可能是你的城市。

至于效率推移,它可能是有意义首先检查的“标准”格式屈指可数,像丹建议。



文章来源: User input parsing - city / state / zipcode / country