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 cypher查询查找我周围最近的用户_Neo4j - Fatal编程技术网

使用neo4j cypher查询查找我周围最近的用户

使用neo4j cypher查询查找我周围最近的用户,neo4j,Neo4j,我使用下面的查询创建具有lat、lng的用户 MERGE (n { user:'a', id:1,lat:40.736184,lng:-73.992006 }) MERGE (n { user:'b', id:2,lat:40.748475,lng:-73.993808 }) MERGE (n { user:'c', id:3,lat:40.744638,lng:-73.982135 }) MERGE (n { user:'d', id:4,lat:40.708929,lng:-74.0

我使用下面的查询创建具有lat、lng的用户

MERGE (n { user:'a', id:1,lat:40.736184,lng:-73.992006 })   
MERGE (n { user:'b', id:2,lat:40.748475,lng:-73.993808 })
MERGE (n { user:'c', id:3,lat:40.744638,lng:-73.982135 }) 
MERGE (n { user:'d', id:4,lat:40.708929,lng:-74.005567 }) 
MERGE (n { user:'e', id:5,lat:40.729615,lng:-73.975698 })  
如何让
40.724152,-74.001276
周围
1km
半径范围内的所有用户?
非常感谢您的帮助。

以下是neo4j spatial插件的链接:

我以前没有使用过它,但大多数指令都是在嵌入式模式下使用的。但是如果您在服务器模式下使用它,这里有一个指向预编译插件的链接:

您可以在Cypher中执行以下操作:

ABS(user1.lat - user2.lat) < LAT_NUMBER AND ABS(user1.long - user2.long) < LONG_NUMBER
ABS(user1.lat-user2.lat)
当然,这是一个正方形。此外,纬度数和经度数必须是近似值,因为一公里在每一公里上的纬度/经度比并不相同(请参阅)

你也可以使用很好的“ol-Pythagoras”定理,虽然我没有看到用密码计算平方数的方法。同样,你会得到一个斜边,它是纬度和经度的混合

(编辑:请参见Michael的评论,特别是指向文档的链接,其中包含您可以使用的密码示例)


spatial插件应提供最准确和可预测的结果。

您可能需要查看neo4j spatial插件,该插件将立即完成操作。或者使用数学函数(参考google first)我如何在neo4j中使用公式?我如何安装spatial插件?你应该为你的节点使用一个标签,并在标签(id)上创建一个约束:我这么做了Michael。我应该安装spatial插件还是预安装?我如何将此sql查询转换为neo4j查询?选择id,(3959*acos(弧度(37))*cos(弧度(纬度))*cos(radians(lng)-radians(-122))+sin(radians(37))*sin(radians(lat)))作为距离小于25的标记的距离,距离限制为0,20;'cypher中也有haversin函数用于此目的:太棒了,谢谢你,Michael!