gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 23:17:27 26 4
gpt4 key购买 nike

我们公司正在使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com