Neo4j-Cypher:加权节点

Neo4j-Cypher:加权节点,neo4j,cypher,Neo4j,Cypher,给定一个电影数据库,其结构如下 (actor:actor)-[:ACTS_FOR { min: x, percent: 0.y }]->(film:film) 这样系统就知道每个演员在屏幕上实际出现的时间,以及对应的电影持续时间的百分比 每个用户都可以对某些演员有偏好(即:从“差”到“棒”或诸如此类)。对于每个首选项,系统都关联到一个修饰符(例如从-100到+100) 我如何查询数据库以返回前十部电影,按每个首选演员修饰符给出的值乘以其在电影中的存在(以%为单位)进行排序?(将0指定给用

给定一个电影数据库,其结构如下

(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