美文网首页
问答模块qa编写

问答模块qa编写

作者: 神豪VS勇士赢 | 来源:发表于2019-03-09 20:46 被阅读0次

接下来 我们来完成问答模块的开发

image.png
CREATE TABLE tb_problem (
id varchar(255) NOT NULL COMMENT '主键',
titlle varchar(255) NOT NULL COMMENT '问题标题',
content varchar(255) NOT NULL COMMENT '问题内容',
createtime datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '发布日期',
modifytime datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改日期',
userid varchar(255) NOT NULL COMMENT '用户id',
nickname varchar(255) DEFAULT NULL COMMENT '用户昵称',
visits bigint(255) DEFAULT NULL COMMENT '浏览数量',
thumbup bigint(20) DEFAULT NULL COMMENT '点赞数量',
reply varchar(255) DEFAULT NULL COMMENT '回复数量',
solve varchar(255) DEFAULT NULL COMMENT '是否解决',
replyname varchar(255) DEFAULT NULL COMMENT '最新回复人',
replytime datetime DEFAULT NULL COMMENT '最新回复的日期',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; image.png
CREATE TABLE tb_reply (
id varchar(255) NOT NULL COMMENT '主键',
problemid varchar(255) NOT NULL COMMENT '问题id',
content varchar(255) NOT NULL COMMENT '回答内容',
createtime datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '回答日期',
modifytime datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改日期',
userid varchar(255) NOT NULL COMMENT '回答人的id',
nickname varchar(255) DEFAULT NULL COMMENT '回答人的昵称',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; image.png
CREATE TABLE tb_pl (
problemid varchar(255) CHARACTER SET latin1 NOT NULL COMMENT '问题id',
labelid varchar(255) CHARACTER SET latin1 NOT NULL COMMENT '标签id',
PRIMARY KEY (problemid,labelid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

同样也可以使用代码生成器完成代码的编写

这里需要注意的是 中间表的实体:
@Entity
@Table(name = "tb_pl")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PL implements Serializable {
@Id
private String problemId;
@Id
private String lableId;
}

完成查询 最近某个标签下面最新的问题列表 并分页

dao 如下所示:

这里需要注意的是 pojo 和 数据库的字段必须一致 要不然 dao层会出问题

public interface ProblemDao extends JpaRepository<Problem,String>,JpaSpecificationExecutor<Problem>{

/**
 * 使用原生的SQL完成查询
 */
@Query("select p from  Problem  p  where  id  in ( select  problemid  from  PL  where  labelid=?1 ) order by replytime desc ")
public Page<Problem> findNewListByLabelId(String labelId, Pageable pageable);

}

service 层如下所示 :

public Page<Problem> findNewListByLabelId(String labelId, int page, int size) {
    PageRequest pageRequest = PageRequest.of(page - 1, size);
    return problemDao.findNewListByLabelId(labelId, pageRequest);
}

controller 层如下所示:
/**
* 根据标签id 查询最新的问题列表
*/
注意这面的@PathVariable注解 以及 service 里面的分页是如何处理的
@RequestMapping(value = "/newList/{labelId}/{page}/{size}", method = RequestMethod.GET)
public Result findNewListByLabelId(@PathVariable String labelId, @PathVariable int page, @PathVariable int size) {
Page<Problem> newListByLabelId = problemService.findNewListByLabelId(labelId, page, size);
PageResult<Problem> problemPageResult = new PageResult<>(newListByLabelId.getTotalElements(), newListByLabelId.getContent());
return new Result(true, StatusCode.OK, "查询成功", problemPageResult);
}

接下来 接着写一个 按照回复数量递减的排序返回分页结果的接口
dao层 代码如下:
@Query("select p from Problem p where id in (select problemid from PL where labelid=?1 ) order by reply desc")
public Page<Problem> findHotListByLabelId(String labelId, Pageable pageable);
service层如下:
public Page<Problem> findHotListByLabelId(String labelId, int page, int size) {
PageRequest pageRequest = PageRequest.of(page-1, size);
return problemDao.findHotListByLabelId(labelId, pageRequest);
}
controller 层如下:
/根据回复数量的大小排序所有问题/
@RequestMapping(value = "/hostList/{labelId}/{page}/{size}", method = RequestMethod.GET)
public Result findHotListByLabelId(@PathVariable String labelId, @PathVariable int page, @PathVariable int size) {
Page<Problem> hotListByLabelId = problemService.findHotListByLabelId(labelId, page, size);
PageResult<Problem> problemPageResult = new PageResult<>(hotListByLabelId.getTotalElements(), hotListByLabelId.getContent());
return new Result(true, StatusCode.OK, "查询成功", problemPageResult);
}
当然了
一次类推 接下来还可以写很多的类似的 大家按照相同的写法 自己完成吧
比如:
/
按照提问时间 降序 排序 找出所有未被回答的问题/

相关文章

  • 问答模块qa编写

    接下来 我们来完成问答模块的开发 同样也可以使用代码生成器完成代码的编写 这里需要注意的是 中间表的实体:@Ent...

  • 多个wordpress共享用户信息、共享Cookie

    背景信息 由于wordpress的问答平台QA主题与插件githuber-md-1.10.1不能共存,为了编写博文...

  • 问答系统0

    背景:调研当前问答系统在工业实践中的解决思路 qa系统发展过程如下,现在是基于问答对数据的问答系统 限定域QA事通...

  • Question Answering System 基础篇--中

    1.问答系统简介 问答系统(QuestionAnswering,QA):问答属于计算机科学的信息检索和自然语言处理...

  • 文本相似度计算(持续更新。。。)

    文本分析主要应用于问答系统的开发,如基于知识的问答系统(Knowledge-based QA),基于文档的问答系统...

  • 知识图谱资源整理

    知乎专栏 揭开知识库问答KB-QA的面纱 知识图谱-给AI装个大脑 诗歌qa 本体编辑软件protege

  • 天池视频问答第16名,使用Keras,videoqa

    视频问答,video qa using keras。天池江之杯视频问答大赛 问题描述 根据给定的短视频进行内容识别...

  • NLP 学习 - 5常见应用2

    一、常见应用 1.问答系统 (QA) 问答系统的目的是直接提供用户的答案 二问答系统和检索系统的区别:检索系统返回...

  • 产品概述

    1.APP用户:讲师+学员 2.APP功能模块:互动问答+知识+积分商城 问答模块需求梳理:用户之间通过问答形式,...

  • 发布模块到 npm 仓库

    编写模块目录 编写自己模块的 package.jsonnpm init package.json 内容如下,关于 ...

网友评论

      本文标题:问答模块qa编写

      本文链接:https://www.haomeiwen.com/subject/gxuepqtx.html