建立人脉关系以及可能认识的人推荐

序言:本节接着上一章<<插入查询用户以及建立关系>>,继续学习Neo4j这门语言.笔者文笔不好尽量用简单的语言来让读者易读易懂,本文的内容都是我在学习的过程中一点点积累的.本文继续介绍建立稍微复杂的关系以及根据某些关系进行一些简单的推荐.

1.建立用户信息

1.1在本例中,我插入9条简单用户并进行数据并查询如下:

CREATE 
(a:User { name: 'Anne', eyeColor: 'blue',uid:'1' }),
(b:User { name: 'Bill', eyeColor: 'brown',uid:'2' }),
(c:User { name: 'Carol', eyeColor: 'blue',uid:'3' }),
(d:User { name: 'Micheal', eyeColor: 'blue',uid:'4' }),
(e:User { name: 'lili', eyeColor: 'brown',uid:'5' }),
(f:User { name: 'libai', eyeColor: 'brown',uid:'6' }),
(g:User { name: 'wangwei', eyeColor: 'brown',uid:'7' }),
(h:User { name: 'yuc', eyeColor: 'brown',uid:'8' }),
(i:User { name: 'Aqy', eyeColor: 'brown',uid:'9' })
WITH a,b,c,d,e,f,g,h,i
MATCH (user:User)
RETURN user

结果是:插入了9条数据,并进行了查询;

1.2 对这9条数据进行关系建立:

1.2.1 先建立一条Friend关系
假设有以下朋友关系:
  • 1.a和b是朋友,a和c是朋友,a和d是朋友;

  • 2.e和b是朋友,e和c是朋友,e和d是朋友,e和f是朋友;

建立关系1:

match (a:User{uid:'1'})
match (b:User)
where b.uid = '2' OR b.uid = '3' OR b.uid = '4'
MERGE (a)-[:Friend]->(b)

结果如下:

image

建立关系2:

match (e:User{uid:'5'})
match (f:User)
where f.uid = '2' OR f.uid = '3' OR f.uid = '4' OR f.uid = '6'
MERGE (e)-[:Friend]->(f)

结果如下:

image

*说明:现在分别以a和e为中心,个各建立了自己的好友关系,比如说类似QQ中的好友推荐功能,a和e有如下共同好友,也就是你可能认识的人,
当然这只是举个例子,并不是QQ就是这个关系网络图:*

1.查询条件分析:
  • 1.查询a的好友

  • 2.和a有共同的好友

  • 3.但是和a不是好友

查询语句如下:

MATCH (a:User{uid:'1'})-[:Friend]-(c:User)-[:Friend]-(b:User) where not (a)-[:Friend]-(b)
return b    

查询结果如下:

image

结果说明:和uid为1的用户也就是我说的用户a有共同的好友,但是和用户a不是好友的用户,查询到的结果是uid为5的用户.

2.查询条件分析:
  • 1.查询为uid为1的用户也就是用户a.

  • 2.查询uid为5的用户,也就是上文查到和a有共同好友但是没有好友关系的用户e.

  • 3.获取用户a和用户e的共同好友.

查询语句如下:

MATCH (a:User{uid:'1'})-[:Friend]-(c:User)-[:Friend]-(b:User{uid:'5'})
return c

结果如下图:

image

备注:转载请注明,请尊重原创者的劳动成果,谢谢配合.
如果有不明白或者有什么建议,欢迎在评论下方留言,我会尽力在第一时间回复的.欢迎大家来共同讨论学习.
### iOS 张袁旭

猜你喜欢

转载自blog.csdn.net/freshmancode/article/details/77530666