Fixed length path between two nodes without knowing relationship type

280 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 best solutions below

2
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