Neo4j建模 - 按距离排序节点

时间:2016-02-11 14:45:49

标签: neo4j cypher

我正在使用Neo4j和PHP。 在我的项目中,我有餐厅节点。每个节点都有纬度,经度和分类属性。

我需要将符合用户给定分类的餐厅节点返回到与用户所在位置(即第一家最近的餐厅)的距离排序的结果。

最简单的解决方案是什么?

我曾经使用过Mongo DB和Elasticsearch,使用特殊的索引很容易实现。但我无法在Neo4j中找到一种直截了当的方式。

3 个答案:

答案 0 :(得分:2)

有几种解决方案:

答案 1 :(得分:2)

除了前面提到的Neo4j-Spatial,在Neo4j 3.0中还有一个内置的MATCH (a:Location), (b:Restaurant) WHERE ... filtering ... RETURN b ORDER BY distance(point(a),point(b)) 功能。

见GraphGist:

http://jexp.github.io/graphgist/idx?dropbox-14493611%2Fcypher_spatial.adoc

因此,如果您以某种方式找到并匹配您的餐馆,您可以按距离订购它们:

from dir.my_module import my_class    
reload(dir.my_module)

答案 2 :(得分:1)

Neo4j Spatial包含距离查询(包括许多其他内容),也关注订购。