Titan:过滤连接的顶点

时间:2014-05-15 07:35:33

标签: titan

我正在使用Titan使用JAVA。我有以下情况:

有帖子顶点,很多用户在这个帖子上写评论,同一个用户可以在帖子上发表多条评论。

U(email, name, sex)

我需要做的是,如果发布任何新评论,我必须向所有评论者发送通知。

现在问题是如何过滤用户,即如果有

这样的情况
U1 ------COMMENTED ----------> POST
U2 ------COMMENTED ----------> POST
U3 ------COMMENTED ----------> POST
U1 ------COMMENTED ----------> POST

如果发布了新评论,则应将通知发送至U1 U2 U3。现在,如果我遍历传入边COMMENTED,它会两次获取U1。但我只需要U1一次只是为了收到他们的电子邮件。我怎样才能实现

1 个答案:

答案 0 :(得分:2)

我知道您的问题是关于Java的,但下面的Gremlin Groovy会话演示了这种方法。一种方法是使用dedup步骤。

http://gremlindocs.com/#filter/dedup

这将确保U1仅在该步骤之后存在一次,如下所示:

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.V.out.in
==>v[4]
==>v[6]
==>v[1]
==>v[1]
==>v[1]
==>v[4]
==>v[6]
==>v[1]
==>v[4]
==>v[4]
==>v[6]
==>v[1]
gremlin> g.V.out.in.dedup
==>v[4]
==>v[6]
==>v[1]

或者,您可以将所有用户都写入Set

gremlin> x = [] as Set
gremlin> g.V.out.in.fill(x);null
==>null
gremlin> x
==>v[4]
==>v[6]
==>v[1]