Neo4j 限制cypher查询中查询搜索的路径数,而不是限制

Neo4j 限制cypher查询中查询搜索的路径数,而不是限制,neo4j,cypher,Neo4j,Cypher,我希望查询在找到前10条路径并返回这些路径后立即停止。 但是默认情况下,limit子句查找所有路径,然后只返回前10条路径。 因为在我的例子中,总路径大约是10k到20k,所以这样做是不实际的。 我尝试了以下两个不起作用的问题 match path = (first:Job)-[:PRECEDES*]->(last:Job) where first.name = 'xyz' and last.name = 'abc' return nodes(path) as pathlist matc

我希望查询在找到前10条路径并返回这些路径后立即停止。 但是默认情况下,limit子句查找所有路径,然后只返回前10条路径。 因为在我的例子中,总路径大约是10k到20k,所以这样做是不实际的。 我尝试了以下两个不起作用的问题

match path = (first:Job)-[:PRECEDES*]->(last:Job)
where first.name = 'xyz' and last.name = 'abc'
return nodes(path) as pathlist

match path1 = (first:Job)-[:PRECEDES*]->(middle:Job)
where first.name = 'xyz' 
with middle, path1
match path2 = (middle:Job)-[:PRECEDES*]->(last:Job)
last.name = 'abc'
return nodes(path1),nodes(path2) as pathlist

这两项工作都需要很长时间才能完成。

请确保有一个索引:

CREATE INDEX ON :Job(name)
通过使用neo4j shell中的
PROFILE
检查语句,我发现以下是最便宜的变体:

 MATCH (a:Job {name:'xyz'}), (b:Job {name:'abc'}) 
 MATCH path=(a)-[:PRECEDES*]->(b) 
 RETURN nodes(path) LIMT 10

请注意,我指的是Neo4j 2.1.6。由于Cypher的实现正在稳步发展,即将发布的版本可能已经适当优化了您的语句。

Stephan感谢您的努力。我已经准备好了索引。我试过这个问题。它花了同样的时间。我使用的是2.1.2,问题是limit不会停止查询,在10条路径后停止搜索,而是在查询给出所有可能的结果后,只取前10条路径。(至少这是我的理解)。我希望查询给出前10个结果,然后停止搜索。您能将此查询的概要文件输出粘贴到2.1.2中吗?我在eclipse中运行它。所以实际上我没有得到任何输出…当我这样做时我得到输出-->//for(inti=1;i<50;i++)match path=(b:Job)-[:prefers*“+i+”]->(n:Job)