Optimization Neo4J探路者优化

Optimization Neo4J探路者优化,optimization,neo4j,dijkstra,shortest-path,graph-traversal,Optimization,Neo4j,Dijkstra,Shortest Path,Graph Traversal,我有一个非常大的(几百万个节点和更多的关系)嵌入式Neo4J图形数据库。我使用的是Neo4J的2.1.5版。我经常需要查看两个节点是如何连接的。我使用GraphAlgoFactory构建一个PathFinder,然后在其上调用findSinglePath。如果我构建一个Djikstra的PathFinder,它的运行速度要比在节点实际连接时运行最短路径的PathFinder慢一个数量级。然而,当未连接时,最短路径的运行速度比DJikstra的慢。有人知道为什么会这样吗 另外,如何优化这些调用?当

我有一个非常大的(几百万个节点和更多的关系)嵌入式Neo4J图形数据库。我使用的是Neo4J的2.1.5版。我经常需要查看两个节点是如何连接的。我使用GraphAlgoFactory构建一个PathFinder,然后在其上调用findSinglePath。如果我构建一个Djikstra的PathFinder,它的运行速度要比在节点实际连接时运行最短路径的PathFinder慢一个数量级。然而,当未连接时,最短路径的运行速度比DJikstra的慢。有人知道为什么会这样吗


另外,如何优化这些调用?当两个节点未连接时,需要60-120秒才能找到答案。就我而言,这太慢了。

你们网络的学位分布是什么

您能否根据rel类型、方向或属性或节点之间的标签进行过滤?只是为了减少查看的路径数量

使用不同的唯一性也可能有帮助,例如全局节点

您可能应该提供预期长度的上限

Dijkstra和最短路径实际上都是双向的

您也可以自己使用双向遍历器


请参阅此博文:

您的人际网络的学位分布情况如何

您能否根据rel类型、方向或属性或节点之间的标签进行过滤?只是为了减少查看的路径数量

使用不同的唯一性也可能有帮助,例如全局节点

您可能应该提供预期长度的上限

Dijkstra和最短路径实际上都是双向的

您也可以自己使用双向遍历器


请参阅这篇博文:

图中节点的平均度数可能在20左右。我已经在尽可能多地过滤rel类型、方向和标签,而不破坏遍历的目的。我确实提供了长度的上限,尽管它相当长。500在这种情况下,问题真的很难解决,因此需要一段时间吗?图中节点的平均度数可能在20左右。我已经在尽可能多地过滤rel类型、方向和标签,而不破坏遍历的目的。我确实提供了长度的上限,尽管它相当长。500这个问题真的很难解决,所以需要一段时间吗?