首页 > 解决方案 > HERE 自动完成 API:非常不准确的结果,忽略门牌号码

问题描述

使用 HERE 自动完成 API 获得非常不准确的结果。

示例:在美国搜索“2215 E 2”,并设置邻近纬度/经度,距离位​​置仅几个街区:

http://autocomplete.geocoder.api.here.com/6.2/suggest.json?query=2215+e+2&maxresults=50&country=USA&language=en&prox=40.593791,-73.961245&resultType=houseNumber

返回的结果甚至没有“2215”作为门牌号码,甚至没有“2215 E 2”的部分字符串匹配 - 以下是一些错误返回结果的示例:

"United States, NY, Brooklyn, 2002 E 2nd St"
"United States, NY, Brooklyn, 2003 E 21st St"
"United States, NY, Brooklyn, 2001 E 22nd St"
"United States, NY, Brooklyn, 2001 E 13th St"
"United States, NY, Brooklyn, 2002 E 8th St"
"United States, NY, Brooklyn, 2001 E 19th St"

看起来 HERE API 在很多情况下完全忽略了门牌号码。但由于某种原因,在使用 HERE 移动应用程序搜索相同内容时,我得到了正确的结果。因此,必须使用 API 文档中未列出的其他内容。

从逻辑上讲,API 应该首先返回完全匹配的字符串,然后返回部分/模糊结果。

查询字符串中是否需要使用其他搜索运算符?

如何在 HERE 应用程序中的部分地址上获得精确的字符串匹配?

标签: autocompletehere-api

解决方案


即使是单个字母,自动完成 api 也会尝试获取匹配项。由于您在请求中提供了 prox 参数,因此您明确告诉 api 更接近它的结果对您来说更重要。这就是为什么返回的结果是根据与您的代理的距离排序的。您可以看到响应中显示的距离。删除代理将根据最相关的匹配对结果进行排序。

prox - 一种空间过滤器。将焦点设置在由单个地理坐标对和可选半径(以米为单位)表示的地理区域上,因此该区域内的结果比该区域外的结果更重要。

更新:尝试为您的用例使用 mapview 以获得您需要的结果。developer.here.com/documentation/geocoder-autocomplete/topics/using-autocomplete.html 中也建议使用它。

http://autocomplete.geocoder.api.here.com/6.2/suggest.json?query=2215+e+2&maxresults=50&country=USA&language=en&mapview=40.593791,-73.961245,;45.2173875,-73.961245,&resultType=houseNumber&beginHighlight=%3Cb%3E&endHighlight=%3C/b%3E

推荐阅读