我正在尝试为我正在处理的这种社交网络类型的应用程序编写Cypher查询。想想Facebook类型的应用程序,其中有用户跟随其他用户,用户可以撰写帖子并喜欢/分享它们。
让我们说用户Alice跟随几个人(主题)。
查询应返回的内容有三个:
我可以分别编写三个查询:
start alice=node(35500)
match (alice)-[:FOLLOWS]->()-[:SHARES]->(post)
where not((post)-[:ORIGINAL]->())
return post;
start alice=node(35500)
match (alice)-[:FOLLOWS]->()-[:LIKES]->(post)
with post, count(post) as likes
where likes >= 5
return post;
start alice=node(35500)
match (alice)-[:FOLLOWS]->()-[:SHARES]->(post)-[repost:ORIGINAL]->()
with post, count(repost) as reposts
where reposts >= 5
return post;
(转发有一个原始帖子的原始关系)
目前我正在分别进行三个查询,在客户端中对结果进行组合,排序和分页。我真正想要的是单个查询,我可以使用SKIP和LIMIT来分页结果。
据我所知,Neo4j 1.9不支持UNION,这是我正在使用的(稳定版)版本。升级到不稳定的Neo4j 2.0并不是一个真正的选择。
如果没有Neo4j的UNION,有没有办法做到这一点?
谢谢!
答案 0 :(得分:1)
我认为在Neo4j 1.9中,你应该转移到服务器插件或Java代码,Cypher在2.0之前并不支持这个。