Neo4j:最佳路径搜索

Neo4j:最佳路径搜索,neo4j,cypher,neo4j-apoc,Neo4j,Cypher,Neo4j Apoc,有一张喜欢分级电影的人的图表,我想为每一对人提取他们的最高分级电影。我正在使用下面的查询,它需要根据每对人的电影价格对电影进行排序 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 有没有一种方法可以使用

有一张喜欢分级电影的人的图表,我想为每一对人提取他们的最高分级电影。我正在使用下面的查询,它需要根据每对人的电影价格对电影进行排序

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
有没有一种方法可以使用类似Dijkstra的算法来通过得分最高的节点找到allOptimumPath,从而提高我的第一个查询和返回路径的性能,而不是它们的起始、中间和结束节点?
非常感谢。

这里有一个替代解决方案,它保留路径而不是报告提取的节点

MATCH path=(p1:People) -[:LIKES]-> (m:Movie) <-[:LIKES]- (p2:People) 
WHERE id(p1) < id(p2)
WITH head(nodes(p)) as p1, last(nodes(p)) as p2, path 
ORDER BY m.Rating desc
WITH p1, p2, head(collect(p)) as optPath
RETURN optPath
MATCH path=(p1:People)-[:LIKES]->(m:Movie)
MATCH path=(p1:People) -[:LIKES]-> (m:Movie) <-[:LIKES]- (p2:People) 
WHERE id(p1) < id(p2)
WITH head(nodes(p)) as p1, last(nodes(p)) as p2, path 
ORDER BY m.Rating desc
WITH p1, p2, head(collect(p)) as optPath
RETURN optPath