1

我想找到一种方法来获取一段用户提供的文本,并确定文本中提到了地图上的哪些地址。我很乐意使用免费的网络服务(如果存在)或使用不会消耗太多资源的脚本。

我可以想象的一种方法是获取一个巨大的寻址数据库,并在文本中单独搜索它们中的每一个,但这似乎效率不高。有没有更好的算法或技术可以建议?

我的基本想法是获取位置信息并将其转换为谷歌地图上的标记。如果自动确定位置太困难或 CPU 密集型,我可以要求用户在必要时在位置字段中添加信息,但我不希望这样做,因为一些用户将是相当年轻的学生。

这需要在 PHP 中完成,因为这是我学校托管服务器上可用的脚本语言。

请注意,整个设置将在 Drupal 节点的上下文中进行,我计划使用过滤器从单个节点收集必要的位置信息,因此这种解析只会发生一次(当新文本进入数据库时​​) .

4

3 回答 3

2

你可以得到像opencalais这样的东西来标记你的文本。它返回的类别之一是“城市”,您可以使用另一个第三方模块来显示城市的位置。

于 2009-11-03T06:28:31.867 回答
1

如果您在关系数据库中确实有一个巨大的位置列表,并且您只关心 500 到 1000 个单词,那么您绝对可以通过 SQL 命令来查找 500-1000 个单词的匹配项,这将非常有效.

但即使你确实需要调用一个慢速的 API,你也可以一个一个地请求 500 字。如果您保留匹配项的缓存,那么缓存可能会很快填满所有停用词(您知道,例如“the”、“if”、“and”),然后使用缓存,很可能你每次搜索的单词少于 500 个。

我想你可能会对蛮力方法的工作速度感到惊讶。

于 2009-11-03T04:24:24.583 回答
0

为了将来参考,我只想提一下名为 Placemaker 的 Yahoo API和基于它构建的服务GeoMaker 。

这些工具可用于从此处请求的文本中解析出位置。不幸的是,现在似乎不存在 Drupal 模块 - 但自定义解决方案似乎很容易编码。

于 2009-11-03T08:24:02.990 回答