1. 项目界面展示
项目的整体部分,主要分为推荐页,热门页以及新闻详情页。
2.后端结构
news_rec_sys/
conf/
dao_config.py
controller/
dao/
materials/
news_scrapy/
user_proccess/
material_proccess
recpocess/
recall/
rank/
online.py
offline.py
scheduler/
server.py
- conf/dao_config.py: 候选整体配置文件
- controller/ : 项目中用于操作数据库的接口
- dao/ : 项目的实体类,对应数据库表
- materials/: 项目的物料部分,主要用户爬取物料以及处理用户画像和新闻画像
- recpocess/: 项目的推荐模块,主要包含召回和排序,以及一些线上服务和线下处理部分
- scheduler: 项目的定时任务的脚本部分,
- server.py: 项目后端的入口部分,主要包含项目整体的后端接口部分。
前端主要使用的是Vue框架+mint-ui,后端主要使用的是Flask+Mysql+Mongodb+Redis。整个项目前后端分离,可用pycharm和webstorm分别编辑
2.1 注册登录
登录主要注意的地方是为每个用户生成唯一ID,这里用的是雪花算法,并随后将用户的注册信息写入msyql表当中。
登陆时前端通过将输入的账号密码通过POST请求传给 /recsys/login,通过UserAction().user_is_exist()方法查询数据库中的用户名或者密码是否存在。
2.2 推荐页列表
第一个要注意的点是推荐页列表的样式,它通过瀑布流的方式将新闻内容进行展现。主要逻辑是前端通过请求 "/recsys/rec_list" 接口,后端通过前端传递过来的用户姓名,从数据库中获取用户id,再根据用户id去推荐服务(recsys_server)中获取到推荐列表。
(未完待续)