【发布时间】:2016-06-30 13:57:58
【问题描述】:
我正在查看 Neo4j 电影示例项目: https://github.com/neo4j-examples/movies-java-spring-data-neo4j-4
其中一个例子为汤姆汉克斯推荐了新的合作演员,即 查找汤姆·汉克斯尚未合作过但与他的合作演员合作过的演员。
查询:
MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors),
(coActors)-[:ACTED_IN]->(m2)<-[:ACTED_IN]-(cocoActors)
WHERE NOT (tom)-[:ACTED_IN]->(m2)
RETURN cocoActors.name AS Recommended, count(*) AS Strength ORDER BY Strength DESC
前 3 个结果是: 推荐强度 汤姆克鲁斯 5 扎克·格雷尼尔 5 海伦亨特 4
但是海伦·亨特却在汤姆·汉克斯的合作演员名单中回归:
MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors) RETURN coActors.name
汤姆汉克斯又回到了海伦亨特的合作演员名单中:
MATCH (tom:Person {name:"Helen Hunt"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors) RETURN coActors.name
这是 Neo4j 中的错误还是教程中给出的查询中的错误? 如果是查询中的错误,那么正确的查询是什么?
【问题讨论】:
-
你在哪里看到这个查询?我似乎在 movies-java-spring-data-neo4j-4 存储库中找不到它