autocomplete - 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 应用程序中的部分地址上获得精确的字符串匹配?
解决方案
即使是单个字母,自动完成 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
推荐阅读
- html - 工具提示以角度 2 悬停在选定字段上
- javascript - Electron 中的 GatsbyJS,如何解决 file:// 的问题
- java - 共享密钥时使用 Java 客户端的 SFTP
- android - 如何在 gradle 模块中声明注释处理器女巫
- ios - 以编程方式快速正确层
- php - codeigniter 文件上传检查文件大小失败并出现错误号
- android - YouTube 播放器查看缓冲视频丢失
- jquery - .append() 之后的 JQuery .addClass() 未按预期运行
- python - BeautifulSoup 在每个开始和结束标记之前和之后添加额外的空格
- c# - 不应该阅读流,结束它?