大规模识别二级连接

时间:2019-01-09 15:17:45

标签: neo4j cypher

我想按比例标识图中的第二级连接,类似于how to find 2nd level of connections in neo4j?

在Neo中识别二级连接很简单,就像对该线程的公认答案:

MATCH (n)-[:CALLED]->()<-[:CALLED]-(result)
WHERE n.id = 300
RETURN result

这在我的数据集上可以正常工作,但我希望有更广阔的视野。本质上,我想在上面的查询中删除WHERE,如下所示:

MATCH (n)-[:CALLED]->()<-[:CALLED]-(result)
RETURN n, result

使用Neo4j桌面,在运行第二个查询时出现OOM错误。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

全图查询可能会很昂贵。如果有任何方法,您可以缩小可能有用的工作范围,例如,如果节点应仅具有特定标签。

您还可以在返回的节点的id上添加谓词,以免获得镜像结果(相同的节点,但是交换它们绑定的变量):

MATCH (n)-[:CALLED]->()<-[:CALLED]-(result)
WHERE id(n) < id(result)
RETURN n, result

您可能还需要检查计算机上有多少可用内存,以及为Neo4j的堆使用配置了多少内存。参见memory configuration documentation