package cn.hxx.business.rest;
import cn.hxx.business.model.request.*;
import cn.hxx.business.service.*;
import cn.hxx.business.utils.Constant;
import cn.hxx.business.model.domain.Tag;
import cn.hxx.business.model.recom.Recommendation;
import cn.hxx.business.model.domain.User;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.apache.log4j.Logger;
import java.util.List;
import java.util.Random;
@RequestMapping("/rest/movie")
@Controller
public class MovieRestApi {
// private Logger logger = LoggerFactory.getLogger(MovieRestApi.class);
private static Logger logger = Logger.getLogger(MovieRestApi.class.getName());
@Autowired
private RecommenderService recommenderService;
@Autowired
private MovieService movieService;
@Autowired
private UserService userService;
@Autowired
private RatingService ratingService;
@Autowired
private TagService tagService;
/**
* 获取推荐的电影【实时推荐6 + 内容推荐4】
* @param username
* @param model
* @return
*/
// TODO: 2017/10/20 bug 混合推荐结果中,基于内容的推荐,基于MID,而非UID
@RequestMapping(value = "/guess", produces = "application/json", method = RequestMethod.GET )
@ResponseBody
public Model getGuessMovies(@RequestParam("username")String username,@RequestParam("num")int num, Model model) {
User user = userService.findByUsername(username);
List<Recommendation> recommendations = recommenderService.getHybridRecommendations(new MovieHybridRecommendationRequest(user.getUid(),num));
if(recommendations.size()==0){
String randomGenres = user.getPrefGenres().get(new Random().nextInt(user.getPrefGenres().size()));
System.out.println(randomGenres);
recommendations = recommenderService.getTopGenresRecommendations(new TopGenresRecommendationRequest(randomGenres.split(" ")[0],num));
}
model.addAttribute("success",true);
model.addAttribute("movies",movieService.getHybirdRecommendeMovies(recommendations));
return model;
}
/**
*
* @param username
* @param model
* @return
*/
@RequestMapping(value = "/wish", produces = "application/json", method = RequestMethod.GET )
@ResponseBody
public Model getWishMovies(@RequestParam("username")String username,@RequestParam("num")int num, Model model) {
User user = userService.findByUsername(username);
List<Recommendation> recommendations = recommenderService.getCollaborativeFilteringRecommendations(new UserRecommendationRequest(user.getUid(),num));
if(recommendations.size()==0){
String randomGenres = user.getPrefGenres().get(new Random().nextInt(user.getPrefGenres().size()));
recommendations = recommenderService.getTopGenresRecommendations(new TopGenresRecommendationRequest(randomGenres.split(" ")[0],num));
}
model.addAttribute("success",true);
model.addAttribute("movies",movieService.getRecommendeMovies(recommendations));
return model;
}
/**
* 获取热门推荐
* @param model
* @return
*/
@RequestMapping(value = "/hot", produces = "application/json", method = RequestMethod.GET )
@ResponseBody
public Model getHotMovies(@RequestParam("num")int num, Model model) {
List<Recommendation> recommendations = recommenderService.getHotRecommendations(new HotRecommendationRequest(num));
model.addAttribute("success",true);
model.addAttribute("movies",movieService.getRecommendeMovies(recommendations));
return model;
}
/**
* 获取投票最多的电影
* @param model
* @return
*/
@RequestMapping(value = "/rate", produces = "application/json", method = RequestMethod.GET )
@ResponseBody
public Model getRateMoreMovies(@RequestParam("num")int num, Model model) {
List<Recommendation> recommendations = recommenderService.getRateMoreRecommendations(new RateMoreRecommendationRequest(num));
model.addAttribute("success",true);
model.addAttribute("movies",movieService.getRecommendeMovies(recommendations));
return model;
}
/**
* 获取新添加的电影
* @param model
* @return
*/
@RequestMapping(value = "/new", produces = "application/json", method = RequestMethod.GET )
@ResponseBody
public Model getNewMovies(@RequestParam("num")int num, Model model) {
model.addAttribute("success",true);
model.addAttribute("movies",movieService.getNewMovies(new NewRecommendationRequest(num)));
return model;
}
/**
* 获取电影详细页面相似的电影集合
* @param id
* @param model
* @return
*/
@RequestMapping(value = "/same/{id}", produces = "application/json", method = RequestMethod.GET )
@ResponseBody
public Model getSameMovie(@PathVariable("id")int id,@RequestParam("num")int num, Model model) {
List<Recommendation> recommendations = recommenderService.getCollaborativeFilteringRecommendations(new MovieRecommendationRequest(id,num));
model.addAttribute("success",true);
model.addAttribute("movies",movieService.getRecommendeMovies(recommendations));
return model;
}
/**
* 获取单个电影的信息
* @param id
* @param model
* @return
*/
@RequestMapping(value = "/info/{id}", produces = "application/json", method = RequestMethod.GET )
@ResponseBody
public Model getMovieInfo(@PathVariable("id")int id, Model model) {
model.addAttribute("success",true);
model.addAttribute("movie",movieService.findByMID(id));
return model;
}
/**
* 模糊查询电影
* @param query
* @param model
* @return
*/
@RequestMapping(value = "/search", produces = "application/json", method = RequestMethod.GET )
@ResponseBody
public Model getSearchMovies(@RequestParam("query")String query, Model model) {
List<Recommendation> recommendations = recommenderService.getContentBasedSearchRecommendations(new SearchRecommendationRequest(query,100));
model.addAttribute("success",true);
model.addAttribute("movies",movieService.getRecommendeMovies(recommendations));
return model;
}
/**
* 查询类别电影
* @param category
* @param model
* @return
*/
@RequestMapping(value = "/genres", produces = "application/json", method = RequestMethod.GET )
@ResponseBody
public Model getGenresMovies(@RequestParam("category")String category, Model model) {
List<Recommendation> recommendations = recommenderService.getContentBasedGenresRecommendations(new SearchRecommendationRequest(category,100));
model.addAttribute("success",true);
model.addAttribute("movies",movieService.getRecommendeMovies(recommendations));
return model;
}
/**
* 获取用户评分过得电影
* @param username
* @param model
* @return
*/
@RequestMapping(value = "/myrate", produces = "application/json", method = RequestMethod.GET )
@ResponseBody
public Model getMyRateMovies(@RequestParam("username")String username, Model model) {
User user = userService.findByUsername(username);
model.addAttribute("success",true);
model.addAttribute("movies",movieService.getMyRateMovies(user.getUid()));
return model;
}
@RequestMapping(value = "/rate/{id}", produces = "application/json", method = RequestMethod.GET )
@ResponseBody
public Model rateToMovie(@PathVariable("id")int id,@RequestParam("score")Double score,@RequestParam("username")String username, Model model) {
没有合适的资源?快使用搜索试试~ 我知道了~
基于影评的电影推荐系统源码+详细文档+全部数据齐全.zip
共2000个文件
jpg:1937个
java:32个
xml:11个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 117 浏览量
2024-05-13
20:01:34
上传
评论
收藏 185.12MB ZIP 举报
温馨提示
【资源说明】 基于影评的电影推荐系统源码+详细文档+全部数据齐全.zip基于影评的电影推荐系统源码+详细文档+全部数据齐全.zip 【备注】 1、该项目是高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于影评的电影推荐系统源码+详细文档+全部数据齐全.zip (2000个子文件)
fonts.css 291KB
demo.css 2KB
icomoon.eot 1.16MB
demo.html 4.38MB
MovieRestApi.java 10KB
RecommenderService.java 9KB
MovieService.java 5KB
RatingService.java 4KB
TagService.java 4KB
UserService.java 4KB
Configure.java 3KB
Application.java 2KB
Movie.java 2KB
UserRestApi.java 2KB
AsciiUtil.java 2KB
User.java 2KB
Application.java 1KB
Constant.java 1KB
Rating.java 1KB
Tag.java 1KB
LogProcessor.java 1KB
MyNameGenerator.java 1KB
MD5toNum.java 891B
MovieRatingRequest.java 711B
Recommendation.java 598B
RegisterUserRequest.java 588B
LoginUserRequest.java 582B
TopGenresRecommendationRequest.java 526B
SearchRecommendationRequest.java 500B
MovieHybridRecommendationRequest.java 488B
MovieRecommendationRequest.java 476B
UserRecommendationRequest.java 474B
RateMoreRecommendationRequest.java 310B
NewRecommendationRequest.java 300B
HotRecommendationRequest.java 300B
package-info.java 69B
picture.jpg 558KB
picture.jpg 429KB
picture.jpg 402KB
picture.jpg 384KB
picture.jpg 373KB
picture.jpg 370KB
picture.jpg 370KB
picture.jpg 340KB
picture.jpg 320KB
picture.jpg 275KB
picture.jpg 274KB
picture.jpg 266KB
picture.jpg 264KB
picture.jpg 260KB
picture.jpg 257KB
picture.jpg 247KB
picture.jpg 245KB
picture.jpg 242KB
picture.jpg 240KB
picture.jpg 237KB
picture.jpg 237KB
picture.jpg 230KB
picture.jpg 229KB
picture.jpg 221KB
picture.jpg 220KB
picture.jpg 216KB
picture.jpg 199KB
picture.jpg 188KB
picture.jpg 177KB
picture.jpg 175KB
picture.jpg 175KB
picture.jpg 175KB
picture.jpg 173KB
picture.jpg 173KB
picture.jpg 167KB
picture.jpg 167KB
picture.jpg 160KB
picture.jpg 157KB
picture.jpg 154KB
picture.jpg 150KB
picture.jpg 150KB
picture.jpg 149KB
picture.jpg 146KB
picture.jpg 144KB
picture.jpg 143KB
picture.jpg 142KB
picture.jpg 138KB
picture.jpg 136KB
picture.jpg 132KB
picture.jpg 131KB
picture.jpg 129KB
picture.jpg 128KB
picture.jpg 128KB
picture.jpg 124KB
picture.jpg 124KB
picture.jpg 124KB
picture.jpg 124KB
picture.jpg 123KB
picture.jpg 123KB
picture.jpg 122KB
picture.jpg 122KB
picture.jpg 119KB
picture.jpg 118KB
picture.jpg 118KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
不走小道
- 粉丝: 3210
- 资源: 5120
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功