有没有一种默认的方法只匹配前n个关系,而不是稍后在LIMIT n
过滤呢?
我有这个查询:
START n=node({id})
MATCH n--u--n2
RETURN u, count(*) as cnt order by cnt desc limit 10;
假设
n--u
关系的数量非常高,我想放宽此查询,并随机选择前100个关系,然后继续使用u--n2...
。这是为协同过滤任务而设计的,假设用户之间相似度较高,我不想匹配所有用户
u
,而是一个随机子集。这种方法应该具有更快的性能 - 现在我的查询时间约为500毫秒,但希望将其降低到50毫秒以下。我知道我可以将上述查询分为两个单独的查询,但仍然在第一个查询中遍历所有用户,然后在稍后限制输出。我想在
match
阶段限制最大关系数。
limit 10
会限制所有找到的u
,因此仍在处理我不想要的u
。或者有什么变化,Cypher 解析器现在不再遍历所有关系,而是只解析前10个吗? - ulkaslimit 10
应该使遍历器在找到前10个u
后停止。它不应该处理所有可能的u
。如果您怀疑它正在处理超过它应该处理的内容,您应该向neo4j提交错误报告。 - ean5533