【问题标题】:Detect place/location name in a given string检测给定字符串中的地点/位置名称
【发布时间】:2015-08-10 14:04:55
【问题描述】:

我是一名 PHP 开发人员,我希望在我的应用程序上实现一个搜索功能,该功能结合了关键字搜索和位置搜索,例如:

“约克的管道工”、“伯明翰的电工”或“NE63 的园丁”

所以,搜索字符串的结构是:

"Electricians in Birmingham"
 |__________|    |________|
       |              |
    Keywords      Location

我基本上需要做的是提取关键字和位置,其中位置可以是地名或部分邮政编码。

我的问题是我如何真正知道哪个字符串是位置(假设停用词“in”可能会丢失)。

我可以利用作为 Google 地图 API 一部分的地名检测库吗?

我计划使用的技术堆栈是:

  • PHP
  • 弹性搜索
  • 谷歌地图 API

【问题讨论】:

  • 假设像“pilotcarpenter”这样的搜索,这两个词可能是位置或关键字,您如何区分它们?
  • 您不能创建 2 个单独的输入吗?一个用于关键字,一个用于位置,然后在您的请求中合并两者?

标签: javascript php google-maps-api-3


【解决方案1】:

我可能来晚了,但想为此付出我的两分钱。 我最近在尝试对我的平台进行搜索时遇到了这个问题。我使用google geocoding API(详细here)来实现同样的事情。

优点:

  1. 您可以提供任何包含位置的搜索字符串,它会为您提供位置

缺点:

  1. 对搜索速度产生不利影响:在最坏的情况下,我发现响应增加搜索时间大约需要一秒钟(出于这个原因,我实际上打算远离这个)
  2. 有时即使没有位置,它也会检测到位置,从而导致错误结果

【讨论】:

    【解决方案2】:

    您可以使用来自 Ordnance Survey 的 Code Point Open 或 Open Names 之类的内容来创建英国邮政编码、城市、城镇、村庄、县的列表。然后在搜索字符串中从该列表中查找短语。

    但请注意,有超过 3,000 postcode districts(第一部分)和超过 175 万个完整邮政编码,然后有数千个不是唯一的定居点(St Neots、Denton、Hatfield),一些城镇名称也是有点模棱两可(March、Battle、Fleet)而且不是明显的专有名词。

    如果您拥有强大的搜索技术,您当然可以这样做。但是,调整 UI 以包含一个单独的位置字段可能更简单,可以是基于半径的邮政编码,也可以是地区到县到城镇的层次结构等。

    【讨论】:

      猜你喜欢
      • 2013-08-27
      • 1970-01-01
      • 2019-09-09
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多