我有一个密集连接的巨大图形,我一直在尝试使用Neo4j的双向遍历框架在两个节点之间进行有效的路径发现。如果有人能解释maxDepth在sideSelector方法中扮演的角色,我将不得不承担责任。我能找到的唯一解释是在javadoc中,它对我来说非常模糊。 javadoc中的描述:maxDepth - 侧选择器的可选最大深度参数。为什么最大深度是SideSelector的关注点?因为它在任何给定点都了解遍历的两个方面。
深度知识如何影响SideSelector?
我目前的代码如下:
BidirectionalTraversalDescription description = graphDb.bidirectionalTraversalDescription().
startSide(graphDb.traversalDescription()
.depthFirst()
.uniqueness(Uniqueness.NODE_PATH)
.expand(new RelsPathExpander(xxxx))
.evaluator(Evaluators.toDepth(3))).
endSide(graphDb.traversalDescription()
.depthFirst()
.uniqueness(Uniqueness.NODE_PATH)
.expand(new RelsPathExpander(xxxx))
.evaluator(Evaluators.toDepth(3)))
.collisionEvaluator(new Evaluator() {
@Override
public Evaluation evaluate(Path path) {
return Evaluation.INCLUDE_AND_CONTINUE;
}
}).sideSelector(SideSelectorPolicies.LEVEL, 100);
谢谢!
答案 0 :(得分:1)
作为遍历框架的一部分的作者,我想我记得它是关于一个双方没有指定自己的最大深度的情况,而是在那里有一个最大深度侧选择器。这允许更多的动态遍历,其中一方可以比另一方更深,例如,与另一方相比,一侧的关系较少。这种深度偏斜允许遍历可以完成与遍历的关系较少的情况,而不是双方以相同的速率下降。 TraversalShortestPath使用此功能。
在您的情况下,您应该能够将其设置得足够高以容纳双方。