我正在寻找有关在城市/州/邮政编码/国家/地区的多种组合中解析用户输入的建议。
一个常见的例子是谷歌地图所做的。
输入的一些示例是:
- “城市、州、国家”
- “城市,国家”
- “城市,邮政编码,国家”
- “城市,州,邮政编码”
- “邮政编码”
什么是解析用户输入的有效且正确的方法?
如果您知道任何示例实现,请分享:)
我正在寻找有关在城市/州/邮政编码/国家/地区的多种组合中解析用户输入的建议。
一个常见的例子是谷歌地图所做的。
输入的一些示例是:
什么是解析用户输入的有效且正确的方法?
如果您知道任何示例实现,请分享:)
第一步是使用空格或逗号作为分隔符将文本分解为单独的标记。为了可扩展性,您可以将每个令牌交给线程或服务器(如果使用类似 Map-Reducer 的架构)来确定每个令牌是什么。例如,
获得单独的令牌结果后,您可以将这些部分重新粘合在一起以获得完整地址。在有问题的情况下,您可以提示用户他们真正的意思(如谷歌地图)并将该信息添加到学习列表中。
假设您不尝试构建地图系统,将这种支持添加到应用程序的最简单方法是查询 Google 或 Yahoo 并要求他们为您解析日期。
我找到了一个简单的 PHP 实现
雅虎似乎有一个提供功能的网络服务(有点)
Openstreetmap 似乎在其主页上提供了相同的搜索功能
我自己对 Google 如何处理这个问题非常着迷。我不记得在其他任何地方看到过类似的东西。
我相信,您尝试用各种分隔符分隔输入字符串 - 空格、逗号、分号等。然后您有几种组合。对于每个组合,您将每个单词与国家、城市、城镇、邮政编码数据库进行匹配。然后,您定义一些关于如何评估每个组合的组匹配结果的指标。这里也应该是交叉规则,比如如果邮政编码匹配得不好,但国家、城市、城镇匹配得很好,并且结合起来引用一个有效的地址,那么这个指标就会产生一个高分。
这肯定很困难,而不是晚上的代码练习。它还需要强大的计算资源——共享主机可能会在 10 个请求下破解,但数据中心可以很好地服务它。
不确定是否有示例实现。许多地理服务是有偿提供的。像谷歌地图这样复杂的东西可能会花费一大笔钱。
如我错了请纠正我。
假设您只处理这四个字段(City Zip State Country),那么除 City 之外的所有字段都有有限值,即使如此,我猜如果您有一个大城市列表也是有限的。所以只需用逗号分割每个字段,然后检查每个字段列表。
假设我们在谈论美国地址-
就效率而言,首先检查一些“标准”格式可能是有意义的,就像 Dan 建议的那样。