当前位置: 首页 > news >正文

百度教育网站四川住房城乡建设部网站

百度教育网站,四川住房城乡建设部网站,旅游网站开发背景,网站改域名文章目录 #x1f31e; Sun Frame#xff1a;SpringBoot 的轻量级开发框架#xff08;个人开源项目推荐#xff09;#x1f31f; 亮点功能#x1f4e6; spring cloud模块概览常用工具 #x1f517; 更多信息1.sun-club-infra 模块SubjectEsServiceImpl.java1.querySubje… 文章目录 Sun FrameSpringBoot 的轻量级开发框架个人开源项目推荐 亮点功能 spring cloud模块概览常用工具 更多信息1.sun-club-infra 模块SubjectEsServiceImpl.java1.querySubjectList方法根据查询请求进行查询2.convertHit2SubjectInfoEs方法将每一个hit转换为SubjectInfoEs3.根据信息构建一个查询请求对象 2.简单测试1.TestFeignController.java2.新增几条记录2.查询3.结果高亮显示 3.加上控制层的实现1.DTO和BO都加上keyWord属性2.SubjectController.java3.sun-club-domain1.SubjectInfoDomainService.java2.SubjectInfoDomainServiceImpl.java 4.测试1.es报错requires query value2.发现转换器没有将keyWord转换所以clean-package一下maven即可3.重新测试 Sun FrameSpringBoot 的轻量级开发框架个人开源项目推荐 轻松高效的现代化开发体验 Sun Frame 是我个人开源的一款基于 SpringBoot 的轻量级框架专为中小型企业设计。它提供了一种快速、简单且易于扩展的开发方式。 我们的开发文档记录了整个项目从0到1的任何细节实属不易请给我们一个Star您的支持是我们持续改进的动力。 亮点功能 组件化开发灵活选择简化流程。高性能通过异步日志和 Redis 缓存提升性能。易扩展支持多种数据库和消息队列。 spring cloud模块概览 Nacos 服务高效的服务注册与发现。Feign 远程调用简化服务间通信。强大网关路由与限流。 常用工具 日志管理异步处理与链路追踪。Redis 集成支持分布式锁与缓存。Swagger 文档便捷的 API 入口。测试支持SpringBoot-Test 集成。EasyCode自定义EasyCode模板引擎一键生成CRUD。 更多信息 开源地址Gitee Sun Frame详细文档语雀文档 1.sun-club-infra 模块 SubjectEsServiceImpl.java 1.querySubjectList方法根据查询请求进行查询 Override public PageResultSubjectInfoEs querySubjectList(SubjectInfoEs req) {// 构建一个返回的分页对象PageResultSubjectInfoEs pageResult new PageResult();// 根据信息构建一个查询请求对象EsSearchRequest esSearchRequest createSearchListQuery(req);// 获得分页查询结果SearchResponse searchResponse EsRestClient.searchWithTermQuery(getEsIndexInfo(), esSearchRequest);// 构建一个要返回的数据对象ListSubjectInfoEs subjectInfoEsList new LinkedList();// 得到命中的数据SearchHits searchHits searchResponse.getHits();if (searchHits null || searchHits.getHits() null) {pageResult.setPageNo(req.getPageNo());pageResult.setPageSize(req.getPageSize());pageResult.setRecords(subjectInfoEsList);pageResult.setTotal(0);return pageResult;}// 如果有命中的SearchHit[] hits searchHits.getHits();for (SearchHit hit : hits) {// 将每个hit都转换为SubjectInfoEs然后将其放到要返回的数据对象中SubjectInfoEs subjectInfoEs convertHit2SubjectInfoEs(hit);subjectInfoEsList.add(subjectInfoEs);}// 构建分页对象pageResult.setPageNo(req.getPageNo());pageResult.setPageSize(req.getPageSize());pageResult.setRecords(subjectInfoEsList);pageResult.setTotal(Long.valueOf(searchHits.getTotalHits().value).intValue());return pageResult; }2.convertHit2SubjectInfoEs方法将每一个hit转换为SubjectInfoEs /*** 将每一个hit转换为SubjectInfoEs* param hit* return*/ private SubjectInfoEs convertHit2SubjectInfoEs(SearchHit hit) {MapString, Object sourceAsMap hit.getSourceAsMap();if (CollectionUtils.isEmpty(sourceAsMap)) {return null;}SubjectInfoEs result new SubjectInfoEs();// 封装基本数据result.setSubjectId(MapUtils.getLong(sourceAsMap, EsSubjectFields.SUBJECT_ID));result.setSubjectName(MapUtils.getString(sourceAsMap, EsSubjectFields.SUBJECT_NAME));result.setSubjectAnswer(MapUtils.getString(sourceAsMap, EsSubjectFields.SUBJECT_ANSWER));result.setDocId(MapUtils.getLong(sourceAsMap, EsSubjectFields.DOC_ID));result.setSubjectType(MapUtils.getInteger(sourceAsMap, EsSubjectFields.SUBJECT_TYPE));result.setScore(new BigDecimal(String.valueOf(hit.getScore())).multiply(new BigDecimal(100.00).setScale(2, RoundingMode.HALF_UP)));//处理name的高亮MapString, HighlightField highlightFields hit.getHighlightFields();HighlightField subjectNameField highlightFields.get(EsSubjectFields.SUBJECT_NAME);if(Objects.nonNull(subjectNameField)){Text[] fragments subjectNameField.getFragments();StringBuilder subjectNameBuilder new StringBuilder();for (Text fragment : fragments) {subjectNameBuilder.append(fragment);}result.setSubjectName(subjectNameBuilder.toString());}//处理答案高亮HighlightField subjectAnswerField highlightFields.get(EsSubjectFields.SUBJECT_ANSWER);if(Objects.nonNull(subjectAnswerField)){Text[] fragments subjectAnswerField.getFragments();StringBuilder subjectAnswerBuilder new StringBuilder();for (Text fragment : fragments) {subjectAnswerBuilder.append(fragment);}result.setSubjectAnswer(subjectAnswerBuilder.toString());}return result; }3.根据信息构建一个查询请求对象 /*** 根据信息构建一个查询请求对象* param req* return*/private EsSearchRequest createSearchListQuery(SubjectInfoEs req) {EsSearchRequest esSearchRequest new EsSearchRequest();// bq用来组合查询条件BoolQueryBuilder bq new BoolQueryBuilder();// 查询条件1是根据题目名称查询MatchQueryBuilder subjectNameQueryBuilder QueryBuilders.matchQuery(EsSubjectFields.SUBJECT_NAME, req.getKeyWord());// 查询条件2是根据题目的答案查询MatchQueryBuilder subjectAnswerQueryBuilder QueryBuilders.matchQuery(EsSubjectFields.SUBJECT_ANSWER, req.getKeyWord());// 使用bq关联两个查询条件should就相当于或者就是两个都查bq.should(subjectNameQueryBuilder);// 让题目名的权重高2subjectNameQueryBuilder.boost(2);bq.should(subjectAnswerQueryBuilder);// 查询条件3是只查询简答题MatchQueryBuilder subjectTypeQueryBuilder QueryBuilders.matchQuery(EsSubjectFields.SUBJECT_TYPE, SubjectInfoTypeEnum.BRIEF.getCode());// 必须是简答题bq.must(subjectTypeQueryBuilder);// 至少命中一个shouldbq.minimumShouldMatch(1);// 增加高亮HighlightBuilder highlightBuilder new HighlightBuilder().field(*).requireFieldMatch(false);highlightBuilder.preTags(span style \color:red\);highlightBuilder.postTags(/span);// 组装请求// bqesSearchRequest.setBq(bq);// 高亮esSearchRequest.setHighlightBuilder(highlightBuilder);// 匹配字段一般是全部esSearchRequest.setFields(EsSubjectFields.FIELD_QUERY);// 返回分页查询的结果// 当前页是从第几条记录开始下标从1开始esSearchRequest.setFrom((req.getPageNo() - 1) * req.getPageSize());// 页面大小esSearchRequest.setSize(req.getPageSize());// 返回分页查询的结果// 不需要快照缓存esSearchRequest.setNeedScroll(false);return esSearchRequest;}2.简单测试 1.TestFeignController.java RequestMapping(/querySubjectByKeyword)public void querySubjectByKeyword() {SubjectInfoEs subjectInfoEs new SubjectInfoEs();subjectInfoEs.setKeyWord(简答题目);PageResultSubjectInfoEs subjectInfoEsPageResult subjectEsService.querySubjectList(subjectInfoEs);// 打印log.info(querySubjectByKeyword: JSON.toJSONString(subjectInfoEsPageResult));} }2.新增几条记录 2.查询 3.结果高亮显示 3.加上控制层的实现 1.DTO和BO都加上keyWord属性 2.SubjectController.java /*** 全文检索* param subjectInfoDTO* return*/ PostMapping(/getSubjectPageBySearch) public ResultSubjectInfoEs getSubjectPageBySearch(RequestBody SubjectInfoDTO subjectInfoDTO) {try {// 打印日志if (log.isInfoEnabled()) {log.info(SubjectController getSubjectPageBySearch SubjectInfoDTO, subjectInfoDTO:{}, JSON.toJSONString(subjectInfoDTO));}// 参数校验Preconditions.checkArgument(StringUtils.isNotBlank(subjectInfoDTO.getKeyWord()), 关键字不能为空);// DTO转BOSubjectInfoBO subjectInfoBO SubjectInfoDTOConverter.INSTANCE.convertDTO2BO(subjectInfoDTO);// 设置分页参数subjectInfoBO.setPageNo(subjectInfoDTO.getPageNo());subjectInfoBO.setPageSize(subjectInfoDTO.getPageSize());// 全文检索PageResultSubjectInfoEs boPageResult subjectInfoDomainService.getSubjectPageBySearch(subjectInfoBO);return Result.ok(boPageResult);} catch (Exception e) {log.error(SubjectController getSubjectPageBySearch error, subjectInfoDTO:{}, e.getMessage(), e);return Result.fail(全文检索失败);} }3.sun-club-domain 1.SubjectInfoDomainService.java /*** 全文检索* param subjectInfoBO* return*/ PageResultSubjectInfoEs getSubjectPageBySearch(SubjectInfoBO subjectInfoBO);2.SubjectInfoDomainServiceImpl.java Override public PageResultSubjectInfoEs getSubjectPageBySearch(SubjectInfoBO subjectInfoBO) {// 将bo转换为entitySubjectInfoEs subjectInfoEs new SubjectInfoEs();subjectInfoEs.setKeyWord(subjectInfoBO.getKeyWord());subjectInfoEs.setPageNo(subjectInfoBO.getPageNo());subjectInfoEs.setPageSize(subjectInfoBO.getPageSize());// 全文检索PageResultSubjectInfoEs subjectInfoEsPageResult subjectEsService.querySubjectList(subjectInfoEs);return subjectInfoEsPageResult; }4.测试 1.es报错requires query value 2.发现转换器没有将keyWord转换所以clean-package一下maven即可 3.重新测试
http://www.hkea.cn/news/14285181/

相关文章:

  • 高中做信息技术题网站河北省石家庄市官网
  • 必须网站的访问量东莞保安招聘网
  • 网站建设开发外包公司打码网站怎么做
  • 网站推广效果的评价网站如何改版
  • 网站当前链接融资网站开发
  • 建站之星管理中心怎么做网站广告代理商
  • 潍坊潍微贷是哪家网站建设的wordpress 缓慢
  • 网页设计与网站建设文档网站建设方案及
  • 制作单页网站要网址辽宁省电力建设网站
  • 济南建网站工作室中国站长网入口
  • 菏泽网站制建设哪家好如何制作微信小程序教程
  • 怎么做国内网站设计logo图案用什么软件
  • 静态网站设计与制作书籍响应式企业网站建设
  • 极路由 做网站短视频推广代理
  • 飞沐网站建设公司北京网站建设电影
  • wordpress主题外贸网站平面设计专业学什么
  • 网站友情链接与排名网站从建设到上线流程
  • 网站怎么做才能赚钱吗wordpress地址应该填什么意思
  • 个人网站免备案推广软文
  • 石家庄网站建设外包公司排名手机优化大师下载2022
  • 同时优化几个网站做网站得每年续费吗
  • 南沙建设局网站培训网站html
  • 企业网站报价正规营销型网站建设
  • 织梦建站模板开门红营销活动方案
  • 网站开发 超速云wordpress googlevis 嵌入
  • 做农宿的网站新的营销模式有哪些
  • 网站域名跳转代码有云服务器怎么做网站
  • 龙岗网站建设icxun玉田网站制作
  • 免费建设小说网站四川省建筑人才网
  • 英文外贸网站源码网络营销大师排行榜