2015-03-02 38 views
1

我的文章和作者的图形Neo4j的节点列表。我想找到最出版的作者。然后我想找到每篇文章的合着者名单。其目的是确定哪些合作作者的最频繁合作与最有成效的作者。发现其中有最关系回到另一个节点

我是新来的暗号,我有以下的最可怕的命令确实是低效的。有没有更好的方法来进行搜索?

我也想让他们玩的结果,所以最好是返回作为集合共同作者的名单?

MATCH (author:Author)-[:WROTE]->(article:Article) WITH author, COUNT(article) as numberofarticles 
ORDER BY numberofarticles DESC LIMIT 1 
MATCH (:Author {id:author.id})-[:WROTE]->(article:Article) 
MATCH (coauthor:Author)-[:WROTE]->(:Article {id:article.id}) WHERE NOT coauthor:id = author.id 
RETURN COUNT(coauthor), article 

回答

7

我认为你可以通过保持第一match文章在查询中的查询效率更高。

我觉得这样的事情可能是你在找什么。

MATCH (author:Author)-[:WROTE]->(article:Article) 
WITH author, COUNT(article) AS number_of_articles, collect(article) AS articles 
ORDER BY number_of_articles DESC 
LIMIT 1 
UNWIND articles AS article 
MATCH (coauthor:Author)-[:WROTE]->(article) 
WHERE coauthor <> author 
RETURN article, collect(coauthor) 
+0

非常感谢 – 2015-03-03 13:28:32

相关问题