Neo4j建模-按距离排序的节点
我在PHP中使用Neo4j。 在我的项目中,我有餐厅节点。每个节点都有纬度、经度和分类属性 我需要返回匹配用户给定分类法的餐厅节点,其结果按距离用户位置(即第一个最近的餐厅)的距离排序 最简单的解决方案是什么Neo4j建模-按距离排序的节点,neo4j,cypher,Neo4j,Cypher,我在PHP中使用Neo4j。 在我的项目中,我有餐厅节点。每个节点都有纬度、经度和分类属性 我需要返回匹配用户给定分类法的餐厅节点,其结果按距离用户位置(即第一个最近的餐厅)的距离排序 最简单的解决方案是什么 我曾经在MongoDB和Elasticsearch上工作过,使用特殊索引很容易实现。但是我在Neo4j中找不到一个简单的方法。具有距离查询功能(以及许多其他功能),并且还关心排序。有两种解决方案: 使用neo4j spatial插件: 用Cypher中的haversin计算距离: 在3.
我曾经在MongoDB和Elasticsearch上工作过,使用特殊索引很容易实现。但是我在Neo4j中找不到一个简单的方法。具有距离查询功能(以及许多其他功能),并且还关心排序。有两种解决方案:
- 使用neo4j spatial插件:
- 用Cypher中的
计算距离:haversin
- 在3.0Mx中,应该有点和距离的基本密码功能:(我没有测试过)
distance()
函数
请参见此图表:
因此,如果您找到并匹配您的餐厅,您可以按距离订购:
MATCH (a:Location), (b:Restaurant)
WHERE ... filtering ...
RETURN b
ORDER BY distance(point(a),point(b))
Max de Marzi也有一篇关于如何使用Neo4j Spatial进行推荐(包括距离)的不错的博客文章:感谢您提供的要点链接!