2016-10-21 11 views
0

と帰りのコレクションをここで卒業証書サイファー:ユニークなノード

MATCH (diploma:Diploma)-->(w:Word) 
RETURN DISTINCT w, COLLECT(diploma) as diplomas, COUNT(diploma) as nb_diplomas 
ORDER BY nb_diplomas DESC 

の彼らのコレクションと明確な言葉を返すクエリがあります(編集:オプションMATCHを削除し、COUNTのディプロマの代わりに、ユーザーを使用して、再開を削除)

ディプロマにはいくつかの単語が含まれ、いくつかのコレクションに表示されます。 最初のコレクションでは、ほとんどのディプロマ・ノードを含むコレクションを意味します。

+0

「OPTIONAL MATCH」は残りのクエリとはまったく別物です。 'result_node'はあなたがすでにマッチしたものと思われますか? –

+0

result_nodeは実際に卒業証書です(私はすでにマッチしました)。申し訳ありません – armedwing

+0

'nb_users'はここの' Word'から完全に独立しています。 ':Diplom 'は':Word'に関係なく、同じ数のユーザーに適用されるため、基本的にはナンセンスを返すでしょう。おそらく '(w:Word)< - (ltr:Resume)'を代わりに意味しましたか? –

答えて

1

は、あなたの提案のためにあなたを@InverseFalcon感謝私は最終的にUNWIND関数のおかげで自分の道を見つけました。

MATCH (diploma:Diploma)-->(w:Word) 
WITH DISTINCT w, COLLECT(diploma) AS diplomas 
WITH w, diplomas, LENGTH(diplomas) as nb 
ORDER BY nb DESC 
UNWIND diplomas as diploma 
WITH DISTINCT diploma, HEAD(COLLECT(w)) as w, MAX(nb) as nb 
WITH DISTINCT w, COLLECT(diploma) as diplomas 
WITH w, diplomas, LENGTH(diplomas) as nb 
ORDER BY nb DESC 
RETURN w, diplomas, nb 
0

したがって、ディプロマは多くの:Wordsと関連していますが、卒業証書で最も頻繁に使用されている単語、次にそれぞれの行を出力する:ワードとその関連:前にフィルタリングされた頻度に基づく卒業証書?

MATCH (diploma:Diploma)-->(w:Word) 
WITH diploma, w, COUNT(w) as frequency 
WITH diploma, w 
WHERE frequency = MAX(frequency) 
RETURN w, COLLECT(diploma) as diplomas, COUNT(diploma) as nb_diplomas 
ORDER BY nb_diplomas DESC 

卒業証書で同じ最大数を持つ複数の単語がある場合は、その卒業証書は両方の単語に関連付けされることに注意してください、そして両方のコレクションに表示されます。

これは良いスタートかもしれ最後に。必要であれば、あなたは、クエリの途中でのようなものを、それらの最大の単語のコレクションの頭を選択する必要がありますことを回避するために

MATCH (diploma:Diploma)-->(w:Word) 
WITH diploma, w, COUNT(w) as frequency 
WITH diploma, w 
WHERE frequency = MAX(frequency) 
WITH diploma, COLLECT(w) as words 
WITH diploma, HEAD(words) as w 
RETURN w, COLLECT(diploma) as diplomas, COUNT(diploma) as nb_diplomas 
ORDER BY nb_diplomas DESC 
+0

が近くに鳴ります。私は 'WHERE frequency = MAX(frequency)'に無効な構文エラーがあります。私は '卒業証書付き、w、MAX(frequency)を周波数として試しました。'動作しますが、期待される結果をもたらしません – armedwing

関連する問題