neo4j中每个游戏的前10位用户,基于他们喜欢的每个类别的游戏

时间:2015-05-21 09:47:00

标签: neo4j cypher

我试图让那些喜欢特定游戏的前十名用户从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

1 个答案:

答案 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