我想检索特定数量的随机节点.该图由3 000 000个节点组成,其中一些是源,一些是目标,一些是两者.
目的是检索随机源,因为我不知道如何选择随机,程序生成k个随机数,从1到3 000 000,代表节点ID,然后丢弃所有随机选择的非源的节点.由于此过程非常耗时,我想知道是否可以使用密码查询直接选择随机源.
如果要选择所有源,则查询将如下所示
START t = node(*)MATCH(a) - [:LEADS_TO] - >(t)返回a
有谁知道如何直接用密码选择有限数量的随机节点,或者,如果不可能,建议任何解决方法?
谢谢!
Luk*_*ach 14
你可以使用这样的结构:
MATCH (a)-[:LEADS_TO]->(t)
RETURN a, rand() as r
ORDER BY r
Run Code Online (Sandbox Code Playgroud)
它应该返回随机的对象集.
用Neo4j 2.1.3测试
您可以使用跳过/限制来限制查询,这样就可以了
START t=node(*)
MATCH (a)-[:LEADS_TO]->(t)
RETURN a
SKIP {randomoffset} LIMIT {randomcount}
Run Code Online (Sandbox Code Playgroud)
否则,您还可以创建一组随机node-id并将它们作为参数传递给cypher语句.