書籍、チャプター、および文字を含むグラフがあります。書籍には章が含まれ、章には文字が含まれています。ほとんどの書籍に表示される10文字とその中に登場する書籍を表示するクエリを書いてみたいと思います。Neo4jで2次(間接)関係を表示するクエリ
私の問題は少しシンプルであるとすれば、私は10文字ほとんどの章に表示されます:
MATCH (chapter)-[:MENTIONS]->(character)
RETURN character,
COLLECT(chapter) as chapters
ORDER BY SIZE(chapters) DESC
LIMIT 10
上記のクエリはうまくいきます。今、私はむしろ章よりも本を示して同様のクエリを記述しようとしています:
MATCH (book)-[:CONTAINS]->(chapter)-[:MENTIONS]->(character)
RETURN character,
COLLECT(book) as books
ORDER BY SIZE(books) DESC
LIMIT 10
このクエリは正常に動作するようだが、何の直接のがないので、それだけで、任意の関係なしに文字や書籍の束を報告します本と文字の関係。これらの間接的な関係を推測し、私はデータを変更し、手動で各パターン
(book)-[:CONTAINS]->(chapter)-[:MENTIONS]->(character)
新たな関係
(book)-[:TALKS_ABOUT]->(character)
のために挿入することなく、クエリでそれらを表示のNeo4jはできますか?
クエリの結果としてどのような関係が必要ですか? –
私はちょっと混乱しています...あなたの質問の結果は、キャラクターと登場した本のコレクションを、彼らが登場した本の数によって順番に表示されるべきです(しかし、あなたは 'COLLECT(DISTINCT book )あなたのコレクションの重複を取り除くために書籍として)。あなたは関係なく、文字と本を報告していると言いますが、あなたの試合で証明されているように間接的な関係があります。結果はあなたのために働いていないのですか? – InverseFalcon
@stdob:モデルにない種類の関係が必要です。最後の段落の例で説明したように手動で追加することは避けたいと考えています。関係は、文字と本の間のリンクを示すはずです。 – st1led