查看来自GrandStack电影研讨会https://github.com/grand-stack/grand-stack-movies-workshop/blob/master/neo4j-database/answers.md的示例
这里推荐的电影查询
MATCH (m:Movie) WHERE m.movieId = $movieId
MATCH (m)-[:IN_GENRE]->(g:Genre)<-[:IN_GENRE]-(movie:Movie)
WITH m, movie, COUNT(*) AS genreOverlap
MATCH (m)<-[:RATED]-(:User)-[:RATED]->(movie:Movie)
WITH movie,genreOverlap, COUNT(*) AS userRatedScore
RETURN movie ORDER BY (0.9 * genreOverlap) + (0.1 * userRatedScore) DESC LIMIT 3
这个查询会不会有偏差,因为它只会计算与Id为$movieId的电影至少有一个流派的电影的userRatedScore?
独立计算这两个分数的重写查询会是什么样子,这意味着它仍然会计算给定电影的userRatedScore,即使它不与Id为$movieId的电影共享类型
发布于 2019-11-01 18:36:38
如果你想忽略Genre提供的权重,那么你可以去掉查询中寻找它的部分,比如:
MATCH (m:Movie) WHERE m.movieId = $movieId, (m)<-[:RATED]-(:User)-[:RATED]->(movie:Movie)
WITH movie, COUNT(*) AS userRatedScore
RETURN movie ORDER BY (0.1 * userRatedScore) DESC LIMIT 3
https://stackoverflow.com/questions/58649577
复制相似问题