Sorting 按斯芬克斯上道路(非地理位置)上城市之间的距离对文档进行排序
我有一个有趣的问题 鉴于:Sorting 按斯芬克斯上道路(非地理位置)上城市之间的距离对文档进行排序,sorting,sphinx,Sorting,Sphinx,我有一个有趣的问题 鉴于: “我的城市” 文件清单 城市列表以及它们之间的距离 我需要按文件与我所在城市的距离按升序排序 例如: 我在cityX 我在以下城市周围有: 城市-50、城市B-350、城市Y-10、城市YD-321 我有文档:Doc1-CityA,Doc2-CityD,Doc3-CityB,Doc4-CityX,Doc5-CityC 我需要在下一次排序中获取文档: 文件5, 文件1, 文件2, 文件3 最初我打算按如下方式解决这个问题: 创建一个分拣机 作为分拣机的if(ci
- “我的城市”
- 文件清单
- 城市列表以及它们之间的距离
- 我在cityX
- 我在以下城市周围有: 城市-50、城市B-350、城市Y-10、城市YD-321
地理搜索不适用,因为距离是在道路上使用的,而不是坐标如果您使用的是SphinxAPI(而不是SphinxQL),则建议使用
设置覆盖
方法。该方法能够处理长列表
对于SphinxQL,有REMAP()
函数
但我不知道它能应付多少价值观
最具“可伸缩性”的解决方案可能是将数据重新格式化为JSON属性,然后可以直接对其进行排序。但这可能需要大量的编码。如果城市数量较小和/或固定,您可以为当前文档到其他城市的预计算距离添加一列。然后只需选择排序时请选择正确的列。谢谢,我尝试了2.1.9版,但出现了“某些问题”,最后一个问题是“一切正常”。显然,问题出在客户端,我将进一步探讨这一点。如果有兴趣,错误是“按属性排序,而不是按基金”和“外出时未知属性名称”虽然对2.2.7的相同请求非常成功,但我今天或明天会尝试!但是这样一个时刻:该方法将值作为docId newValue。但是我不知道我需要更改哪个docId=),看起来我需要获取最大数量的文档,然后对它们进行排序?但是斯芬克斯不再需要了:)我不认为重新映射功能仅限于处理DocID。否则建议使用JSON属性解决方案。是的,重新映射是件好事。我会在现实生活中尝试。但是我需要将sphinx从2.1.9更新到edge(现在编码有问题:()您是否尝试使用sphinxAPI的重新映射(SetSelect)?我有错误选择:语法错误,意外的,,,,,接近的,2050652),(0,1,2))作为rmp1(SetSelect是:*,重新映射(cityid,sorter,(94520505052),(0,1,2))作为rmp1)。奇怪,因为重新映射(cityid,sorter,(0),(0))作为rmp1工作。