У меня есть этот запрос
MATCH
(user:Users)-[watched:WATCH]->(movie1:MOVIES)<-[watches_too:WATCH]-(user2:Users)-[watches_other:WATCH]->(movie2:MOVIES)
where
movie1.genre = "action" and
movie1.title <> movie2.title and
movie1.subgenre = movie2.subgenre and
watched.date >= date({year: 2020, month: 06, day: 01}) and
watches_too.date >= date({year: 2020, month: 06, day: 01})
RETURN
user.id, movie2.title
LIMIT 100;
Этот запрос работает, но он просто возвращает заголовок фильма2 почти без значения, поэтому я попробовал другой подход
MATCH
(user:Users)-[watched:WATCH]->(movie1:MOVIES)<-[watches_too:WATCH]-(user2:Users)-[watches_other:WATCH]->(movie2:MOVIES)
where
movie1.genre = "action" and
movie1.title <> movie2.title and
movie1.subgenre = movie2.subgenre and
watched.date >= date({year: 2020, month: 06, day: 01}) and
watches_too.date >= date({year: 2020, month: 06, day: 01})
RETURN
user.id, movie2.title, count(movie2) as ocurrence
ORDER BY user.id, ocurrence DESC
LIMIT 100;
Таким способом я попробовал чтобы получить наиболее просматриваемый mov ie другими пользователями, которые также смотрели тот же mov ie, но хотя первый запрос возвращает мне результаты в секундах, второй запрос занял почти 2 часа, чтобы завершить sh
Неправильно ли я выполняю агрегирование?
Кроме того, при этом результаты были такими, как 50 результатов для 1 пользователя и 50 для другого, если бы я хотел ограничить его до 2-3 фильмов на пользователя?
Спасибо за помощь