检测neo4j属性图中的短周期

时间:2015-12-07 15:16:26

标签: graph neo4j 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

然而,这并不是非常有效。

有人可以建议更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:6)

众所周知,无限长路径搜索速度很慢,因为操作次数会随着搜索深度呈指数级增长。

如果您愿意将周期搜索限制在相当小的最大路径深度,那么您可以加快查询速度(尽管可能还需要一些时间)。例如,仅查看最多5步深的路径:

MATCH p = n-[:r1|r2|r3*..n]->n
RETURN p;