当我使用.both时,GremlinPipeline返回重复的节点

时间:2014-02-17 14:42:46

标签: java gremlin titan

我使用Titan Graph Database(0.4.1版本)。我有一个有向图,我试图找到一个节点的邻居。我使用GremlinPipeLine和以下代码:

GremlinPipeline<String, Vertex> pipe = new GremlinPipeline<String, Vertex>(vertex).both("similar");

我认为这是因为如果我有一个有向图的边缘列表

1   32
32  1

上述函数返回节点32两次。有没有办法用GremlinPipeline过滤这个或者我应该手动完成吗?

P.S。找到节点的邻居的任何其他方式也被接受。

1 个答案:

答案 0 :(得分:0)

您可以使用dedup和地图来执行某种Gremlin DISTINCT - 就像等效查询一样:

GremlinPipeline<String, Vertex> pipe = new GremlinPipeline<String, Vertex>(vertex).both("similar").dedup(new PipeFunction<Vertex,String>() {
  public String compute(Vertex vertex) {
    return vertex.id;
  }
}).back(1);

最后一个返回给你的both调用应该有同样的结果。