gpt4 book ai didi

neo4j - Cypher:具有多个源节点返回重复项的个性化 PageRank

转载 作者:行者123 更新时间:2023-12-02 04:27:56 30 4
gpt4 key购买 nike

我有一个特定的 Cypher 查询,它在一组源节点上运行个性化的 PageRank。我想RETURN 得分最高的 n 节点,包括它们的 PageRank 分数、其他属性以及这些节点之间的所有关系。

在 SO 的帮助下,我已经做到了这一点:

MATCH (p) WHERE p.paper_id IN $paper_ids
CALL algo.pageRank.stream(null, null, {direction: "BOTH", sourceNodes: [p]})
YIELD nodeId, score
WITH p, nodeId, score ORDER BY score DESC
LIMIT 25

MATCH (n) WHERE id(n) = nodeId
WITH collect(nodeId) as ids, collect(n {.*, score}) as nodes
CALL apoc.algo.cover(ids) YIELD rel
RETURN ids, nodes, collect(rel) as rels

我遇到的唯一问题是此查询返回重复的节点。例如,一个节点可以多次返回不同的 PageRank 分数。我怀疑这是由于有多个源节点,所以不同的分数对应于每个源节点的 PageRank 分数。为单个源节点运行 PageRank 时没有重复项。

这是一个问题,因为我想RETURN n unique 节点(在上面的代码块n = 25).在具有两个源节点的典型运行中,我得到大约 21-22 个唯一节点。

我将如何确保 RETURN n 个唯一节点?

最佳答案

正如@Tezra 所说,您需要确定如何为相同的 p 解析多个 score

以下选项均涉及对该子句进行简单更改:

    WITH p, nodeId, score

选项:

  • 使用最大分数:

    WITH p, nodeId, MAX(score) AS score
  • 使用最低分数:

    WITH p, nodeId, MIN(score) AS score
  • 使用平均分数:

    WITH p, nodeId, AVG(score) AS score

关于neo4j - Cypher:具有多个源节点返回重复项的个性化 PageRank,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52009475/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com