繁体   English   中英

通过 Cypher 查询 Neo4j 进行二分图投影

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM