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

Neo4j技术求助:如何补全代码实现所有Genre节点间最短路径查询

Neo4j 所有流派节点间最短路径查询实现

补全后的完整代码

match (g:Genre)
with g.genre as genre1
match (g1:Genre {genre: genre1})
match path = allShortestPaths((g1)-[*]-(g2:Genre))
where g1 <> g2
return distinct genre1, g2.genre as genre2, length(path)/2 as length
order by length desc, genre1, genre2;

代码解释

  • 第一步match (g:Genre)遍历所有流派节点,通过with提取流派名称genre1,确保每个流派仅被处理一次
  • 第一个新增match:match (g1:Genre {genre: genre1}),根据流派名称找回对应的节点(前面的with仅传递了字符串,需要重新绑定节点对象才能执行路径查询)
  • 第二个新增match:match path = allShortestPaths((g1)-[*]-(g2:Genre)),查询当前流派节点g1到所有其他流派节点g2的最短路径,无向关系-[*]-适配流派通过电影关联的双向结构
  • where g1 <> g2过滤掉流派到自身的无效路径
  • length(path)/2是因为流派间的路径为Genre-Movie-Genre的链式结构,路径长度(关系数量)除以2才是两个流派之间的实际关联层数

关键说明

必须添加match语句,原因如下:

  1. 前面的with仅传递了流派名称字符串,需要重新匹配回节点对象才能执行路径查询
  2. 需通过第二个match调用allShortestPaths,遍历当前流派到其他所有流派的路径

内容的提问来源于stack exchange,提问作者fltray10

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:55:17