Fixed length path between two nodes without knowing relationship type

257 views Asked by At

I want to find paths of a certain length between two nodes - but I don't know what relationships are involved. The tutorials and examples seems to require I know what type of relationship I want to use. E.g.

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

I want to ask the graph:

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

But Neo4J seems to hang (I have 600,000 nodes / 1.3m relationships). How can I find paths of a certain length between two nodes, in a performant manner, provided I have no information about the relationships?

Thanks

1

There are 1 answers

2
Christophe Willemsen On

First of all, this is not surprising it is really slow. Since Neo4j2.0, the use of labels is almost mandatory for performance reasons.

So make sure to use labels + an indexed property at least for matching your first node.

Secondly, you can just match paths of fixed length without knowing the relationship types.

Assuming your "Martin Sheen" node has a label Person :

Create index for Person/name :

CREATE INDEX ON :Person(name);

Match the person and the path

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