Python 用于计算介数误差的py2neo查询

Python 用于计算介数误差的py2neo查询,python,neo4j,py2neo,Python,Neo4j,Py2neo,我想用py2neo计算neo4j中一个非常大的图的介数 我使用的密码查询如下: 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

我想用py2neo计算neo4j中一个非常大的图的介数

我使用的密码查询如下:

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

我找了很多关于它的资料。请帮我做这个

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

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

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

使用neo4j建模:

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


干杯

数据库服务器可能被请求淹没了。尝试以串联方式运行进程,限制每次遍历的节点范围。我很犹豫是否要提出解决方案,因为我不太确定您在聚合什么。限制节点或路径可能会在每次调用时产生不同的结果。但我建议您不要在Neo4j中进行完整的图形查询。您好,谢谢您的建议。我有相同领域的研究论文作者的数据。我用它画了一张合著者的图表。现在我想通过计算每个作者的中间值来找出网络中排名靠前的作者。因为这个查询不起作用,所以您可以使用一些neo4j查询来建议任何好的方法吗?为了获得好的建议,我需要了解您的模式。假设您有如下内容:(author)-[:writed]->(paper)如果您将顶级作者定义为写了大多数论文的作者,那么您可以运行如下查询:MATCH(author:author)-[r:writed]-(x:paper)RETURN author.name作为名称,COUNT(r)作为n ORDER BY n DESC LIMIT 10是的,我采用了相同的模式。为了计算最优秀的作者,我不计算发表的数量。为了计算排名靠前的作者,我找到了图中特定作者出现的最短路径(从每个节点到另一个节点)的数量。作者所在的最短路径(从每个节点到另一个节点)的数量越高,其排名就越好。请看我写的问题。它也在做同样的事情。非常感谢你……:)
    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.