[英]Bipartite graph projection via Cypher query Neo4j
我是 neo4j 的新手,我试图对他们评价的用户和电影的二分图进行投影。 这是我掌握的信息:
我在 Neo4j 中创建了图表,这就是我得到的:
我正在尝试进行投影,以将对电影评分为 SAME 的用户联系起来,但我没有成功。 这是我用于投影的代码:
MATCH (u:User)-[r:RATED_MOVIE]->(m:Movie)
WITH m, collect(u) as users, collect(r) as raitings, count(r) as weights
UNWIND users as u1
UNWIND users as u2
UNWIND raitings as r1
UNWIND raitings as r2
WITH u1, u2, r1, r2
WHERE u1.UserId < u2.UserId and r1.rating = r2.rating
CREATE (u1)-[:CONNECTED{common_movies_rated:weights}]->(u2)
RETURN u1, u2
预期的 output 是这样的图:
很好的描述,感谢您指定所需的 output。
您正在寻找的是两个人对同一部电影给予相同评分的路径,然后计算两个人之间的这些事件以获得权重,以便您可以创建他们之间的关系。
我们可以使用更简单的查询来获得您需要的结果。
MATCH (u1:User)-[r:RATED_MOVIE]->(m:Movie)<-[r2:RATED_MOVIE]-(u2)
WHERE id(u1) < id(u2) AND r.rating = r2.rating
WITH u1, u2, count(m) as weight
CREATE (u1)-[:CONNECTED {common_movies_rated:weight}]->(u2)
RETURN u1, u2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.