我在一家制作社交游戏的公司工作,我们的用户可以与他们建立朋友,并且可以制作基于受欢迎程度的内容在高分榜上显示。
我试图找出是否可以将我们的一些数据移动到像neo4j这样的图形数据库中,而我无法弄清楚的一件事就是如何在图形数据库中实现高分辨率系统。我基本上想做这样的查询: 获取由最喜欢的内容订购的朋友创建的电影/艺术书/照片内容列表。
获取过去7天内所有用户创建的电影/艺术书/照片内容列表,这些内容按照大多数喜欢的内容排序。
我们应该采取什么样的数据建模和查询来实现这一目标?
我计划做的数据模型是将用户作为节点,并将用户链接到用户的内容作为连接内容节点的列表,并将最新的链接到用户,但如何将高分获得这样的模特。
感谢。
答案 0 :(得分:1)
这是一个可能的模型:
;
要获取所有用户自特定时间戳创建的内容(按喜欢的数量降序排列),您可以使用以下查询。 (f:User {name: "Fred"})-[:CREATED]->(c:Content {created: 2345, type: "Music"})
(m:User {name: "Mary"})-[:LIKES {score:5}]->(c:Content)
(f)-[:KNOWS]->(m);
用于避免过滤OPTIONAL MATCH
而不喜欢。
Content
Here is a console说明了这一点。