检测neo4j属性图中的短周期

sn3*_*fru 4 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
Run Code Online (Sandbox Code Playgroud)

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

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

cyb*_*sam 7

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

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

MATCH p = n-[:r1|r2|r3*..n]->n
RETURN p;
Run Code Online (Sandbox Code Playgroud)