Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j建模-按距离排序的节点_Neo4j_Cypher - Fatal编程技术网

Neo4j建模-按距离排序的节点

Neo4j建模-按距离排序的节点,neo4j,cypher,Neo4j,Cypher,我在PHP中使用Neo4j。 在我的项目中,我有餐厅节点。每个节点都有纬度、经度和分类属性 我需要返回匹配用户给定分类法的餐厅节点,其结果按距离用户位置(即第一个最近的餐厅)的距离排序 最简单的解决方案是什么 我曾经在MongoDB和Elasticsearch上工作过,使用特殊索引很容易实现。但是我在Neo4j中找不到一个简单的方法。具有距离查询功能(以及许多其他功能),并且还关心排序。有两种解决方案: 使用neo4j spatial插件: 用Cypher中的haversin计算距离: 在3.

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

我需要返回匹配用户给定分类法的餐厅节点,其结果按距离用户位置(即第一个最近的餐厅)的距离排序

最简单的解决方案是什么


我曾经在MongoDB和Elasticsearch上工作过,使用特殊索引很容易实现。但是我在Neo4j中找不到一个简单的方法。

具有距离查询功能(以及许多其他功能),并且还关心排序。

有两种解决方案:

  • 使用neo4j spatial插件:

  • 用Cypher中的
    haversin
    计算距离:

  • 在3.0Mx中,应该有点和距离的基本密码功能:(我没有测试过)


除了前面提到的Neo4j Spatial,在Neo4j 3.0中还有一个内置的
distance()
函数

请参见此图表:

因此,如果您找到并匹配您的餐厅,您可以按距离订购:

MATCH (a:Location), (b:Restaurant)
WHERE ... filtering  ...
RETURN b
ORDER BY distance(point(a),point(b)) 

Max de Marzi也有一篇关于如何使用Neo4j Spatial进行推荐(包括距离)的不错的博客文章:感谢您提供的要点链接!