[英]neo4j Cypher Query Explain result
我试图在给定的neo4j测试数据集中找到“朋友的朋友”级别的推荐,但我提出了这两个查询,由于第二个查询包含一个额外的节点-'8'(埃米尔·埃弗雷姆(Emil Eifrem)。 请帮助我了解区别。 谢谢
1)
MATCH (keanu:Person {name:"Keanu Reeves"})-[:ACTED_IN]->()<-[:ACTED_IN]-(f),
(f)-[:ACTED_IN]->()<-[:ACTED_IN]-(fof)
WHERE NOT (keanu)-[:ACTED_IN]->()<-[:ACTED_IN]-(fof) AND fof <> keanu
RETURN fof;
VS
2)
MATCH (keanu:Person {name:"Keanu Reeves"})-[:ACTED_IN]->(movie)<-[:ACTED_IN]-(f),
(f)-[:ACTED_IN]->(f_movies)<-[:ACTED_IN]-(fof)
WHERE NOT (movie)<-[:ACTED_IN]-(fof) AND fof <> keanu
RETURN fof;
您在第二个WHERE子句中引用的电影是之前在MATCH子句中匹配的一部具体电影,因此,您只检查该单个电影,而不检查fof和Keanu Reeves之间的所有潜在电影。 这就是为什么您过滤掉更少的人的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.