如何解决有没有办法在密码查询中进行计算?
有没有办法根据关系而不是标签按计算值排序?作为参考,我有一个包含用户和技能的数据库。如果适用,每个用户节点都与一个技能节点有关系。每项技能都有一个与之相关的特定值,代表该技能的重要性。如果用户想找到相似的用户,我目前正在做的事情是匹配所有具有相似技能的不同用户。我想要做的是总结我正在寻找的特定用户的每个技能节点中包含的值,并从最大到最小排序。例如,如果我正在寻找喜欢游泳、跑步和骑自行车的人,如果比利喜欢游泳和跑步,我将获取存储在每个相似技能中的值并将它们相加作为排序依据。这在纯粹的密码中是可能的,还是我必须返回结果列表然后在密码之外计算/排序?如果有人对如何更好地构建数据库有任何其他建议也会有所帮助。
解决方法
这在 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。