如何使用 Algolia 按距离对记录进行排序?

How to sort records by distance using Algolia?

使用 Algolia 搜索,我尝试按距离对我的记录进行排序,而不是按半径过滤它们,但我没有这样做。我可以通过在查询中设置 aroundLatLngaroundRadius 来成功地按半径进行过滤。但记录未在结果中排​​序。根据this part of Algolia's documentation, a ranking is created based on the distance from the central point. So, records must be sorted by distance if there aren't any sorting in the query. According to this,要按距离排序而不过滤,需要将aroundRadius设置为"all"。我试过将 aroundRadius 设置为 "all" 但它没有改变任何东西。

同样在文档的 this 部分中,声明地理标准必须出现在排名公式中才能按距离排序,我确认它存在。那么这里可能是什么问题呢?任何帮助,将不胜感激。请注意,每个记录中都有位置信息,关键字为 "_geoloc".

如果 aroundLatLng 的过滤按预期工作,那么可以安全地假设您已为您的记录适当填充了 _geoloc 数据。

既然你想按地理邻近度排序,这听起来像是一个排名问题。

我不熟悉将 aroundRadius 设置为 "all" -- 引擎将需要一个 lat/long 来比较排名的距离,因此您需要一组特定的搜索坐标(这就是地理排名不适用于区域搜索的原因 insideBoundingBox)。

如果您在 aroundLatLng 中提供特定坐标,但仍未获得您期望的地理排名(并且您已确认 geo 是排名标准)- 是否可能是默认值10 米的精度不适用于您的数据集?也许 tweaking the precision 会有所帮助?

如果 sort/ranking 配置和地理精度不是问题,我建议您将 getRankingInfo=true 添加到您的查询中。这将 return 根据每条记录评估的所有排名标准 -- 您可以确认该索引已将 _geoloc 考虑在内。

如果 none 这有帮助 - 也许将您的索引配置和您正在执行的查询交给我,以便我可以进一步挖掘。

https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/how-to/geo-ranking-info/

问题是默认的排名标准不存在。在我的索引的排名和排序部分,我已将设置重置为默认值,并且出现了默认排名标准。在那之后,我已经能够按距离对记录进行排序。下面的屏幕截图显示了将设置重置为默认值后的排名和排序部分。