范围内的Timetree特定节点

时间:2017-02-05 10:46:30

标签: neo4j cypher graphaware

我难以在特定时间范围内获取所有节点。我有两种类型的节点附加到时间树,节点推文和节点新闻。

我想要所有推文节点。我使用此查询(停止了10分钟以上):

CALL ga.timetree.events.range({start: 148029120000, end: 1480896000000, relationshipType: "LAST_UPDATE", resolution: 'DAY'}) 
YIELD node
MATCH (a:TwitterUser)-[:POSTS]->(:Tweet)-[r:RETWEETS]->(:Tweet)<-[:POSTS]-(m:TwitterUser) 
RETURN id(a), id(m), count(r) AS NumRetweets 
ORDER BY NumRetweets DESC

但与简单查询(8秒)相比,这需要很多:

MATCH (a:TwitterUser)-[:POSTS]->(:Tweet)-[r:RETWEETS]->(:Tweet)<-[:POSTS]-(m:TwitterUser) 
RETURN id(a), id(m), count(r) AS NumRetweets 
ORDER BY NumRetweets DESC

实际上,对于我的数据,2查询应该返回相同的节点,所以我不明白时差的大。

1 个答案:

答案 0 :(得分:2)

您的第一个查询的问题是您没有对timetree查询的结果做任何事情。它实际上只是浪费周期并使用甚至不使用的数据使构建的行膨胀。

您需要从时间树查询中返回:Tw​​eet节点,并将它们包含在查询的下一部分中。

CALL ga.timetree.events.range({start: 148029120000, end: 1480896000000, relationshipType: "LAST_UPDATE", resolution: 'DAY'}) 
YIELD node
WITH node as tweet
WHERE tweet:Tweet
MATCH (a:TwitterUser)-[:POSTS]->(:Tweet)-[r:RETWEETS]->(tweet)<-[:POSTS]-(m:TwitterUser) 
RETURN id(a), id(m), count(r) AS NumRetweets 
ORDER BY NumRetweets DESC