我正在尝试使用 Neo4j 的 algo.beta.louvain()。我注意到如果我以不同的方式对节点进行排序,它会返回完全不同的结果(每个社区中的社区数和节点数)label
。以下 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>)
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>)
在同一个 Neo4j 实例中,以上是我注意到的与我的实际问题有关的内容。我真正想做的是为具有相同数据的不同 Neo4j 实例获得一致的结果。在调试不同情况下结果不同的原因时,我注意到我可以通过以不同顺序给出相同的集合节点来重现相关问题。我在原始代码中没有“排序依据”,但我打赌在 Neo4j 的不同实例中,自然排序不同导致结果不同。