繁体   English   中英

在Java中使用gremlin获取两个节点之间的所有路径

[英]Fetching all the paths between two nodes using gremlin in java

嗨,我是gremlin的新手,并试图通过找到两个节点之间的所有路径来实现一些解决方案。 在gremlin控制台上的简单查询中,我可以使用以下查询来做到这一点:

(Name of the first Node).loop(1){it.loops<100}{true}.has('name', (Name of the second node)).path{it.name}

但是,当我试图从java方法中获取它时,我陷入了很多问题,例如:

-不知道将查询准确放在何处? -什么数据结构适合接收行数组。 -如何从图中收集第一个节点和第二个节点。

在这里,我尝试着继续进行,但是没有任何线索:

  Graph g = new OrientGraph(AppConstants.GRAPH_LOCATION);
         List<String> vertexList = new ArrayList<String>();
         try{
             for (Vertex v : g.getVertices()) {
                    String vertexName = v.getProperty("name");
                    vertexList.add(vertexName);
                }    
             return vertexList;
         } catch (final Exception ex) {
             throw new AppSystemException(ex);
         }finally{
             g.shutdown();

谢谢,萨吉尔

您的查询对我来说意义不大,但说明很有帮助。 这是一个使用TinkerGraph来查找markolop之间的所有路径的示例:

final Graph g = TinkerGraphFactory.createTinkerGraph();
List<List> names = new ArrayList<>();
new GremlinPipeline<Vertex, ArrayList<Vertex>>(g).V().has("name", "marko").as("x").out().loop("x",
        new PipeFunction<LoopPipe.LoopBundle<Vertex>, Boolean>() {
            @Override
            public Boolean compute(LoopPipe.LoopBundle<Vertex> loopBundle) {
                return loopBundle.getLoops() < 100;
            }
        }, new PipeFunction<LoopPipe.LoopBundle<Vertex>, Boolean>() {
            @Override
            public Boolean compute(LoopPipe.LoopBundle<Vertex> loopBundle) {
                return "lop".equals(loopBundle.getObject().getProperty("name"));
            }
        }
).has("name", "lop").path(new PipeFunction<Vertex, String>() {
    @Override
    public String compute(final Vertex vertex) {
        return vertex.getProperty("name");
    }
}).fill(names);

然后, names列表将填充以下2个条目:

  1. [Marko,Lop]
  2. [Marko,Josh,Lop]

如果将Groovy转换为Java是最大的问题,则一定要检查一下: 将Gremlin Groovy转换为Gremlin Java

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM