Neo4j Cypher:加权节点

时间:2014-04-23 16:20:05

标签: neo4j cypher

给定一个电影数据库,其结构类似于

(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

1 个答案:

答案 0 :(得分:1)

我自由地制作了一个图形要点,随意评论或分叉! http://gist.neo4j.org/?11289752