构建用户到设备关系
基于用户关联设备入口是注册、登录场景,选择以上两个事件场景建立关联,暂不区分两种关系,使用次数权重。
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、手机号等。同时发挥图库模式匹配及社区算法能力。