ฉันกำลังดูโครงการตัวอย่างภาพยนตร์ Neo4j: https://github.com/neo4j-examples/movies-java-spring-data-neo4j-4
ตัวอย่างหนึ่งแนะนำนักแสดงร่วมคนใหม่ของ Tom Hanks เช่น ค้นหานักแสดงที่ Tom Hanks ยังไม่เคยร่วมงานด้วย แต่มีนักแสดงร่วมของเขา
แบบสอบถาม:
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
อย่างไรก็ตาม Helen Hunt กลับมาอยู่ในรายชื่อนักแสดงร่วมของ Tom Hanks:
MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors) RETURN coActors.name
และ Tom Hanks กลับมาอยู่ในรายชื่อนักแสดงร่วมของ Helen Hunt:
MATCH (tom:Person {name:"Helen Hunt"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors) RETURN coActors.name
นี่เป็นจุดบกพร่องใน Neo4j หรือในแบบสอบถามที่ให้ไว้ในบทช่วยสอนหรือไม่ หากเป็นข้อบกพร่องในการสืบค้น แบบสอบถามที่ถูกต้องคืออะไร?