我有一个在Neo中有5亿个节点和边的图。我想找到避免超节点的2个节点之间的最短路径(即使它们比具有超节点的路径长)。Neo4j中没有超节点的最短路径
下面的查询工作正常较小的图形,但从来没有完成对我处理大小的图表:
MATCH (n:Node { id:'123'}),(m:Node { id:'234' }), p = shortestPath((n)-[*..6]-(m))
WHERE NONE(x IN NODES(p) WHERE size((x)--())>1000)
RETURN p
如果我删除WHERE子句是超级快。通常是亚秒。
我该如何加快速度?预先计算节点度并索引它们会有帮助吗?我是否应该复制所有与超节点相邻的边,并给它们一个新的标签,并将它们用于我的shortestPath查询而不使用WHERE子句?还有其他建议吗?
会发生什么事,如果你删除标签? (x) - ())> 1000) –
好点。道歉,我实际上在WHERE子句中没有标签测试它。第一个标签有错误。第二个标签似乎没有任何区别。让我更新我的问题以删除标签。作为参考它最初看起来像这样: WHERE NONE(x:Node IN NODES(p)WHERE size((x:Node) - ())> 1000) – Tom