我试图让那些喜欢特定游戏的前十名用户从1到25获得game_id。这些游戏与用户称之为评级的关系,其属性rating_val = 1到10.
如何获得包含所有用户组的25行,每个用户的rating_val为1到10个每个游戏类别的desc顺序。
基本上: id为1到25 games_like的25个游戏类别是与1-10个用户的rating_val的关系是具有id,name
的节点这个查询不起作用我想我的方法和实现都是错误的:
MATCH (u:user { user_id:"1" })
MATCH (o:user)
WHERE o <> u
OPTIONAL MATCH (u)-[r:games_like]->(d)<-[rw:games_like]-(o)
RETURN
toInt(r.rating_val)+toInt(rw.rating_val) as sum ,
collect(DISTINCT (r.rating_val)) AS user1,
collect(DISTINCT (rw.rating_val)) AS user2,
d
ORDER BY sum DESC
答案 0 :(得分:1)
也许您可以创建数据集并分享您的期望?
除了(o:user)的全局匹配外,它看起来不正确。
你按照总和和游戏分组(概率删除游戏)? 你提到的类别是如何进入的?
尝试此操作,简化匹配并仅通过评分总和删除游戏分组。
MATCH (u:user { user_id:"1" })-[r:games_like]->()<-[rw:games_like]-(o:user)
WHERE o <> u
RETURN
toInt(r.rating_val)+toInt(rw.rating_val) as sum ,
collect(DISTINCT (r.rating_val)) AS user1,
collect(DISTINCT (rw.rating_val)) AS user2
ORDER BY sum DESC
LIMIT 25