通过聚合

时间:2016-12-05 08:38:06

标签: neo4j

假设我们有经典的电影模型,人们可以观看电影。

(u:USER) -[:WATCHED] ->(m:Movie)

如果我想为某位用户找到观看过最相似电影的用户,我会这样做:

match (u:USER{id:"MYUSERID"})-[:WATCHED] ->(m:Movie)
with m
match (m)<-[r:WATCHED]-(o)
with m, count(r) as count, o
order by count
return o limit 10

但是,通过这样做,我想所有观看至少一个主要用户的电影的用户,这意味着在500万用户的数据库中,如果主要用户观看了MATRIX,我们将不得不遍历所有用户500万用户,聚合然后排序(假设所有人都看过它)。

我认为这种请求会非常缓慢。

是否有一种棘手的方法可以做到不同,即使改变模型也是如此?

0 个答案:

没有答案