【问题标题】:Is there a way to preform calculations in a cypher query?有没有办法在密码查询中执行计算?
【发布时间】:2020-12-23 04:33:55
【问题描述】:

有没有办法根据关系而不是标签按计算值排序?作为参考,我有一个包含用户和技能的数据库。如果适用,每个用户节点都与技能节点有关系。每项技能都有一个与之相关的特定值,代表该技能的重要性。如果用户想找到相似的用户,我目前正在做的是匹配所有具有相似技能的不同用户。我想要做的是总结我正在寻找特定用户的每个技能节点中包含的值,并从最大到最小排序。例如,如果我正在寻找喜欢游泳、跑步和骑自行车的人,如果 Billy 喜欢游泳和跑步,我将获取存储在每个相似技能中的值并将它们相加,以用作排序依据。这在纯密码中是否可能,还是我必须返回结果列表然后在密码之外计算/排序?如果有人对如何更好地构建数据库有任何其他建议,也会有所帮助。

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    这在 Cypher 中非常简单,并且肯定在很多地方都有记录。

    这里有几个例子:

    根据相似的技能,在技能节点上按技能重要性的总和来查找像 Bob 这样的用户:

    MATCH (n:User {name: 'Bob'})-[:HAS_SKILL]->(skill)<-[:HAS_SKILL]-(otherUser)
    RETURN otherUser.name AS name, sum(skill.score) AS score
    ORDER BY score DESC
    

    在某些图形模型中,每个用户可以与每个技能关联一个分数,在这种情况下,分数将取决于用户和技能之间的关系,然后您也可以总结它们:

    MATCH (n:User {name: 'Bob'})-[r1:HAS_SKILL]->(skill)<-[r2:HAS_SKILL]-(otherUser)
    RETURN otherUser.name AS name, sum(r1.score + r2.score) AS score
    ORDER BY score DESC
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      • 2019-11-04
      • 1970-01-01
      • 2017-06-26
      • 2016-06-07
      • 1970-01-01
      • 2021-10-15
      相关资源
      最近更新 更多