首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算中间度误差的py2neo查询

计算中间度误差的py2neo查询
EN

Stack Overflow用户
提问于 2015-04-15 07:22:35
回答 1查看 249关注 0票数 0

我想在neo4j中用py2neo计算一个很大的图中的中间度。

我使用的密码查询如下:

代码语言:javascript
复制
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

它适用于小图,但不工作于有100万节点的大图。我使用py2neo传递了这个查询。

早些时候,我得到了错误超时,这已经解决了,但现在运行了一段时间后,它是说查询不能处理。我收到以下错误:-

代码语言:javascript
复制
    File "/usr/local/lib/python2.7/dist-packages/py2neo/cypher/core.py", line 111, in execute
    results = tx.commit()
    File "/usr/local/lib/python2.7/dist-packages/py2neo/cypher/core.py", line 306, in commit
    return self.post(self.__commit or self.__begin_commit)
    File "/usr/local/lib/python2.7/dist-packages/py2neo/cypher/core.py", line 261, in post
    raise self.error_class.hydrate(error)
    py2neo.cypher.error.statement.ExecutionFailure: The statement has been closed.

我已经搜了很多遍了。请帮我处理这个

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-21 15:26:30

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

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

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

用neo4j建模:

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

干杯

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29643983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档