neo4j - 通过图的最长路径
问题描述
我有一个包含 80k 节点和 180k 顶点的图,我想为其计算从开始到结束的前 5 个最长路径(基于属性)。我正在使用 Neo4j 4.3 社区版。
我有以下 Cypher 查询,但速度非常慢:
MATCH p = (a:Start)-[:FLOWS_TO*]->(b:Finish)
RETURN
length(p) AS steps
, reduce(sum=0, n in nodes(p) | sum + n.cost) AS total_cost
ORDER BY
total_cost DESC
LIMIT 5
所有中间节点都具有相同的标签。如果我运行EXPLAIN
查询,我会看到一个包含 4250 亿行的中间步骤,这就是它如此慢的原因。不幸的是,我不知道最昂贵的路径有多长,所以我不能FLOWS_TO:1..X
用 X 限制某个整数。
图中没有循环。
有没有办法加快查询速度或以更好的方式解决问题?
解决方案
推荐阅读
- c# - 未找到有效的帐户信息组合
- apache-pig - Pig Latin:过滤数字 <5 和 >= 5 in chararray(文本和数字)
- google-cloud-platform - 如何为 Google IoT 中的注册表和设备正确创建签名证书?
- debugging - GDB断点命中时指令未恢复
- javascript - 使用 tr.remove() 删除 HTML 表的行,提交按钮只发回它上面的行而不是它下面的行
- javascript - 在将大量值导入和分配给角度形式时,在潜在的内存不足崩溃(Chrome 浏览器)之前暂停
- linux - 添加日志文件命令会将脚本置于循环中?
- cassandra - 如何将谷歌云功能连接到 Kubernetes 集群中的 cassandra 数据库
- java - 搜索 char 数组以查看 char 是否匹配
- php - PHP Composer 自动加载不起作用,没有启动类