基于社交图谱的多层关系挖掘推荐

版权声明:所有文章均为作者的学习笔记以及技术点整理,如果对您有帮助,请点个赞:) https://blog.csdn.net/superman_xxx/article/details/89316413

一、需求分析

1、推荐功能

根据多层人员互动类关系,推荐社交联系最紧密的前N个人。

2、亲密度衡量标准

通过互动类关系统计。

3、实现思路

1、从查询路径获取关系变量R单独过滤PATH(自定义过滤函数)
2、收集结果节点NODES并分别统计目标节点与源节点的社交关系数量(分组统计)
3、更新关系数量到目标节点
4、对目标节点排序输出生成推荐结果

二、案例测试

recommendPersonCommunicationNum属性表示当前源节点到各个目标节点可经过的路径数量。

1、准备样例数据

样例数据两层以内,路径数量116688条。
在这里插入图片描述

2、构建查询

针对两层内关系构建查询。

# CONSUM:三分钟内无结果
PROFILE
MATCH (n)-[:发出推荐|:技能背书人|:关注|:点赞|:评论|:发帖|:转推|:发推]-(m) WHERE id(n)=1959 AND zdr.apoc.relatCalculateRestrict(labels(m),labels(m),'LinkedinID||TwitterID||FacebookID||现实人员')=true WITH n,count(*) AS oneCount,id(m) AS oneId
MATCH (n)-[:发出推荐|:技能背书人|:关注|:点赞|:评论|:发帖|:转推|:发推]-()-[:发出推荐|:技能背书人|:关注|:点赞|:评论|:发帖|:转推|:发推]-(f) WHERE  zdr.apoc.relatCalculateRestrict(labels(f),labels(f),'LinkedinID||TwitterID||FacebookID||现实人员')=true WITH oneCount,oneId,count(*) AS twoCount,id(f) AS twoId
MATCH (one) WHERE id(one)=oneId SET one.recommendPersonCommunicationNum=oneCount WITH one,twoCount,twoId
MATCH (two) WHERE id(two)=twoId SET two.recommendPersonCommunicationNum=twoCount WITH one,two
WITH collect(one) AS oneList,collect(two) AS twoList
WITH zdr.apoc.mergeNodes([oneList,twoList]) AS nodes
UNWIND nodes AS node
RETURN node ORDER BY node.recommendPersonCommunicationNum DESC SKIP 0 LIMIT 10

在这里插入图片描述

3、优化

可支持两层以上关系,构建更优的查询。

# CONSUME:4s~5s
# 直接使用r变量:
MATCH (n)-[r*..2]-(m) WHERE id(n)=22 AND zdr.apoc.targetNodesRelasFilter(r,['发出推荐','技能背书人','关注','点赞','评论','发帖','转推','发推'],m,['LinkedinID','TwitterID','FacebookID','现实人员'])=true WITH m,count(r) AS count SET m.recommendPersonCommunicationNum=count RETURN m ORDER BY m.recommendPersonCommunicationNum DESC SKIP 0 LIMIT 10
# 使用relationships函数:
MATCH p=(n)-[*..2]-(m) WHERE id(n)=22 AND zdr.apoc.targetNodesRelasFilter(relationships(p),['发出推荐','技能背书人','关注','点赞','评论','发帖','转推','发推'],m,['LinkedinID','TwitterID','FacebookID','现实人员'])=true RETURN m.name,count(p) AS count SET m.recommendPersonCommunicationNum=count RETURN m ORDER BY m.recommendPersonCommunicationNum DESC SKIP 0 LIMIT 10

在这里插入图片描述
在这里插入图片描述

扫描二维码关注公众号,回复: 5995186 查看本文章

猜你喜欢

转载自blog.csdn.net/superman_xxx/article/details/89316413