我想在图中大规模识别二级连接,类似于如何在 neo4j 中找到第二级连接?
在 Neo 中识别二级连接很简单,就像该线程的公认答案一样:
MATCH (n)-[:CALLED]->()<-[:CALLED]-(result)
WHERE n.id = 300
RETURN result
这在我的数据集上工作正常,但我想要一个更广阔的视野。本质上,我想删除上述查询中的 WHERE,如下所示:
MATCH (n)-[:CALLED]->()<-[:CALLED]-(result)
RETURN n, result
使用 Neo4j 桌面,我在运行第二个查询时收到 OOM 错误。有没有更好的方法可以做到这一点?
图形范围的查询可能很昂贵。如果有任何方法可以缩小工作范围,例如节点是否应该仅具有特定标签。
您还可以在返回的节点的 id 上添加谓词,这样您就不会获得镜像结果(相同的节点,但交换它们绑定到的变量):
MATCH (n)-[:CALLED]->()<-[:CALLED]-(result)
WHERE id(n) < id(result)
RETURN n, result
您可能还想检查计算机上有多少内存可用,以及为 Neo4j 的堆使用配置了多少内存。请参阅内存配置文档。