Neo4j-特定类型的节点集中到节点的最近邻居

时间:2019-01-25 10:50:21

标签: neo4j shortest-path nearest-neighbor

我目前在Neo4j中导入了路线图,我想对其执行一些查询。有十字路口,映射为顶点,道路,映射为关系。此外,还有一些兴趣点,它们通过关系被映射到十字路口。这是一个图形示例(不是我的图片,而是我的图形看起来很相似):https://github.com/evagian/California-road-network-NEO4J-CYPHER-graph-and-queries/blob/master/images/6.png

我希望能够实现的目标是,在一个十字路口上找到每种POI类别类型(例如,餐厅,咖啡店...)中最近的邻居。我尝试使用最短路径算法(请参阅下文),但是它运行了很长时间,因此我需要对地图中的每个十字路口都这样做(我大约有50万):

MATCH (a:CROSSROAD)-[k:HAS_POI]->(o:POI {id: 10, type: "coffee_shop"})
MATCH (c:CROSSROAD)-[h:HAS_POI]->(p:POI {type: "restaurant"})
CALL algo.shortestPath(a, c, 'distance')
YIELD totalCost
RETURN p.id as POI, totalCost
ORDER BY totalCost
limit 1

是否有更好,更快的方法来做到这一点?

我想知道是否有一种方法可以通过在ROAD关系上采用最小距离直到到达特定类型的POI来穿越该节点。尽管我不确定如何用Cypher语言表达。

PS:我对Neo4j和Cypher还是陌生的,我还在学习,所以请问这是一个明显的问题。

0 个答案:

没有答案