第一部分-電影網站:
軟件架構: SpringBoot+Mybatis+JSP
項目描述:主要實現電影網站的展現 和 用戶的所有動作的地方
技術選型:
技術 | 名稱 | 官網 |
---|---|---|
Spring Boot | 容器 | https://projects.spring.io/spring-boot/ |
Spring MVC | MVC框架 | http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc |
MyBatis | ORM框架 | http://www.mybatis.org/mybatis-3/zh/index.html |
MyBatis Generator | 代碼生成 | http://www.mybatis.org/generator/index.html |
PageHelper | MyBatis物理分頁插件 | http://git.oschina.net/free/Mybatis_PageHelper |
Druid | 數據庫連接池 | https://github.com/alibaba/druid |
Redis (后期) | 分布式緩存數據庫 | https://redis.io/ |
Elasticsearch(后期) | 分布式全文搜索引擎 | http://lucene.apache.org/solr/ https://www.elastic.co/ |
Logback | 日志組件 | https://logback.qos.ch/ |
Swagger2 | 接口測試框架 | http://swagger.io/ |
Maven | 項目構建管理 | http://maven.apache.org/ |
主要開發工具:
- MySql: 數據庫
- Tomcat: 應用服務器
- Git: 版本管理
- IntelliJ IDEA: 開發IDE
開發環境
- JDK 1.8+
- Maven 3.3.9
- Mysql 5.7.20+
- Lombok , 需要開發環境(IDEA或eclipse)支持
項目架構
項目流程圖
數據表設計
ps:推薦指的是spark推薦模型進行處理的表
- alstab 個人用戶的推薦強度表 推薦 ps:用戶登陸后,選取用戶id關聯的電影id 進行電影推薦
- similartab 相似的電影 推薦*
- topdefaultmovies 默認電影
- rectab 用戶評價的時候將相似的電影寫入此表
- browse 1. 新用戶注冊時喜歡的電影 2. 點擊喜歡按鈕的電影
- review 評價過的電影
所有數據表
admin 管理員表
id name password role
role 0代表超級管理員,1代表普通
alstab 強度表===推薦系統得到
userid movieid rating(評分)
browse 瀏覽表
id userid movieids browsetime (瀏覽時間)
category 電影類型
id category
movie 電影詳情 50581條數據
movieid
moviename 電影名稱
showyear上映時間
nation 國家
director 導演
leadactors 主演
screenwriter 編劇
picture 電影海報
averating 平均評分
numrating 多少人看過
description 描述
typelist 電影類型
backpost 電影背景圖片
moviecategory 電影所屬類型 88870條數據
id
movieid
categoryid
rectab
userid
movieids
review 用戶對電影的評分,和評價
id
userid
movieid
content
star
reviewtime
similartab 類似度 68908條數據
itemid1
itemid2
similar
topdefaultmovies 默認的top
id
movieid
moviename
user 用戶表
userid
username
password
email
registertime
lastlogintime
用戶流程分析
步驟1:
開始直接從topdefaultmovies表中取出前五部電影
- 使用top表的movieid去關聯查詢movie表的數據
步驟2:
登錄:
- 從ALS強度表中查詢推薦強度8以上的電影
(這個是每個用戶來說的,也就是說,帶上userid去查詢的強度表的)
更多文章:基於Spark的電影推薦系統:https://blog.csdn.net/liuge36/column/info/29285