首页 > 解决方案 > 如何找到与其他顶点共享许多连接的顶点

问题描述

我是 gremlin api 的新手,我想问一个有趣的用例。

我有一个如下所示的图表

(Article1)-[refers_to]->(Company1)<-[refers_to]-(Article2) 
(Article1)-[refers_to]->(Person1)<-[refers_to]-(Article2)
(Article1)-[refers_to]->(Person2)<-[refers_to]-(Article2) 
..
(Article1)-[refers_to]->(Company1)<-[refers_to]-(Article3)
..

我的目标是识别与“Article1”类型的另一个顶点具有多个 X 顶点的“Article”类型的顶点。

关于前面的示例: - 我将获得 {Article1,Article2} 作为具有超过 2 个(在本例中为 3 个)公共索引的元组 - 我将排除 {Article1,Article3} 因为该元组仅共享 1 个公共顶点。

对这个任务有什么建议吗?

谢谢罗伯

标签: gremlin

解决方案


假设Article1/Article2ids顶点,refers_tolabel边:

g.V('Article1').as('source').out('refers_to').as('middle_v').in('refers_to').where(neq('source')).as('target').select('middle_v', 'target').groupCount().by(select('target')).unfold().where(select(values).is(gt(2)))

推荐阅读