【问题标题】:Neo4j bidirectional traversal sideselector max depthNeo4j双向遍历sideselector最大深度
【发布时间】:2015-07-15 17:13:09
【问题描述】:

我有一个密集连接的巨大图,我一直在尝试使用 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);

谢谢!

【问题讨论】:

    标签: neo4j graph-traversal


    【解决方案1】:

    作为遍历框架部分的作者,我想我记得它是关于一个场景,即你有两个边没有指定它们自己的最大深度,而是在边选择器中有一个最大深度。这允许更多的动态遍历,其中一侧可以比另一侧更深入,例如与另一侧相比,一侧要遍历的关系更少。这种深度偏差允许遍历可以完成的情况,与遍历的关系少于双方以相同的速率下降的情况。 TraversalShortestPath 使用此功能。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      相关资源
      最近更新 更多