Star

社交二度关系查询

譬如一个社交网络,A认识B,B认识C;A和C不认识,是一个可能产生的社交关系。
请问,怎么把这种关系查询出来?也就是 A -> [] -> C.
类似于Graphframes的Motif Finding算法:https://graphframes.github.io/graphframes/docs/_site/user-guide.html#motif-finding。

这个是否可以由路径算法得出呢?计算A -> C之间是否有一个路径,可以参考这里:https://docs.nebula-graph.io/manual-EN/2.query-language/4.statement-syntax/4.graph-algorithms/find-path-syntax/

不可以吧。路径算法,A 和 C是事先确定知晓的。但社交二度关系查询中,C是未知的。

如果B,C都是未知,只能二度查询根据A查询出来的B用户(有可能是多个),继续查询到C(也有可能是多个),目前没有直接的语句支持

go 2 steps 语法:

GO 2 STEPS FROM 103 OVER follow;

嗯,似乎目前也只能在客户端做两步查询,然后在做数据筛选了。

GO 2 STEPS是可以查出2度关系出来,但不能排除掉跟A已建立关系的状况。
不知能不能加入一个NOT IN subQuery之类的语法?

嗯,我们已经收集了记录这个需求

这个就是一个典型的好友推荐场景,是可以用query组合出来的——我稍后写一下。

但是现在没有 Cypher not in path 那种语法糖。

1 Like
GO 2 STEPS OVER friendship FROM user_a \
MINUS\
GO OVER friendship FROM user_a \
YIELD ...

多谢。我回头试一下。