给定一个电影数据库,其结构类似于
(actor:actor)-[:ACTS_FOR { min: x, percent: 0.y }]->(film:film)
以便系统知道每个演员在屏幕上的实际存在时间,以及对应的电影持续时间的百分比。
每个用户都可以拥有一些演员的喜好(即:将他们从"坏"到"真棒"或诸如此类)评分。对于每个偏好,系统都与修饰符相关联(例如从-100到+100)。
如何查询数据库以返回前十部电影,按照每部首选演员修饰符给出的值乘以电影上的%(%)进行排名? (给那些在用户偏好中没有演员的电影赋予0。)
实施例
(user)-[:VALUES { modifier: -20 }]->(actor1)
(user)-[:VALUES { modifier: +30 }]->(actor2)
(user)-[:VALUES { modifier: +70 }]->(actor3)
(actor1)-[:ACTS_FOR { percent: 0.2 }]->(film1)
(actor2)-[:ACTS_FOR { percent: 0.3 }]->(film1)
(actor1)-[:ACTS_FOR { percent: 0.5 }]->(film2)
(actor3)-[:ACTS_FOR { percent: 0.1 }]->(film2)
(actor2)-[:ACTS_FOR { percent: 0.4 }]->(film3)
film1 = -20 * 0.2 + 30 * 0.3 = 5
film2 = -20 * 0.5 + 70 * 0.1 = -3
film3 = 30 * 0.4 = 12
ranking:
- film3
- film1
- film2