Имея график людей, которым нравятся фильмы с рейтингом, я хотел бы извлечь для каждой пары людей фильм с самым высоким рейтингом. Я использую следующий запрос, который требует сортировки фильмов по их рейтингу для каждой пары людей.
MATCH (p1:People) -[:LIKES]-> (m:Movie) <-[:LIKES]- (p2:People) WHERE id(p1) < id(p2)
WITH p1, p2, m ORDER BY m.Rating desc
RETURN p1, p2, head(collect(m) as best
Я могу поместить рейтинг фильма (1/рейтинг или maxRating-рейтинг) в отношения :LIKES, что, следовательно, позволит мне определить, какой фильм имеет наивысший рейтинг у обоих людей.
MATCH (p1:People), (p2:People) call apoc.algo.dijkstra(p1, p2, 'LIKES', 'rating') YIELD path as path, weight as weight return path, weight
Есть ли способ использовать алгоритм, подобный Дейкстре, который находил бы allOptimumPath через узлы с наивысшими оценками, чтобы повысить производительность моего первого запроса и путей возврата, а не их начальных, средних и конечных узлов? Спасибо заранее.