0

图形数据库的新手,并尝试使用 Neo4j 博客中的示例在 Java 中创建 ACL:

访问控制列出图数据库方式

问题出在提供的 ruby​​ 代码中:

#Here's our function to check the distance between principals (and to see if they're on the same path at all).
def depth_of_principal( principal, reference_principal )
  result = reference_principal.outgoing( :IS_MEMBER_OF_GROUP ).depth( :all ).path_to( principal )
  return result.nil? ? nil : result.size
end

我应该在java中使用最短路径算法,还是我弄错了?将它移植到java的正确方法是什么?

        PathFinder<Path> finder = GraphAlgoFactory.shortestPath(Traversal.expanderForTypes(RelTypes.IS_MEMBER_OF_GROUP, Direction.OUTGOING), maxDepth);
        Path path = finder.findSinglePath(principal, referencePrincipal);

不适合的一件事是 maxDepth,但由于我的路径不会超过 15,我想应该可以吗?

4

1 回答 1

0

当然,为此使用最短路径(因为您确实在寻找这两个主体之间的最短路径)是合适的。您可以在这里将最大深度视为安全网,这样您的遍历就不会变得疯狂。

于 2013-08-21T14:00:14.140 回答