Neo4j双向遍历sideselector最大深度
Neo4j bidirectional traversal sideselector max depth
我有一个巨大的密集连接图,我一直在尝试使用 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);
谢谢!
作为部分遍历框架的作者,我想我记得它是关于这样一种场景,其中两侧没有指定它们自己的最大深度,而是在侧选择器中有一个最大深度。这允许更动态的遍历,其中一侧可以比另一侧更深入,比如说,如果与另一侧相比,一侧要遍历的关系更少。这种深度倾斜允许遍历可以完成的情况,而遍历的关系比双方以相同的速率下降时更少。 TraversalShortestPath 使用此功能。
在你的情况下,你应该能够将它设置得足够高以容纳两侧。
我有一个巨大的密集连接图,我一直在尝试使用 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);
谢谢!
作为部分遍历框架的作者,我想我记得它是关于这样一种场景,其中两侧没有指定它们自己的最大深度,而是在侧选择器中有一个最大深度。这允许更动态的遍历,其中一侧可以比另一侧更深入,比如说,如果与另一侧相比,一侧要遍历的关系更少。这种深度倾斜允许遍历可以完成的情况,而遍历的关系比双方以相同的速率下降时更少。 TraversalShortestPath 使用此功能。
在你的情况下,你应该能够将它设置得足够高以容纳两侧。