两个节点之间的固定长度路径,不知道关系类型

时间:2015-06-19 16:41:16

标签: neo4j cypher graph-databases

我想在两个节点之间找到一定长度的路径 - 但我不知道涉及哪些关系。教程和示例似乎要求我知道我想要使用什么类型的关系。 E.g。

MATCH (martin { name:"Martin Sheen" })-[:ACTED_IN*1..3]-(x)
RETURN x

我想问一下图表:

MATCH (martin { name:"Martin Sheen" })-[:3..3]-(x)
RETURN x

但是Neo4J似乎挂了(我有600,000个节点/ 1.3米的关系)。如果我没有关于关系的信息,我怎样才能以高效的方式在两个节点之间找到一定长度的路径?

由于

1 个答案:

答案 0 :(得分:3)

首先,这并不奇怪它真的很慢。从Neo4j2.0开始,出于性能原因,几乎必须使用标签。

因此,请确保至少使用标签+索引属性来匹配您的第一个节点。

其次,您可以在不知道关系类型的情况下匹配固定长度的路径。

假设您的“Martin Sheen”节点有一个标签Person:

为人物/名称创建索引:

CREATE INDEX ON :Person(name);

匹配此人和路径

MATCH p=(martin:Person {name:"Martin Sheen"})-[*3..3]->(x)
RETURN p