重新发现2个节点之间的最短路径



我是图形技术的新手。下面是我的一个样本数据,我想把它放在redis图中,找到2个点之间的最短距离。

{"入口":{"接收":152};接收":{"拐角":176,"出口":153},";"角":{"门":41,"接收":176},";门":{"电梯大厅":53,"角落":41},";LiftLobby":{"门":53}}

例如,在这个json对象中,入口和接收点之间的距离是152个单位。我应该对使用哪些重新显示查询

  1. 将数据添加到重新显示
  2. 查找两点之间的最短距离

如果我正确理解您的问题,我将在RedisGraph中对这些数据进行建模:

  • 创建具有name属性的Loc实体:Entry、Reception、Corner、Exit、Gate、LiftLoby
  • 在具有dist属性的实体对之间创建Way关系

要找到两个位置之间的最短路径,请使用RedisGraph 2.10algo.SPpaths过程(请参阅此处的"单对最小权重有界成本有界长度路径"(。

创建图形:

GRAPH.QUERY g "CREATE (e:Loc{name:'Entry'}), (r:Loc{name:'Reception'}), (c:Loc{name:'Corner'}), (x:Loc{name:'Exit'}), (g:Loc{name:'Gate'}), (l:Loc{name:'LiftLobby'}), (e)-[:Way{dist:152}]->(r), (r)-[:Way{dist:176}]->(c), (r)-[:Way{dist:153}]->(x), (c)-[:Way{dist:41}]->(g), (c)-[:Way{dist:176}]->(r), (g)-[:Way{dist:53}]->(l), (g)-[:Way{dist:41}]->(c), (l)-[:Way{dist:53}]->(g)"
1) 1) "Labels added: 1"
2) "Nodes created: 6"
3) "Properties set: 14"
4) "Relationships created: 8"
5) "Cached execution: 0"
6) "Query internal execution time: 0.788600 milliseconds"

查询入口和登机口之间的最短路径:

GRAPH.QUERY g "MATCH (e:Loc{name:'Entry'}), (g:Loc{name:'Gate'}) CALL algo.SPpaths( {sourceNode: e, targetNode: g, relTypes: ['Way'], weightProp: 'dist'} ) YIELD path, pathWeight RETURN pathWeight, [n in nodes(path) | n.name] as pathNodes ORDER BY pathWeight"
1) 1) "pathWeight"
2) "pathNodes"
2) 1) 1) "369"
2) "[Entry, Reception, Corner, Gate]"
3) 1) "Cached execution: 0"
2) "Query internal execution time: 0.540100 milliseconds"

最新更新