You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

全源最短路径算法未找到子网间部分路径的问题排查求助

全源最短路径算法未找到子网间部分路径的问题排查求助

大家好,我最近在使用Neo4j的GDS库做全源最短路径查询时遇到了问题,希望能得到社区大佬的帮助。

我需要找出所有子网(Subnet)之间的可达路径,比如sub2到sub6、sub2到sub8、sub2到tgw2这些路径,但目前执行查询后完全得不到这些预期的结果。

先贴出我的图数据创建语句:

CREATE
(s1:Subnet{name:"sub1"}),
(s2:Subnet{name:"sub2"}),
(s3:Subnet{name:"sub3"}),
(s4:Subnet{name:"sub4"}),
(n1:Network{name:"net1"}),
(s1)-[:SUB_OF]-> (n1),
(s3)-[:SUB_OF]-> (n1),
(s2)-[:SUB_OF]-> (n1),
(s4)-[:SUB_OF]-> (n1),
(s5:Subnet{name:"sub5"}),
(s6:Subnet{name:"sub6"}),
(s7:Subnet{name:"sub7"}),
(s8:Subnet{name:"sub8"}),
(n2:Network{name:"net2"}),
(t1:TGW{name:"tgw1"}),
(t2:TGW{name:"tgw2"}),
(s5)-[:SUB_OF]-> (n2),
(s6)-[:SUB_OF]-> (n2),
(s7)-[:SUB_OF]-> (n2),
(s8)-[:SUB_OF]-> (n2),
(s5)-[:CONNECT_TO]->(t1),
(s3)-[:CONNECT_TO]->(t1),
(s4)-[:CONNECT_TO]->(t2),
(s8)-[:CONNECT_TO]->(t2);

这是我用来投影图的语句:

MATCH (src:Subnet)-[r:SUB_OF | CONNECT_TO]->(trg:Network|TGW)
RETURN gds.graph.project(
'cypherGraph10',
src,
trg,
{relationshipType: type(r)},
{undirectedRelationshipTypes: [type(r)]
})

之后我执行了全源最短路径的流式查询,想筛选出仅子网之间的可达结果:

CALL gds.allShortestPaths.stream('cypherGraph10') YIELD sourceNodeId, targetNodeId, distance
WHERE gds.util.isFinite(distance) AND sourceNodeId <> targetNodeId
WITH gds.util.asNode(sourceNodeId) AS source, gds.util.asNode(targetNodeId) AS target, distance
WHERE NONE(n IN [source, target] WHERE n:Network|TGW)
RETURN source.name AS source, target.name AS target, distance
ORDER BY distance DESC, source ASC, target ASC

按照我的预期,sub2应该能通过net1 -> sub3 -> tgw1 -> sub5 -> net2 -> sub6这样的路径和sub6连通,也能找到到tgw2的路径,但目前查询结果里完全没有这些内容。

有没有朋友能帮我排查下问题?是图投影的方式有遗漏,还是查询语句的过滤条件出了问题?

备注:内容来源于stack exchange,提问作者Sur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 09:39:33