是否有一个默认的方式如何匹配只有前n个关系,除了在LIMIT n
以后过滤?neo4j - 如何匹配只有前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
阶段限制最大值。
对,但恐怕第一个“限制10”确实限制了所有发现的“u”因此仍在处理我不想要的东西。或者有什么变化,并且密码分析器现在没有经过所有的关系,但真的只解析前10个? – ulkas 2013-04-26 13:05:59
第一个“限制10”应该导致移动者在找到前10个“u”后停下来。它不应该处理所有可能的'u's。如果您怀疑它正在处理的比应该更多,那么您应该向neo4j提交一个错误。 – ean5533 2013-04-26 14:55:51