我目前正在使用Spatial进行查询,如下所示:
START b=node:LocationIndex('withinDistance:[70.67,12.998,6.0]')
RETURN b
ORDER BY b.score
B是具有分数的实体,我想按该分数排序,但是我发现一种情况,其中分数为0的所有实体均未按距离排序。我知道Spatial会按距离自动排序,但是一旦我由另一个字段强制执行该命令,便会丢失该命令。
有什么方法可以强制将此订单作为第二订单字段,例如:
START b=node:LocationIndex('withinDistance:[70.67,12.998,6.0]')
RETURN b
ORDER BY b.score, ?distance?
不幸的是,在当前的空间插件中,根本没有密码支持,因此ORDER BY无法访问距离函数(或距离结果)。
正如您已经注意到的,索引本身中的insideDistance函数将返回按距离排序的结果。如果未在密码查询中添加额外的ORDER BY,则应保持距离顺序。但是,当添加额外的ORDER BY时,原始订单将丢失。对于密码开发者来说,对ORDER BY中相对相同的元素保持原始顺序将是一个有趣的功能请求。
还有一个单独的计划来开发密码本身内的空间功能,这将以您想要的方式解决该问题。但是,有关此产品的开发或发布时间表尚无任何信息。
可以在较短的时间范围内帮助您并且独立于neo4j开发计划本身的另一种选择是通过扩展对空间索引查询添加订单。现在,您将索引查询指定为“ withinDistance:[70.67,12.998,6.0]”,但是您可以编辑空间插件代码以支持向该查询传递额外的参数,并且它们可以是按参数排序。这样您就可以完全控制订单。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句