Neo4J Cypher:计算每个节点中有多少个属性/属性与我的查询匹配

1人启动

例如,假设我的查询是:

匹配(u:User)其中u.LivesIn:'Los Angeles'或u.From:'Miami'或u.Status:'Single'或u.Job:'Artist'})返回u

我将如何更改查询,以便可以显示一列来统计与查询匹配的属性数。

对于上面的查询,可以说我返回了以下用户:

> User1, Los Angeles, Miami, Single, Artist, (4 attributes matched query
> so show a 4 in column)
> 
> User2, Los Angeles, Miami, Married, Artist, (3 attributes matched
> query so display 3 in column)
> User3, Los Angeles, New York, Married, Dancer, (1 attributes matched
> query so display 1 in column)

我用它来建立一种排名系统

我试图得到这个:

u.UserID     u.MatchingAttributes

User1        4

User2        3

User3        1

另外,如果可以的话,还请奖励如何通过人际关系做到这一点。谢谢。

妮可·怀特(Nicole White)

您可以使用一堆CASE语句:

MATCH (u:User)
WITH u.UserID AS User, CASE WHEN u.LivesIn = 'Los Angeles' THEN 1 ELSE 0 END AS c1,
                       CASE WHEN u.From = 'Miami' THEN 1 ELSE 0 END AS c2,
                       CASE WHEN u.Status = 'Single' THEN 1 ELSE 0 END AS c3,
                       CASE WHEN u.Job = 'Artist' THEN 1 ELSE 0 END AS c4
RETURN User, c1 + c2 + c3 + c4 AS Matching

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章