Узлы Timetree в диапазоне

У меня возникают трудности с получением всех узлов в определенном временном диапазоне. У меня есть два типа узлов, прикрепленных к временному дереву: Nodes Tweet и Nodes News.

Мне нужны все узлы Tweets. Я использую этот запрос (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 запроса должны возвращать одни и те же узлы, поэтому я не понимаю большой разницы во времени.


person Cezar Sas    schedule 05.02.2017    source источник
comment
Я смущен. Вы делаете вызов диапазона временного дерева для получения событий, но вообще не используете возвращаемые узлы. Вы что-то упустили в запросе?   -  person InverseFalcon    schedule 05.02.2017
comment
Проблема в том, что я точно не знаю, как использовать timetree. Мне нужны все твиты в определенном диапазоне, соответствующем шаблону запроса.   -  person Cezar Sas    schedule 05.02.2017
comment
Ваш временной диапазон с 10.09.1974 по 05.12.2016. Это очень большой диапазон. Это действительно тот диапазон твитов, который вы хотите получить? Обычно дерево времени используется для получения событий в некотором временном промежутке, обычно более узком, чем десятилетия. В зависимости от размера вашего графика это может быть гора данных.   -  person InverseFalcon    schedule 05.02.2017
comment
@InverseFalcon Да, интервал неправильный, спасибо за примечание. Мой интервал - неделя, я рассчитал неправильную временную метку.   -  person Cezar Sas    schedule 05.02.2017
comment
Если вы еще не используете его, вы можете взглянуть на функции даты/времени, которые помогут вам легко получить нужные метки времени из строк даты.   -  person InverseFalcon    schedule 05.02.2017


Ответы (1)


Проблема с вашим первым запросом заключается в том, что вы ничего не делаете с результатами запроса временного дерева. Это буквально пустая трата циклов и раздувание построенных строк данными, которые даже не используются.

Вам нужно взять узлы :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
person InverseFalcon    schedule 05.02.2017
comment
Большое спасибо. Могу я задать вам еще один вопрос? Если мне нужны также твиты, у которых нет метки времени, как мне отредактировать запрос. Спасибо - person Cezar Sas; 05.02.2017
comment
Итак, вам нужны твиты, которые происходят в течение этого временного диапазона (где существует временная метка), а также твиты вообще без временной метки? По какой-то конкретной причине им не хватает метки времени, и есть ли способ дать им ее? - person InverseFalcon; 05.02.2017
comment
Они без даты извлекаются из данных, которые я использую. Я создаю их из URL-адреса ретвита, поэтому у меня нет этой информации. Чтобы быть более точным, я бы хотел, чтобы они были без даты, которые связаны с той, которая указана в запросе. - person Cezar Sas; 05.02.2017