ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

基于Neo4j图数据库的社交推荐系统研究与实现

2021-01-26 14:04:09  阅读:266  来源: 互联网

标签:功能 数据库 用户 兴趣 关注 Neo4j 动态 社交 节点


这是一个课程设计项目,要求研究一下非关系数据库,这里选用的是neo4j图数据库,查阅资料发现neo4j经常被用作社交的推荐系统,故简单设计了一个社交推荐系统并实现。

开发环境和框架

  • 系统:Ubuntu 18.04 LTS
  • IDE:JetBrains Intelij IDEA
  • 语言:Java 1.8
  • 框架:SpringBoot 2.4.1,Thymeleaf,Bootstrap
  • 交互技术:ajax

实现的功能

给用户提供一个与相同爱好者交流联系的平台,系统会通过你的标签,对哪些更加有兴趣,经过好友推荐的算法自动推荐更多与你兴趣相投,志同道合的人。同时,用户可以知道你关注的人对哪些方面感兴趣,以及感兴趣程度,还可以看到他所关注的人,进一步扩展社交圈子,与更多的人交流来往,了解更多的知识,发现更多自己以往不了解的趣事。

功能列表:

(1)实现登录,注册功能
(2)显示关注、被关注用户
(3)通过自定义标签显示兴趣一样的用户
(4)通过共同好友推荐可能认识的人
(5)发布与兴趣关联的动态
(6)可以看到关注兴趣下的动态
(7)可以给其他用户动态点赞,并以此为依据推荐到最常互动的结果中
(8)完成图形化交互界面

功能介绍
系统功能功能概述
注册注册用户名密码用来登录社交平台
登录输入用户名密码登录个人社交平台
首页查看好友动态、关注自己的人、自己关注的人等
朋友推荐-可能认识的人自己关注的人再关注的人而自己未关注的人
朋友推荐-最常互动的人给自己动态点赞的,而自己没关注对方的人
朋友推荐-趣味相投的人关注了相同的兴趣部落,但是未关注对方的人
兴趣部落创建或关注相关的兴趣部落
发现动态-发布动态设置相关兴趣发布个人动态
发现动态-推荐动态关注的兴趣部落的发布动态
发现动态-好友动态关注的好友发布的动态

数据库设计

1 节点

  • 用户 User:{id, name, age, sex, password, address, sign}
  • 爱好 Hobby:{name,htype}
  • 动态 Share:{content,imgurl, time, address, title}

2 关系

  • 关注 Follow:{time}:
    用户节点与用户节点之间(可以单向连接,也可以双向连接);
  • 喜欢 Like:{count}:
    用户节点与兴趣节点之间的关系(从用户节点双向连接到兴趣节点);
  • 发布 Publish:{image,text, location}:
    用户节点与动态节点之间的关系(从用户节点单向连接到动态节点);
  • 点赞 Praise:{time}:
    用户节点与动态节点之间的关系(从动态节点单向连接到用户节点)。

3 相关节点与关系图示

  • 人际关系图
    在这里插入图片描述
  • 用户与爱好之间的关系图
    在这里插入图片描述
  • 用户,动态之间的发布,点赞关系图
    在这里插入图片描述
  • 网络全貌
    在这里插入图片描述

运行展示

  • 注册界面

    对于对每个用户,我们将唯一的 account 作为标识用户的标识符,而在展示的过程中为了方便,我们允许用户设置相同的昵称,同时我们也设置邮箱,这是为了方便后续我们添加密码找回功能。
    在这里插入图片描述

  • 登录界面

    登录界面用于登录用户,输入用户名密码即可登录自己的账户进行管理。
    在这里插入图片描述

  • 首页界面

    首页通过界面展示自己关注的人,关注自己的人,可能认识的人,相同兴趣等功能,具体的功能和实现代码会在后续介绍。在这里插入图片描述

  • 朋友推荐

    • 可能认识的人
      朋友推荐-可能认识的人,就是如果两个人有共同的共同关注的人但是两个人未互相关注,则推荐她们认识。
      在这里插入图片描述
    • 最常互动的人
      功能是如果有人给你的动态点了赞,而且你没有关注这个人,那么就这个就会出现在最常互动的人。
      在这里插入图片描述
    • 兴趣相投的人
      功能是将和用户关注了相同兴趣但未关注的人推荐给当前用户。
      在这里插入图片描述
  • 兴趣部落

    兴趣部落是一个标签,每一个发布的动态都会选择一个标签,同时也可以自己新定义一个标签,关注该标签,则可以看到该动态下的所有动态。
    在这里插入图片描述

  • 动态功能

    • 发布动态界面
      这是最核心的功能之一,类似微博动态、qq 的好友动态、微信的朋友圈功能,可以选择自己的标签,同时允许关注自己的人看到自己动态,主要功能是可以发布图片,为图片添加文字,选择自己的位置。
      在这里插入图片描述
    • 好友动态界面
      这个功能比较简单,就是展示关注了的朋友的动态。
      在这里插入图片描述
    • 推荐动态界面
      这个功能比较简单,但是比较重要,就是为了让有相同兴趣的人,可以看到对方的动态,从而友好的交流。兴趣部落的创建在前面介绍过。
      在这里插入图片描述

完整项目地址

github:点击这里
gitee:点击这里

标签:功能,数据库,用户,兴趣,关注,Neo4j,动态,社交,节点
来源: https://blog.csdn.net/qq_38863413/article/details/113176519

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有