代码之家  ›  专栏  ›  技术社区  ›  David Wees

使用PHP确定短文本(500到1000字)中提到的位置

  •  1
  • David Wees  · 技术社区  · 15 年前

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

    我可以想象这样做的一种方式是获取一个庞大的数据库,对文本中的每一个都进行寻址和搜索,但这似乎并不有效。有没有更好的算法或技术可以推荐?

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

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

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

    3 回复  |  直到 15 年前
        1
  •  2
  •   Jeremy French    15 年前

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

        2
  •  1
  •   Ray Hidayat    15 年前

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

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

    我想你可能会惊讶于蛮力方法的工作速度有多快。

        3
  •  0
  •   VoxPelli    15 年前

    为了将来的参考,我想提一下 Placemaker 以及服务 GeoMaker 那是建在它上面的。

    这些工具可用于根据此处的要求从文本中解析位置。不幸的是,目前似乎没有Drupal模块存在,但是定制的解决方案似乎很容易编码。