2017-02-05 10 views
0

特定の時間範囲内にすべてのノードを取得するのが難しいです。私はタイムツリーに「ノード・ツイート」と「ノード・ニュース」の2種類のノードを添付しています。範囲内のタイムツリー固有ノード

すべてのツイートノードが必要です。私は(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クエリは、同じノードを返す必要がありますので、私は大きな時間の違いを理解していません。

+0

私は混乱しています。イベントを取得するためにtimetreeの範囲呼び出しを行いますが、返されたノードはまったく使用しません。あなたはクエリで何かを省略しましたか? – InverseFalcon

+0

問題は、タイムツリーの使い方が正確にわからないことです。 クエリパターンと一致する特定の範囲のすべてのつぶやきが必要です。 –

+0

タイムツリーの範囲は1974年9月10日〜12/5/2016です。それは非常に長い範囲です。それは本当にあなたが手に入れたいつぶやきの範囲ですか?典型的には、タイムツリーは、何十年にもわたって狭い時間枠でイベントを取得するために使用されます。グラフのサイズによって、これはデータの山となる可能性があります。 – InverseFalcon

答えて

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

ありがとうございました。もう1つ質問してもいいですか? タイムスタンプを持たないツイートが必要な場合は、どのようにクエリを編集すればいいですか?ありがとう –

+0

そのタイムレンジ(タイムスタンプが存在する)とタイムスタンプのないつぶやきの間に発生したツイートが欲しいですか?彼らがタイムスタンプを欠いている何らかの理由、そしてそれを与える方法は何ですか? – InverseFalcon

+0

日付のないこれらのデータは、私が使用しているデータから抽出されます。私はリトリーURLからそれらを作成するので、私はこの情報を持っていません。 もっと正確に言えば、私はこれらの日付がなくてもクエリによって与えられたものとリンクされています。 –

関連する問題