Neo4j 中计算节点关系的问题
Issue in counting relationships for nodes in Neo4j
我有一个 Neo4j 数据库,其中存储了主题标签和推文。
每条推文都有一个topic
属性,它定义了它所属的主题。
如果我 运行 以下查询,无论主题如何,我都会得到数据库中最流行的主题标签:
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
我该怎么办?谢谢。
在 Cypher 中,当你 return 聚合函数的结果时,你会得到一个隐式的 "group by",无论你在聚合函数旁边 return。 SIZE()
不是聚合(因此您将获得没有组 by/aggregation 的每一行的模式大小),但 COUNT()
是:
MATCH (t:Tweet {topic:'test'})-->(h:Hashtag)
RETURN h, COUNT(*) AS num ORDER BY num DESC LIMIT 10
此查询是 Tweet
个节点的计数,按 Hashtag
分组。
我有一个 Neo4j 数据库,其中存储了主题标签和推文。
每条推文都有一个topic
属性,它定义了它所属的主题。
如果我 运行 以下查询,无论主题如何,我都会得到数据库中最流行的主题标签:
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
我该怎么办?谢谢。
在 Cypher 中,当你 return 聚合函数的结果时,你会得到一个隐式的 "group by",无论你在聚合函数旁边 return。 SIZE()
不是聚合(因此您将获得没有组 by/aggregation 的每一行的模式大小),但 COUNT()
是:
MATCH (t:Tweet {topic:'test'})-->(h:Hashtag)
RETURN h, COUNT(*) AS num ORDER BY num DESC LIMIT 10
此查询是 Tweet
个节点的计数,按 Hashtag
分组。