当前位置:   article > 正文

计算机毕业设计PySpark+Hadoop招聘推荐系统 招聘大数据 招聘数据分析 招聘可视化 大数据毕业设计 大数据毕设

计算机毕业设计PySpark+Hadoop招聘推荐系统 招聘大数据 招聘数据分析 招聘可视化 大数据毕业设计 大数据毕设

1. 管理端:  带有职位的增删改查功能,评论功能是针对新闻模块的,类似新闻大数据的实现
2. 网站端:  python / java 协同过滤推荐算法 / 下载职位数据表收费1元每条 / 账户充值 / 短信验证码修改密码 / 身份证识别 / 多条件搜索
3. 大屏端:  SparkUtils 之大屏 
* 职位的评论带情感分析,和新闻里用的技术一样,可在管理端评论管理中查看结果

核心算法代码分享如下:

  1. package com.university.demo.controller;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.university.demo.dao.JobDao;
  8. import com.university.demo.dao.NewsDao;
  9. import com.university.demo.entity.*;
  10. import com.university.demo.entity.request.NewsRequest;
  11. import com.university.demo.entity.request.SearchRequest;
  12. import com.university.demo.entity.response.JobVo;
  13. import com.university.demo.entity.response.NewsVo;
  14. import com.university.demo.entity.system.ServerResponse;
  15. import com.university.demo.python.TransferPython.ToPython;
  16. import com.university.demo.service.*;
  17. import com.university.demo.service.impl.TokenService;
  18. import org.apache.commons.lang3.StringUtils;
  19. import org.apache.mahout.cf.taste.recommender.RecommendedItem;
  20. import org.springframework.beans.BeanUtils;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.web.bind.annotation.*;
  23. import org.xm.tendency.word.HownetWordTendency;
  24. import java.util.ArrayList;
  25. import java.util.List;
  26. /**
  27. * @author redcomet
  28. * @since 2022-06-24
  29. */
  30. @RestController
  31. @RequestMapping("/job")
  32. public class JobController {
  33. @Autowired
  34. private JobService jobService;
  35. @Autowired
  36. ToPython toPython;
  37. @Autowired
  38. private CommentService commentService;
  39. @Autowired
  40. private RateService rateService;
  41. @Autowired
  42. private JobDao jobDao;
  43. @Autowired
  44. private ThumbService thumbService;
  45. @Autowired
  46. private ConcernService concernService;
  47. @Autowired
  48. private StarService starService;
  49. @PostMapping("/modify")
  50. public ServerResponse modify(@RequestBody Job job) {
  51. return jobService.updateById(job) ? ServerResponse.ofSuccess("更新成功!") : ServerResponse.ofError("更新失败!");
  52. }
  53. @GetMapping("/delete/{id}")
  54. public ServerResponse delete(@PathVariable("id") Integer id) {
  55. return jobService.removeById(id) ? ServerResponse.ofSuccess("删除成功!") : ServerResponse.ofError("删除失败!");
  56. }
  57. @GetMapping("/{id}")
  58. public ServerResponse query(@PathVariable("id") Integer id) {
  59. return ServerResponse.ofSuccess(jobService.getById(id));
  60. }
  61. // 根据【点赞-thumb】来进行倒序排序
  62. @GetMapping("/news/{page}")
  63. public ServerResponse querys(@PathVariable("page") Integer page,
  64. @RequestParam(defaultValue = "10") Integer limit) {
  65. Page<Job> pages = new Page<>(page, limit);
  66. QueryWrapper<Job> wrapper = new QueryWrapper<Job>().orderByDesc("job_salary");
  67. IPage<Job> iPage = jobService.page(pages, wrapper);
  68. return ServerResponse.ofSuccess(iPage);
  69. }
  70. // 后端的接口
  71. @PostMapping("/search2")
  72. public ServerResponse search2(@RequestBody SearchRequest params,
  73. @RequestParam(defaultValue = "1") Integer page,
  74. @RequestParam(defaultValue = "10") Integer limit) {
  75. QueryWrapper<Job> wrapper = new QueryWrapper<>();
  76. wrapper.orderByDesc("job_date");
  77. wrapper.like(!StringUtils.isEmpty(params.getKeyword()), "job_name", params.getKeyword());
  78. // .eq(!StringUtils.isEmpty(params.getType()), "type", params.getType())
  79. // .eq("deleted", false);
  80. Page<Job> pages = new Page<>(page, limit);
  81. IPage<Job> iPage = jobService.page(pages, wrapper);
  82. if (page != null) {
  83. return ServerResponse.ofSuccess(iPage);
  84. }
  85. return ServerResponse.ofError("查询不到数据!");
  86. }
  87. @GetMapping({"/search/{keyword}", "/search/"})
  88. public ServerResponse search(@PathVariable(value = "keyword", required = false) String keyword, @RequestParam(defaultValue = "1") Integer page,
  89. @RequestParam(defaultValue = "10") Integer limit) {
  90. QueryWrapper<Job> wrapper = new QueryWrapper<>();
  91. wrapper.orderByDesc("job_date");
  92. wrapper.like(!StringUtils.isEmpty(keyword), "job_name", keyword);
  93. Page<Job> pages = new Page<>(page, limit);
  94. IPage<Job> iPage = jobService.page(pages, wrapper);
  95. if (page != null) {
  96. return ServerResponse.ofSuccess(iPage);
  97. }
  98. return ServerResponse.ofError("查询不到数据!");
  99. }
  100. @PostMapping("/add")
  101. public ServerResponse add(@RequestBody Job job) {
  102. job.setId(jobDao.getMaxId());
  103. boolean b = jobService.save(job);
  104. if (b) {
  105. return ServerResponse.ofSuccess("添加成功", job);
  106. }
  107. return ServerResponse.ofError("添加失败!");
  108. }
  109. /* 给前端用的 */
  110. @GetMapping({"/fontsearch/{username}"})
  111. public ServerResponse fontsearch(@PathVariable(value = "username", required = false) String username, @RequestParam(defaultValue = "1") Integer page,
  112. @RequestParam(defaultValue = "10") Integer limit) {
  113. QueryWrapper<Job> wrapper = new QueryWrapper<>();
  114. wrapper.orderByDesc("update_time");
  115. wrapper.like(!StringUtils.isEmpty(username), "job_name", username)
  116. .eq("deleted", false);
  117. Page<Job> pages = new Page<>(page, limit);
  118. IPage<Job> iPage = jobService.page(pages, wrapper);
  119. if (page != null) {
  120. return ServerResponse.ofSuccess(iPage);
  121. }
  122. return ServerResponse.ofError("查询不到数据!");
  123. }
  124. // 推荐1
  125. // Mahout 基于协同过滤的推荐接口 基于User的皮尔逊相关系数
  126. @PostMapping({"/recommend"})
  127. public ServerResponse recommends(@RequestParam String username,@RequestBody SearchRequest query, @RequestParam(defaultValue = "1") Integer page,
  128. @RequestParam(defaultValue = "10") Integer limit) {
  129. List<JobVo> records = new ArrayList();
  130. List<RecommendedItem> items = rateService.getRecommendItemIds(query.getUserId(), 5);
  131. for (RecommendedItem item : items) {
  132. JobVo vo = new JobVo();
  133. Job job = jobService.getById(item.getItemID());
  134. BeanUtils.copyProperties(job, vo);
  135. QueryWrapper<Comment> wrapper2 = new QueryWrapper<>();
  136. wrapper2.eq("remark", job.getId());
  137. wrapper2.eq("deleted", false);
  138. List<Comment> comments = commentService.list(wrapper2);
  139. vo.setComments(comments);
  140. //如果在用户登录状态下,去查询他有没有点赞或者关注过这个文章作者
  141. if(!StringUtils.isEmpty(username)) {
  142. // 是否点赞
  143. QueryWrapper<Thumb> wrapper3 = new QueryWrapper<>();
  144. wrapper3.eq("nid", job.getId()).eq("deleted", false)
  145. .eq("sid", username);
  146. int thumbs = thumbService.count(wrapper3);
  147. if (thumbs > 0)
  148. vo.setIthumb(true);
  149. else
  150. vo.setIthumb(false);
  151. // 是否关注
  152. QueryWrapper<Star> wrapper4 = new QueryWrapper<>();
  153. wrapper4.eq("nid", job.getId()).eq("deleted", false)
  154. .eq("sid", username).eq("type","news");
  155. int stars = starService.count(wrapper4);
  156. if (stars > 0)
  157. vo.setIstar(true);
  158. else
  159. vo.setIstar(false);
  160. }
  161. records.add(vo);
  162. }
  163. return ServerResponse.ofSuccess(records);
  164. }
  165. @GetMapping({"/getOne/{id}"})
  166. public ServerResponse getOne(@PathVariable("id") Integer id, @RequestParam String username) {
  167. JobVo vo = new JobVo();
  168. Job job = jobService.getById(id);
  169. BeanUtils.copyProperties(job, vo);
  170. QueryWrapper<Comment> wrapper2 = new QueryWrapper<>();
  171. wrapper2.eq("remark", job.getId());
  172. wrapper2.eq("deleted", false);
  173. List<Comment> comments = commentService.list(wrapper2);
  174. vo.setComments(comments);
  175. //如果在用户登录状态下,去查询他有没有点赞或者关注过这个文章作者
  176. return ServerResponse.ofSuccess(vo);
  177. }
  178. // 推荐2
  179. @PostMapping({"/recommend2"})
  180. public ServerResponse recommends2(@RequestParam String username,@RequestBody SearchRequest query, @RequestParam(defaultValue = "1") Integer page,
  181. @RequestParam(defaultValue = "10") Integer limit) {
  182. List<JobVo> records = new ArrayList();
  183. String content = toPython.itemrec(String.valueOf(query.getUserId()));
  184. //转为json数据
  185. JSONArray jo = JSONObject.parseArray(content);
  186. for(int i=0;i<jo.size();i++){
  187. JSONObject obj = jo.getJSONObject(i);
  188. JobVo vo = new JobVo();
  189. Job job = jobService.getById(obj.getInteger("iid"));
  190. BeanUtils.copyProperties(job, vo);
  191. QueryWrapper<Comment> wrapper2 = new QueryWrapper<>();
  192. wrapper2.eq("remark", job.getId());
  193. wrapper2.eq("deleted", false);
  194. List<Comment> comments = commentService.list(wrapper2);
  195. vo.setComments(comments);
  196. //如果在用户登录状态下,去查询他有没有点赞或者关注过这个文章作者
  197. if(!StringUtils.isEmpty(username)) {
  198. // 是否点赞
  199. QueryWrapper<Thumb> wrapper3 = new QueryWrapper<>();
  200. wrapper3.eq("nid", job.getId()).eq("deleted", false)
  201. .eq("sid", username);
  202. int thumbs = thumbService.count(wrapper3);
  203. if (thumbs > 0)
  204. vo.setIthumb(true);
  205. else
  206. vo.setIthumb(false);
  207. // 是否关注
  208. QueryWrapper<Star> wrapper4 = new QueryWrapper<>();
  209. wrapper4.eq("nid", job.getId()).eq("deleted", false)
  210. .eq("sid", username).eq("type","news");
  211. int stars = starService.count(wrapper4);
  212. if (stars > 0)
  213. vo.setIstar(true);
  214. else
  215. vo.setIstar(false);
  216. }
  217. records.add(vo);
  218. }
  219. return ServerResponse.ofSuccess(records);
  220. }
  221. /**
  222. * 综合搜索
  223. * 2021年12月28日
  224. */
  225. @PostMapping({"/searchx"})
  226. public ServerResponse searchx(@RequestBody NewsRequest params, @RequestParam(defaultValue = "1") Integer page,
  227. @RequestParam(defaultValue = "10") Integer limit) {
  228. List<JobVo> response = new ArrayList<>();
  229. QueryWrapper<Job> wrapper = new QueryWrapper<>();
  230. wrapper.orderByDesc("job_date");
  231. if (params != null) {
  232. wrapper.like(!StringUtils.isEmpty(params.getTitle()), "job_name", params.getTitle());
  233. wrapper.like(!StringUtils.isEmpty(params.getKeyword()), "job_company_type", params.getKeyword());
  234. wrapper.ge(!StringUtils.isEmpty(params.getBegin()), "job_date", params.getBegin());
  235. wrapper.le(!StringUtils.isEmpty(params.getEnd()), "job_date", params.getEnd());
  236. }
  237. // wrapper.eq("deleted", false);
  238. Page<Job> pages = new Page<>(page, limit);
  239. IPage<Job> iPage = jobService.page(pages, wrapper);
  240. List<Job> jobs = iPage.getRecords();
  241. HownetWordTendency hownet = new HownetWordTendency();
  242. jobs.forEach(job1 -> {
  243. JobVo v = new JobVo();
  244. String title = v.getJobName();
  245. double sim = hownet.getTendency(title);
  246. if(sim>0)
  247. v.setTend("正向");
  248. else if(sim<0)
  249. v.setTend("负向");
  250. else
  251. v.setTend("中性");
  252. // v.setId(news1.getId());
  253. BeanUtils.copyProperties(job1, v);
  254. QueryWrapper<Comment> wrapper2 = new QueryWrapper<>();
  255. wrapper2.eq("remark", job1.getId());
  256. wrapper2.eq("deleted", false);
  257. List<Comment> comments = commentService.list(wrapper2);
  258. v.setComments(comments);
  259. response.add(v);
  260. });
  261. //前端需要返回分页参数
  262. IPage<JobVo> voPage = new Page<>();
  263. voPage.setRecords(response);
  264. voPage.setSize(iPage.getSize());
  265. voPage.setPages(iPage.getPages());
  266. voPage.setCurrent(iPage.getCurrent());
  267. voPage.setTotal(iPage.getTotal());
  268. if (page != null) {
  269. return ServerResponse.ofSuccess(voPage);
  270. }
  271. return ServerResponse.ofError("查询不到数据!");
  272. }
  273. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/768115
推荐阅读
相关标签
  

闽ICP备14008679号