javascript - AWS CloudSearch 中纬度、经度的基于半径的搜索

标签 javascript node.js amazon-web-services geospatial amazon-cloudsearch

我们公司正在使用 AWS CloudSearch 来搜索和检索用户数据。用户数据由类型为 lat,lon 的字段position 组成。所以对于给定的半径和位置,我们应该找到半径范围内的所有用户。如何编写搜索查询来检索所需数据?
我们使用 node.js 作为服务器端语言。
请帮忙。

最佳答案

在云搜索中,无法在半径内搜索 Latlons。您可以按距离排序,但您可以在半径范围内搜索。

因为你想要一个半径内的所有结果。相反,创建一个矩形,使其四个边接触您要在其中搜索的圆。现在,您可以在边界框矩形内搜索并返回按距离排序的结果。

缺点是会有一些结果在bounding box的 Angular 上,所以它们不在圆圈内,但会出现在cloudsearch结果中。您可以使用这些以及近似值或根据距离进一步过滤。

这是一个执行相同操作的示例查询: q=user*&fq=location%3A%5B%2740.628611,-100.694152%27,%2725.621966,-66.686706%27%5D&expr.geo=haversin%2838.958687,-77.343149,location.latitude,location.longitude%29&sort=geo% 20asc

在这里: fq=location%3A%5B%2740.628611,-100.694152%27,%2725.621966,-66.686706%27%5D ---> 在边界框 Latlons 内搜索,即左上角和右下角。

expr.geo=haversin%2838.958687,-77.343149,location.latitude,location.longitude%29&sort=geo%20asc ---> 创建一个表达式,计算搜索文档中的 LatLon 与固定点之间的距离(将其作为你的圈子的中心)。并返回按距离排序的结果。

请注意,“haversin”距离函数将 LatLons 之间的距离计算为完美球体上两点之间的距离。

关于javascript - AWS CloudSearch 中纬度、经度的基于半径的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30838423/

相关文章:

amazon-web-services - AWS S3 自动将对象键名称规范化为小写

javascript - 具有静态控制的 SAPUI5 聚合绑定(bind)

javascript - 立即更改语言环境不会相应地刷新 vuejs 组件

javascript - 通过 mongo 聚合管道使用 $match 两次

node.js - 推荐用于 Node-RED 的 .gitignore

amazon-web-services - 如何停止 Amazon EC2 计费?

sql-server - Amazon AWS RDS 上的数据库 'master' 中的 CREATE TABLE 权限被拒绝

javascript - 我可以在 highcharts 时间序列中着色点吗?

javascript - 使用 AnalyserNode 进行频率截止

javascript - NodeJS 在同一文件夹中找不到模块