- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们公司正在使用 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/
我们公司正在使用 AWS CloudSearch 来搜索和检索用户数据。用户数据由类型为 lat,lon 的字段position 组成。所以对于给定的半径和位置,我们应该找到半径范围内的所有用户。如何
在 C# 中存储地理定位数据时使用什么数据类型最好?我会使用十进制是为了它的准确性,但十进制 float 的运算比二进制 float ( double )慢。 我读到,大多数时候您不需要超过 6 或
我正在尝试确定需要存储纬度和经度属性的 Realm 对象模式的最佳选择是什么。 根据我的理解,理想的数据类型(如果我使用的是 swift 之类的东西)将是精度为 6 的带符号数字数据类型。 似乎无法从
我是一名优秀的程序员,十分优秀!