用于计算介数的py2neo查询

2024-10-03 23:17:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用py2neo计算neo4j中一个非常大的图的中间性。在

我使用的cypher查询如下:

MATCH p=allShortestPaths((source:DOLPHIN)-[*]-(target:DOLPHIN)) 
WHERE id(source) < id(target) 
AND length(p) > 1 
UNWIND nodes(p)[1..-1] as n 
RETURN n.name, count(*) as betweenness 
ORDER BY betweenness DESC

它适用于小图,但不适用于有一百万个节点的大型图。我已经使用py2neo传递了这个查询。在

以前我得到的错误超时已解决,但现在运行了一段时间后,它说查询无法处理。 我正在跟踪错误:-在

^{pr2}$

我查了很多资料。请帮我拿这个


Tags: andidsourcetargetasmatch错误where
1条回答
网友
1楼 · 发布于 2024-10-03 23:17:38

我不能评论你用来给作者排名的算法/方法。归根结底,您运行的查询是一个完整的图搜索,带有一些聚合。Neo4j不是为这种情况设计的。随着数据的增加,运行查询将更加困难。在

理想情况下,查询应该只遍历图的一小部分。你可以问每一位作者最受欢迎的是谁。对所有的人都这样做,一次一个,然后自己对他们进行排名,可能会更好。除非您采用不同的方法,例如限制要遍历的相邻节点的范围,或最长路径的长度,甚至两者都要限制。但我怀疑这会影响你的成绩。在

我建议您根据自己的需求重新审视您的领域模型,并根据您的计算方法找出一个可以帮助您轻松回答您的问题的设计模型,例如谁是最受欢迎的作者。再仔细检查一下,确保你使用的是索引,以防万一。在

使用neo4j建模:

有时候,最简单的模型无法帮助我们回答某些问题;我自己也不得不重新建模过几次,并将关系转换为节点以进行时态数据排序,因为第一次并不明显。不管怎样,我希望你能想出解决办法。在

干杯

相关问题 更多 >