2017-02-05 2 views
0

Je rencontre des difficultés pour obtenir tous les nœuds dans une plage de temps spécifique. J'ai deux types de nœuds attachés à l'agenda, Nodes Tweet et Nodes News.Nœuds spécifiques de l'horloge dans la plage

Je veux tous les nœuds Tweets. J'utilise cette requête (10+ min arrêté):

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 

Mais cela prend beaucoup par rapport à la requête simple (8 secondes):

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

En fait, avec mes données, le 2 requête devrait retourner les mêmes nœuds, donc je ne comprends pas la grande différence de temps.

+0

Je suis confus. Vous effectuez l'appel de plage horaire pour obtenir des événements, mais vous n'utilisez pas du tout les nœuds renvoyés. Avez-vous omis quelque chose dans la requête? – InverseFalcon

+0

Le problème est que je ne sais pas exactement comment utiliser le timing. J'ai besoin de tous les tweets dans une plage spécifique qui correspond au modèle de requête. –

+0

Votre plage horaires est du 9/10/1974 au 12/5/2016. C'est une très longue portée. Est-ce vraiment la gamme de tweets que vous voulez obtenir? En règle générale, un calendrier est utilisé pour obtenir des événements dans une fenêtre de temps, généralement plus étroit que des décennies. Selon la taille de votre graphique, cela pourrait être une montagne de données. – InverseFalcon

Répondre

2

Le problème avec votre première requête est que vous ne faites rien avec les résultats de la requête timetree. C'est littéralement gaspiller des cycles et gonfler les rangées accumulées avec des données qui ne sont même pas utilisées.

Vous devez prendre les: Tweet nœuds renvoyés par votre requête de temps et les inclure dans la partie suivante de votre requête.

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 
+0

Merci beaucoup. Puis-je vous poser une autre question? Si je veux aussi les Tweets qui n'ont pas l'horodatage, comment puis-je modifier la requête. Merci –

+0

Donc, vous voulez que les tweets se produisent pendant cette période (où l'horodatage existe) ainsi que les tweets sans horodatage du tout? Pour quelle raison particulière manque-t-il un horodatage, et n'importe quelle façon de leur en donner un? – InverseFalcon

+0

Ces sans date sont extraites des données que j'utilise. Je les crée à partir de l'URL de retweet, donc je n'ai pas cette information. Pour être plus précis je voudrais ceux sans date qui sont liés à celui donné par la requête. –