我有一本關於書籍,章節和字符的圖表。書籍包含章節,章節提及字符。我想寫一個查詢,向我顯示出現在大多數書籍中的10個字符以及它們出現的書籍。查詢以顯示Neo4j中的二級(間接)關係
假設我的問題稍微簡單一些,我可以輕鬆地編寫一個查詢,向我顯示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
這個查詢看起來做工精細,但它只是報告一串字符和書籍的沒有任何關係,因爲沒有直接書和人物之間的關係。可以推斷的Neo4j這些間接的關係,並顯示在查詢中沒有我不得不修改數據,並手動將每個圖案
(book)-[:CONTAINS]->(chapter)-[:MENTIONS]->(character)
一種新的關係
(book)-[:TALKS_ABOUT]->(character)
?
查詢結果中需要哪種類型的關係? –
我有點困惑......你的查詢結果應該顯示一個角色和他們出現的圖書集合,這些圖書是按照他們出現的圖書的數量排序的(儘管你可能需要「COLLECT(DISTINCT book )作爲書籍來擺脫收藏中的重複)。你說它沒有任何關係地報道人物和書籍,但顯然有間接的關係,你的匹配就證明了這一點。結果中的哪些不適合你? – InverseFalcon
@stdob:我需要一種不在模型中的關係,並且我希望避免手動添加,正如我在最後一段中的示例中所述。這種關係應該顯示人物和書籍之間的聯繫。 – st1led