0

我很难在特定时间范围内获取所有节点。我在时间树上附加了两种类型的节点,Nodes Tweet 和 Nodes News。

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

4

1 回答 1

2

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

您需要获取从时间树查询返回的 :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
于 2017-02-05T11:25:15.507 回答