1

我有一个超过 100,000 个节点的 neo4j 图。当我通过 REST 使用以下密码查询时,我得到一个 Java Heap Error 。该查询正在从一组购买中生成一个 2-itemset。

MATCH (a)<-[:BOUGHT]-(b)-[:BOUGHT]->(c) RETURN a.id,c.id

类型 1 (a,c) 和类型 2 (b) 两种类型节点的叉积为 80k*20k

是否有针对相同目的更优化的查询?我仍然是 cypher 的新手。(我在所有 Type1 和 Type2 节点上分别有两个可以使用的索引)或者我应该只是增加 java heap size 。

我正在使用 py2neo 进行 REST 查询。

谢谢。

4

1 回答 1

0

正如您所说,叉积是 80k * 20k,所以您可能将它们全部拉过电线?这可能不是你想要的。通常这样的查询是由起始用户起始产品绑定的。

您可以尝试在 neo4j-shell 中运行此查询:

MATCH (a:Type1)<-[:BOUGHT]-(b)-[:BOUGHT]->(c) RETURN count(*)

如果节点上有标签,则可以使用该标签Type1?驾驶它。只是为了看看你在看多少条路径。但是 80k 乘以 20k 是 16 亿条路径。

而且我不确定您正在使用的版本(哪个)的 py2neo 是否已经为此使用流媒体?尝试将事务端点与 py2neo 一起使用(即 cypherSession.createTransaction() API)。

于 2014-03-25T00:43:41.013 回答