gpt4 book ai didi

graph - Neo4j中没有 super 节点的最短路径

转载 作者:行者123 更新时间:2023-12-04 19:32:10 25 4
gpt4 key购买 nike

我在 Neo 中有一个包含 5 亿个节点和边的图。我想找到避免 super 节点的 2 个节点之间的最短路径(即使它比具有 super 节点的路径长)。

下面的查询适用于较小的图形,但对于我正在处理的大小的图形永远不会完成:

MATCH (n:Node { id:'123'}),(m:Node { id:'234' }), p = shortestPath((n)-[*..6]-(m)) 
WHERE NONE(x IN NODES(p) WHERE size((x)--())>1000)
RETURN p

如果我删除 WHERE 子句,它会非常快。通常是亚秒级。

我怎样才能加快速度?预先计算节点度数和索引它们会有帮助吗?我是否应该复制除与 super 节点相邻的边之外的所有边,给它们一个新标签并将它们用于我的 shortestPath 查询而不使用 WHERE 子句?还有其他建议吗?

最佳答案

您还可以尝试为 super 节点添加标签:

MATCH (x:Node)
WHERE size((x)--())>1000
SET n:Supernode

这是否在您的数据上运行并完成?你有多少个 super 节点和普通节点?

然后尝试:
MATCH (n:Node { id:'123'}),(m:Node { id:'234' })
WITH n, m
MATCH p = shortestPath((n)-[*..6]-(m))
WHERE NONE(x IN NODES(p) WHERE (x:Supernode))
RETURN p

我想标签检查会更快。

关于graph - Neo4j中没有 super 节点的最短路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43052119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com