有没有一种方法可以在密码查询中预制计算



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

这在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