计算Neo4j中节点关系的问题

时间:2017-08-18 09:06:48

标签: neo4j twitter4j relationships

我有一个Neo4j数据库,其中存储了主题标签和推文。 每条推文都有一个topic属性,用于定义它所属的主题。 如果我运行以下查询,我会在db中获得最流行的主题标签,无论主题是什么:

MATCH (h:Hashtag)
RETURN h.text AS hashtag, size( (h)<--() ) AS degree ORDER BY degree DESC

我想为单个主题获取最受欢迎的标签。 我试过这个:

MATCH (h:Hashtag)<--(t:Tweet{topic:'test'})
RETURN h.text AS hashtag, size( (h)<--(t) ) AS degree ORDER BY degree DESC

MATCH (h:Hashtag)
RETURN h.text AS hashtag, size( (h)<--(t:Tweet{topic:'test'}) ) AS degree ORDER BY degree DESC

而下一个需要永远运行

MATCH (h:Hashtag), (t:Tweet)
WHERE t.topic='test'
RETURN h.text AS hashtag, size( (h)<--(t) ) AS degree ORDER BY degree DESC

我该怎么办?感谢。

1 个答案:

答案 0 :(得分:2)

在Cypher中,当您返回聚合函数的结果时,您会得到一个隐含的&#34;组。无论你在聚合函数旁边返回什么。 SIZE()不是聚合(因此,您将获得每行的模式大小而没有/ by聚合的组),但COUNT()是:

MATCH (t:Tweet {topic:'test'})-->(h:Hashtag)
RETURN h, COUNT(*) AS num ORDER BY num DESC LIMIT 10

此查询是Tweet个节点的计数,按Hashtag分组。