【问题标题】:neo4j uni directional shortest pathneo4j 单向最短路径
【发布时间】:2015-03-27 08:04:33
【问题描述】:

我有一个图,其中包含多个节点和边,它们之间具有 (links_to) 的关系。节点代表网页,边缘代表超链接。页面有很多链接,包括互惠链接。

问题:

当我在 A 和 C 之间运行最短路径时,我得到的路径包含无效方向。最短路径A-C

我得到的是 AC,而不是 A->B->C。

如何才能获得正确方向的最短路径?

这是我的查询:

MATCH (home { Label:'/' }),(paris { Label:'/paris/2012/intervenants.php' }), 
p = shortestPath((home)-[:links_to]-(paris))
RETURN p

http://i.stack.imgur.com/VHTQ3.png

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    您必须添加*(用于节点之间的许多关系)和方向:

    MATCH (home { Label:'/' }), (paris { 标签:'/paris/2012/intervenants.php' }),
    p = shortestPath((home)-[:links_to*]->(paris))
    返回 p

    密码查询的好例子是link

    【讨论】:

    • 我试过不能让它工作!我创建了一个更简单的图表。 # Node: /A # Section:none # Node: /B # Section:none # Node: /C # Section:none # Node: /D # Section:none #1 /A > /B #2 /B > /A #3 /B > /C #4 /C > /D #5 /D > /C #6 /D > /A 即使这个 MATCH p=({ Label:'/A' })-[:links_to]-> ({ Label:'/B' }) RETURN p 给了我两个方向。有什么建议吗?
    • 视觉显示节点上的所有边缘,这就是令人困惑的地方。如果我在数据浏览器上执行相同的查询,它似乎是正确的。有什么方法可以直观地做到这一点?
    • 我害怕浏览器的可视化(Neo4j的默认)每次都显示返回节点之间的所有关系。
    • 我在数据浏览器上试过了,还是一样的无效数据。我如何知道给定方向上的最短路径?我应该使用什么?
    • 你应该显示结果。如果你使用-->,它只需要返回这个方向的路径(在Neo4j浏览器的Rows窗口中)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    相关资源
    最近更新 更多