概述
基于社交图谱的多层关系挖掘推荐
- 一、需求分析
- 1、推荐功能
- 2、亲密度衡量标准
- 3、实现思路
- 二、案例测试
- 1、准备样例数据
- 2、构建查询
- 3、优化
一、需求分析
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
最后
以上就是喜悦山水为你收集整理的基于社交图谱的多层关系挖掘推荐一、需求分析二、案例测试的全部内容,希望文章能够帮你解决基于社交图谱的多层关系挖掘推荐一、需求分析二、案例测试所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复