范围内的时间树特定节点

Timetree specific nodes in range

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

我想要所有推文节点。我正在使用此查询(停止 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 个查询应该 return 相同的节点,所以我不明白时间差异很大。

您的第一个查询的问题是您没有对时间树查询的结果做任何事情。从字面上看,这只是在浪费周期,并用甚至未使用的数据使已构建的行膨胀。

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

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