Neo4j:使用create unique语句执行查询后出现Java堆空间错误

Neo4j:使用create unique语句执行查询后出现Java堆空间错误,java,neo4j,cypher,heap,Java,Neo4j,Cypher,Heap,我试图在一些neo4j数据库上测试一些查询,这些数据库的数据量不同。如果我在少量数据上测试该查询,一切正常,执行时间也很短,但当我开始在具有2794个节点和94863个关系的数据库上执行查询时,需要很长时间才能在Neo4j API中得到以下错误: Java堆空间Neo.DatabaseError.General.UnknownFailure 第一个问题: MATCH (u1:User)-[r1:Rated]->(m:Movie)<-[r2:Rated]-(u2:User) W

我试图在一些neo4j数据库上测试一些查询,这些数据库的数据量不同。如果我在少量数据上测试该查询,一切正常,执行时间也很短,但当我开始在具有2794个节点和94863个关系的数据库上执行查询时,需要很长时间才能在Neo4j API中得到以下错误: Java堆空间Neo.DatabaseError.General.UnknownFailure 第一个问题:

    MATCH (u1:User)-[r1:Rated]->(m:Movie)<-[r2:Rated]-(u2:User)
WITH 1.0*SUM(r1.Rate)/count(r1) as pX, 
1.0*SUM(r2.Rate)/count(r2) as pY, u1, u2
MATCH (u1:User)-[r1:Rated]->(m:Movie)<-[r2:Rated]-(u2:User)
WITH SUM((r1.Rate-pX)*(r2.Rate-pY)) as pomProm,
SQRT(SUM((r1.Rate-pX)^2)) as sumX, 
SQRT(SUM((r2.Rate-pY)^2)) as sumY, pX,pY,u1,u2
CREATE UNIQUE (u1)-[s:SIMILARITY1]-(u2)
SET s.value = pomProm / (sumX * sumY)

MATCH(u1:User)-[r1:Rated]->(m:Movie)(m:Movie)(m:Movie)您可能需要配置Neo4j可用的内存量。您可以通过编辑
conf/Neo4j wrapper.conf
来配置Neo4j服务器堆大小:

wrapper.java.maxmemory=NUMBER_OF_MB_HERE
有关更多信息,请参阅

但是,查看您的查询(它们正在执行图形全局对操作),您可能需要考虑批量进行。例如:

// Find users with overlapping movie ratings
MATCH (u1:User)-[:RATED]->(:Movie)<-[:RATED]-(u2:User)
// only for users whose similarity has not yet been calculated
WHERE NOT exists((u1)-[:SIMILARITY]-(u2))
// consider only up to 50 pairs of users
WITH u1, u2 LIMIT 50
// compute similarity metric and set SIMILARITY relationship with coef
...
//查找电影分级重叠的用户
MATCH(u1:User)-[:RATED]->(:Movie)我有一个类似的问题(在版本4.1中),属性可以在
conf/neo4j.conf
中找到,或者选择active database->Manage->Settings并增加:

dbms.memory.heap.initial_size
dbms.memory.heap.max_size

有关性能的更多详细信息,请参见

谢谢,记忆确实帮助了我。我将尝试你的第二个建议。我正在尝试你的代码,有没有办法,如何在cypher中循环此查询?不是在cypher中,而是在客户端中,只需在
while(results)
类型循环中检查结果
// Find users with overlapping movie ratings
MATCH (u1:User)-[:RATED]->(:Movie)<-[:RATED]-(u2:User)
// only for users whose similarity has not yet been calculated
WHERE NOT exists((u1)-[:SIMILARITY]-(u2))
// consider only up to 50 pairs of users
WITH u1, u2 LIMIT 50
// compute similarity metric and set SIMILARITY relationship with coef
...
dbms.memory.heap.initial_size
dbms.memory.heap.max_size