Neo4j 中的地理位置距离查询

Posted

技术标签:

【中文标题】Neo4j 中的地理位置距离查询【英文标题】:Geolocation distance queries in Neo4j 【发布时间】:2015-12-14 19:21:25 【问题描述】:

我在 Neo4j 中查看地理定位查询,但我认为没有像 Elasticsearch 那样的内置支持。我见过neo4j-contrib spatial,但我可以看到它高度基于Java,而我将从.NET 与Neo4j 交谈。似乎有一个服务器插件,但我不确定,因为我无法找到任何样本。

所以,我更倾向于通过Mathematical functions 自己编写地理位置查询,但我不确定大容量数据集的性能如何。

在 Neo4j 中处理此类查询的首选方法是什么?例如,回答以下问题:

谁是我的朋友,他们喜欢和我一样的产品,并且住在我方圆 10 公里内?

【问题讨论】:

【参考方案1】:

安装后,空间扩展包含一个可以从 Cypher 引用的索引提供程序。所以你的问题可以用这样的查询来回答:

START n=node:geom('withinDistance:[46.9163, -114.0905, 10.0]')
MATCH (me:Person name: "Bob")-[:FRIENDS_WITH]-(n)
MATCH (n)-[:LIKED]->(p:Product)<-[:LIKED]-(me)
RETURN n

here 和 here 上有一系列很好的博文。

【讨论】:

以上是关于Neo4j 中的地理位置距离查询的主要内容,如果未能解决你的问题,请参考以下文章

使用地理距离扩展 SQL 查询

检查geoFence中的地理点和Java中的距离

MongoDB中的地理位置查询

neo4j:如何更改数据库存储位置?

怎么查两个地点之间的城市

新的“Cloud Firestore”是不是能够基于位置距离进行查询?