Neo4j:即使在使用上限(* 1..4)之后,在两个节点之间找到简单路径也需要花费很多时间。我不想使用allShortestPath或shortestPath,因为它不会返回所有路径。
Match p=((n {Name:"Node1"}) -[*1..4]-> (m {Name:"Node2"})) return p;
有什么建议让它更快?
答案 0 :(得分:2)
如果您有很多节点,请尝试创建索引,以便neo4j数据库引擎不必搜索每个节点以查找具有正确Name
属性值的节点。
我认为,在您的示例中,n
和m
节点实际上是相同的"类型"节点。如果是这样,那么:
为每个节点(与n
和m
相同类型)添加标签(我将其称为' X')。您可以使用以下内容添加' X'标签到由变量n
表示的节点。您希望在其前面加上适当的MATCH子句:
SET n:X
使用Name
标签在节点的X
属性上创建索引,如下所示:
CREATE INDEX ON:X(名称);
将您的查询修改为:
MATCH p =((n:X {Name:" Node1"}) - [* 1..4] - >(m:X {名称:" Node2" })) 返回p;
如果您执行上述操作,那么您的查询应该更快。