У меня есть следующий запрос для получения 2 лучших статей (с точки зрения количества ссылок) каждого исследования для исследователей:
MATCH (p:Paper)-[:SUBMITTED_TO]->(a:Proceeding),(p)-[:CITED_BY]->()
WITH p.paperTitle as Paper, size((p)-[:CITED_BY]->()) as numCitations,
collect(distinct a.proceedingName) as Proceedings
UNWIND Proceedings AS Proceeding
WITH Paper, numCitations, Proceeding
ORDER BY Paper, numCitations, Proceeding
RETURN Paper, numCitations, collect(Proceeding) as Proceedings
ORDER BY Proceedings, numCitations DESC
Вывод, который я получаю из этого:
Paper numCitations Proceedings
Title1 4 Proc1
Title2 3 Proc1
Title3 2 Proc1
Title4 7 Proc2
Title5 5 Proc2
Title6 3 Proc2
Title7 8 Proc3
Title8 4 Proc3
Title9 2 Proc3
То, что я хочу сделать сейчас, - это получить только 2 верхних из всех документов, которые появляются для каждого процесса (три для всех), но если я использую LIMIT 2 в концеиз запроса, я получаю только 2 верхних из всех (не для каждого процесса):
Paper numCitations Proceedings
Title7 8 Proc3
Title4 7 Proc2
Обратите внимание, что Proc1 был полностью отброшен.Это не то, что я ищу.Любые идеи о том, как сделать это в Neo4j?
Спасибо!