我有一些由2x节点类型组成的示例数据; PERSONS和POSTS之间的关系为COMMENTED_ON。我可以在Neo4J中查看所有人员/帖子以及谁对什么发表了评论。但是,我想做一些更复杂的事情,那就是隔离那些发表评论的人。
John和Tim在POST1上发表评论 莎拉在POST2上发表评论 约翰和蒂姆对POST3发表评论 约翰和莎拉对POST4发表评论
在上面的示例中,John和Tim在同一视频上发表评论,因为您可以看到他们都在POST1 + POST3上发表了评论
我想这样做是为了找出可以通过对同一条信息发表评论的方式认识彼此的人。
答案 0 :(得分:0)
尝试一下: 在这种模式下,您代表2个人在同一课程中发表评论。
然后计算频率并列出按最高频率排序的结果。
MATCH (p1:Person)-[:COMMENTED_ON]->(post)<-[:COMMENTED_ON]-(p2:Person)
WITH p1,p2, count(post) as freq
ORDER BY freq DESC LIMIT 100
RETURN p1.name,p2.name, freq
答案 1 :(得分:0)
匹配每个评论同一条帖子的人。这将是一对人。 收集所有帖子并收集每个姓名(您需要执行以下两个步骤)。 展开表示将收集的人员姓名扩展为行/序列。 按帖子排序结果(按排序)。 然后收集(再次)人员姓名(将他们放在一个列表中)。 仅返回人员列表中的第一项(n [0])
MATCH (n1:Person)-[: COMMENTED_ON]->(post) <- [: COMMENTED_ON] - (n2: Person)
WITH n1,n2, collect(post.name) as posts
WITH collect([n1.name, n2.name]) as coln, posts
UNWIND coln as n
WITH n , posts ORDER by posts
WITH collect (n) as n, posts
RETURN n[0] as Person, posts as Post
结果: