2016-01-22 45 views
1

我有一个非常大的(几百万个节点和更多的关系)嵌入Neo4J图形数据库。我正在使用Neo4J的2.1.5版本。我经常需要看看如何连接两个节点。我使用GraphAlgoFactory来构建一个PathFinder,然后我调用findSinglePath。如果我构建一个Djikstra的路径查找器,它的运行速度要比节点实际连接时运行ShortestPath路径查找器要慢一个数量级。但是,如果没有连接,ShortestPath将比DJikstra的运行速度慢。有人知道为什么它可能会像这样?Neo4J PathFinder优化

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

回答

0

什么是你的网络的程度分布?

你可以过滤更强的rel-types,方向或属性或节点之间的标签吗?只是为了减少路径的数量?

它也可能有助于使用不同的唯一性,例如,节点全球。

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

Dijkstra和最短路径都是双向的。

您也可以自己使用双向移动器。

看到这个博客帖子:http://maxdemarzi.com/2015/11/20/bidirectional-traversals-in-space/

+0

平均度图中的一个节点可能是某处大约20我在REL-类型,方向和标签尽可能多的已经过滤,因为我可以不破坏的目的遍历。我确实提供了一个长度的上限,虽然它很长。 500.这是一个问题很难解决的情况,所以需要一段时间? – user1389906