风也温柔

计算机科学知识库

内容推荐算法java实战 从0推荐系统工程实战6——java online模块程序开发

  7、maven(idea自己带或者手动下载安装配置)

  8、git,手动下载安装

  上边步骤比较简略,有些配置都省略了,比如maven源更改(国外较慢),idea配置自己下载maven,git的https和ssh下载配置等,不过都是常用开发工具,安装一下也不费劲,也当是练手了,不会就四处搜搜。

  有个早年的老博客,可以看看,参考一下

  程序开发流程

  1、初始化mysql数据库

  本地安装好mysql后内容推荐算法java实战,创建数据库,前言里边上一篇链接构建数据表,再执行程序。下面按照从上到下,()到()依次执行。

   if name == '__main__':

        # create_movie()
        # create_genre()
        # create_movie_genre()
        # create_user_movie_score()
        # create_user()

  2、java web开发准备

  下面都是经验之谈,做了一些项目后,一般就是走这么个流程,需要copy的内容可以直接从该项目copy过去。

  (1)创建程序,创建过程中选择mysql、,一路next。

  (2)copy一个pom.xml内java包内容,主要是mysql和maven。

  (3)copy一个.文件内容,这个启动需要加载的参数,这里主要是数据库连接池。

  (4)构建项目目录结构

  java基于内容的推荐算法代码_java 商品推荐算法_内容推荐算法java实战

  java基于内容的推荐算法代码_java 商品推荐算法_内容推荐算法java实战

  创建出来项目后,pom.xml和.自动生成,java下面的文件夹需要自己创建,这里用的比较常用的目录结构。

  :与前端交互层,去调用

  :业务代码层,调用dao

  dao:数据库调用层,具体sql逻辑在

  :实体,与mysql表结构一致

  : sql查询

  dto:程序中数据转换,适配不同参数结构

  vo:返回给前端数据结构

  utils:常用工具内容推荐算法java实战 从0推荐系统工程实战6——java online模块程序开发,如json处理、日期转换等

  (5)写一个hello world程序,前端请求、结束参数、调用对应、调用dto、执行中sql、返回数据到前端。

  3、业务开发

  根据产品设计、数据库设计和接口设计,完成业务开发,以影片详情和相似影片列表为例。

  (1)先看产品设计,从产品设计截图如下

  内容推荐算法java实战_java基于内容的推荐算法代码_java 商品推荐算法

  (2)看接口设计,需要接收和返回的参数(只截图部分)

  java基于内容的推荐算法代码_内容推荐算法java实战_java 商品推荐算法

  (3)接口层业务函数设计

  注意:

  第一步接口开发设计内容推荐算法java实战,根据产品设计和接口设计只写出各个接口定义,写好注释。

  第二步是代码逻辑设计,这里以movie接口为例。可以应用流程图画出代码流程。如果觉得麻烦或者逻辑比较简单,可以用注释的方式在movie函数中写出代码业务逻辑,即线面注释部分文字内容1~5。

  以上过程只需要写出接口定义代码,其它业务代码一行都没有。

   /**

         * @param movieId 电影id
         * @return 影片详情和相似影片别列表
         */
        @RequestMapping(value = "/movie", method = RequestMethod.GET)
        public ResponseResult movie(Integer movieId) {
            MovieVo result = new MovieVo();
            // 1.根据movieId拿到影片详情,mysql
            Movie movie = movieService.getMovie(movieId);
            BeanUtils.copyProperties(movie, result);
            // 2.获取给该影片打分最高的几个用户,mysql
            List users = userService.getTopScoreUser(movieId);
            result.setUsers(users);
            // 3.获取影片所属类型,mysql
            List genres = genreService.getGenresByMovie(movieId);
            result.setGenres(genres);
            // 4.相似影片列表计算,得到列表内各影片id todo 未实现内容
            List movieIds = recService.similarMovies(movieId);
            // 5.相似影片根据id,到mysql获取详情
            List movies = movieService.getList(movieIds);
            result.setRelatedMovies(movies);
            return ResponseResult.ok(result);

  (4)填充代码,实现1~5注释内容,写、、dao、、

  注意:这部分在创建完mysql表之后,可以直接利用maven插件生成到各层基础代码,这里为了练习都是手写。

  由于放弃了注释4这个步骤,即todo标识部分,其它功能全部是直接读取mysql数据库,所以大部分代码在中写sql语言。

  代码业务流程根据mysql表结构,表结构是根据产品设计构建,形成产品设计、mysql表结构设计、代码开发。产品设计和数据结构设计其实是互相作用效果,不能因为产品设计的过于复杂,导致表结构复杂,从而加大代码开发难度。产品和程序平衡部分太难,目前我自己也是瞎蒙。

  (5)根据接口设计,利用发送请求,检查返回结果。

  (6)开发过程中发现接口设计不完善或错误部分,需要对接口文档进行修改,实际工程需要通知前端同事。

  (7)按照以上步骤完成其它接口部分。

  总结

  由于没有做召回和排序模型,这部分就是一个单纯的java web服务程序,换成或go也是一样一样的。

  这部分也算是边学习边开发,又把放弃了3年的java开发回顾了一翻,当然只是做了一个基础版本,异常、日志等等都没有做。

  接下来就要进入召回模块开发了,需要一大波调研和学习,需要用到去做成服务,可能是 ,也可能是做个向量求相似服务?谁知道呢。

  持续更新中........

  文章来源:https://zhuanlan.zhihu.com/p/376619448