一、安装的两个扩展包: apoc-3.4.0.1-all.jar graph-algorithms-algo-3.4.7.0.jar 二、在相同的数据集上执行pagerank结果相差巨大(数据库版本neo4j-community-3.4.7) 1、apoc-3.4.0.1-all.jar存在的过程 MATCH (n:专题) WITH collect(n) as nodes CALL apoc.algo.pageRank(nodes) YIELD node,score RETURN node.name,score ORDER BY score DESC 结果如图:
2、graph-algorithms-algo-3.4.7.0.jar存在的过程 CALL algo.pageRank.stream(‘专题’,NULL,{iterations:20, dampingFactor:0.85}) YIELD node, score RETURN node.name, score ORDER BY score DESC 结果如图:
如上述两种方式,使用算法扩展包查询速度较快,但是结果与apoc.algo.pageRank相差很大,请问是什么原因造成的?是否是查询写的有问题还是其它原因?
算法用algorithms里的包,apoc里的算法已经不维护了. 之前提issues得到的答案 https://github.com/neo4j-contrib/neo4j-apoc-procedures/issues/847
@nonono 是的,计算结果差距这么大就有点奇怪了,还没有找到原因,这是我提的issues https://github.com/neo4j-contrib/neo4j-graph-algorithms/issues/716
MATCH (n:专题 {name:'十一长假'}) CALL algo.pageRank.stream('专题事件',NULL,{iterations:20, dampingFactor:0.85}) YIELD nodeId, score MATCH (node) WHERE id(node)=nodeId RETURN node.name,score ORDER BY score DESC
都测试了一遍结果一样~
@bingo algo.pageRank 和algo.pageRank.stream区别在哪里? 另外,这种写法 CALL algo.pageRank( ‘MATCH (p:Page) RETURN id§ as id’, ‘MATCH (p1:Page)-[:Link]->(p2:Page) RETURN id(p1) as source, id(p2) as target’, {graph:‘cypher’, iterations:5, write: true}); 第一个match查询的结果好像没什么用啊,我没看懂 第二个match查询得到的source和target是起什么作用的,这里的pageRank是基于全图计算的还是基于查询的子图计算的, 谢谢!