基于图数据库Neo4j的用户社区发现(二)

构建用户到设备关系

基于用户关联设备入口是注册、登录场景,选择以上两个事件场景建立关联,暂不区分两种关系,使用次数权重。

C:实时消费用户注册、登录事件,通过userId、deviceId关联建立用户到设备的关系【USE】

用户到设备使用关系属于增量累加,无需删除旧关系,cypher语句仅覆盖节点、覆盖关系。用户节点和用户到设备关系同设备按应用类型区分。

用户到设备使用关系

MERGE(a:$UserLabel %s) set a+=%s with a Match(b:$DevLabel %s) MERGE (a)-[r:$rs]-(b) return a,b,r

模式匹配

指定用户通过设备社区关联的用户

Match(u:User{userId:50385890682})-[r:USE]-(d:Device) with d Match p=(d1:Device)-[r1:USE]-(u1:User) where d1.ufGroupId=d.ufGroupId return p

指定用户通过设备社区关联的用户或关联用户设备社区关联的用户

Match(u:User{userId:5038589068})-[r:USE*1..3]-(d:Device) with d Match p=(d1:Device)-[r1:USE]-(u1:User) where d1.ufGroupId=d.ufGroupId return p

用户社区导出

D:通过用户注册,登录事件触发用户社区查询,当用户通过一层设备社区能关联到多个用户时,以设备社区标识为社区id创建社区节点,同时创建关联所有用户的用户节点,并建立用户节点到社区节点的关系。

cypher语句完成该过程,虚拟社区节点和用户节点存在时覆盖,用户所属社区关系增量增加,不删除用户到其他社区关系。(设备社区发生合并,社区查找算法重新执行后社区标识减少,导出到虚拟社区节点不会删除被合并社区,用户还是存在到原有社区的关联关系)

创建用户和社区节点

merge(a:GroupUser{userId:145255454}) set a+={time:154661321212} merge(b:GroupUF{groupId:1234}) set b+={time:154661321212} MERGE (b)-[r:IN_UF]-(a) return b

总结

通过以上设备社区发现及用户+设备模式匹配,并通过实时消息触发,搭建基于用户和设备的实时用户社区挖掘能力,并可根据业务需求加入更多顶点,如:ip、手机号等。同时发挥图库模式匹配及社区算法能力。

  • 25
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

larry_seven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值