检测给定字符串中的地点/位置名称

时间:2015-08-10 14:04:55

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

我是一名PHP开发人员,我希望在我的应用程序上实现搜索功能,其中包含关键字搜索和位置搜索,例如:

" York的管道工","伯明翰的电工"或" NE63"

中的园丁

因此,搜索字符串的解剖结构为:

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

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

我遇到的问题是如何确切地知道哪个字符串是位置(假设停用词""可能会丢失)。

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

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

  • PHP
  • 弹性搜索
  • Google Maps API

2 个答案:

答案 0 :(得分:1)

我参加聚会可能为时已晚,但想为此花两美分。 我最近在尝试为我的平台实施搜索时遇到了这个问题。我使用了Google地理编码API(详细here)来实现相同的目的。

优点:

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

缺点:

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

答案 1 :(得分:0)

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

但是要警告说,有超过3,000 postcode districts(第一部分)和超过175万个完整的邮政编码,那么有数千个定居点并不是唯一的(St Neots,Denton,Hatfield),有些城镇名称是也有点暧昧(March,Battle,Fleet),而且显然不是专有名词。

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