使用 cypher 在相当大的图中检测循环的最佳方法是什么。
我有一个图,它有大约 90000 个节点和大约 320000 个关系,我想检测大约 10k 个节点和涉及 100k 个关系的子图中的循环。我写的密码就像
start
n = node:node_auto_index(some lucene query that returns about 10k nodes)
match
p = n-[:r1|r2|r3*]->n
return p
然而,这并不是非常有效。
有人可以建议更好的方法来做到这一点。
最佳答案
众所周知,无限长度的路径搜索很慢,因为操作的数量随着搜索深度呈指数增长。
如果您愿意将循环搜索限制在一个相当小的最大路径深度,那么您可以加快查询速度(尽管可能仍需要一些时间)。例如,仅查看最多 5 步深的路径:
MATCH p = n-[:r1|r2|r3*..n]->n
RETURN p;
关于graph - 检测neo4j属性图中的短周期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34136944/