Neo4j algo.louvain.stream为相同的数据返回不同的结果

Neo4j algo.louvain.stream为相同的数据返回不同的结果,neo4j,neo4j-apoc,graph-data-science,Neo4j,Neo4j Apoc,Graph Data Science,我正在尝试使用Neo4j的algo.beta.louvain()。我注意到,如果我在标签中对节点进行不同的排序,它会返回非常不同的结果(社区的数量和每个社区中的节点数量)。以下3个调用返回不同的结果。我使用的是{concurrency:1}。有什么我没有得到的吗 CALL algo.louvain.stream('MATCH (n:Node) WHERE <some-condition> RETURN id(n) as id order by n.id desc', <rela

我正在尝试使用Neo4j的algo.beta.louvain()。我注意到,如果我在
标签
中对节点进行不同的排序,它会返回非常不同的结果(社区的数量和每个社区中的节点数量)。以下3个调用返回不同的结果。我使用的是{concurrency:1}。有什么我没有得到的吗

CALL algo.louvain.stream('MATCH (n:Node) WHERE <some-condition> RETURN id(n) as id order by n.id desc', <relationship>, <config>)
调用algo.louvain.stream('MATCH(n:Node),其中通过n.id desc'返回id(n)作为id顺序,)
调用algo.louvain.stream('MATCH(n:Node),其中通过n.id asc'返回id(n)作为id顺序,)
调用algo.louvain.stream('MATCH(n:Node),其中返回id(n)作为id order by id(n)desc',)

在同一个Neo4j实例中,我注意到上面的内容与我的实际问题有关。我真正想做的是用相同的数据为不同的Neo4j实例获得一致的结果。在调试不同实例中结果不同的原因时,我注意到我可以通过以不同顺序提供相同的集合节点来重现相关问题。我在原始代码中没有“order by”,但我打赌在Neo4j的不同实例中,自然顺序是不同的,导致不同的结果。

算法本身是不确定的,这意味着不能保证在相同的数据上有相同的结果

如果需要以增量方式运行该算法(例如,在添加新节点并重新计算集群后,但不会丢失该算法已处理的节点上的集群ID),则可以提供种子属性


neo4j图形数据科学库文档中的更多信息:

此外,由于不推荐使用图形算法库,请使用neo4j图形数据科学库。我得到了不确定的部分。然而,如果节点的顺序保持不变,该算法将产生相同的精确结果。只有顺序改变时才不同。有没有一种方法可以提示它生成更大的集群(例如)?GDS实现是否不同?我想我们正在评估迁移到Neo4J4.x是否值得。
CALL algo.louvain.stream('MATCH (n:Node) WHERE <some-condition> RETURN id(n) as id order by n.id asc', <relationship>, <config>)
CALL algo.louvain.stream('MATCH (n:Node) WHERE <some-condition> RETURN id(n) as id order by id(n) desc', <relationship>, <config>)