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 使用此功能。

在你的情况下,你应该能够将它设置得足够高以容纳两侧。