四川省建设厅官方网站联系电话临沂企业网站

web/2025/10/6 23:38:13/文章来源:
四川省建设厅官方网站联系电话,临沂企业网站,电商平台市场调研报告,动易网站安装环境搭建参考#xff1a;mongodb#xff1a;环境搭建_Success___的博客-CSDN博客 需求#xff1a; 在文章搜索服务中实现保存搜索记录到mongdb 并在搜索时查询出mongdb保存的数据 1、安装mongodb依赖 dependencygroupIdorg.springframework.data/groupI…环境搭建参考mongodb环境搭建_Success___的博客-CSDN博客 需求 在文章搜索服务中实现保存搜索记录到mongdb 并在搜索时查询出mongdb保存的数据 1、安装mongodb依赖 dependencygroupIdorg.springframework.data/groupIdartifactIdspring-data-mongodb/artifactId/dependency 2、创建数据库对应实体类 package com.heima.model.common.search;import lombok.Data; import org.springframework.data.mongodb.core.mapping.Document;import java.io.Serializable; import java.util.Date;/*** p* APP用户搜索信息表* /p* author itheima*/ Data Document(ap_user_search) public class ApUserSearch implements Serializable {private static final long serialVersionUID 1L;/*** 主键*/private String id;/*** 用户ID*/private Integer userId;/*** 搜索词*/private String keyword;/*** 创建时间*/private Date createdTime;} 3、配置nacos spring:data:mongodb:host: 192.168.200.130port: 27017database: leadnews-history 实现保存 1、在搜索服务的service层新增搜索历史保存方法insert package com.heima.search.service;import com.heima.model.common.dtos.ResponseResult; import com.heima.model.common.search.UserSearchDto;import java.io.IOException;public interface ArticleSearchService {/*文章搜索*/ResponseResult search(UserSearchDto dto) throws IOException;/*** 保存用户搜索历史记录* param keyword* param userId*/void insert(String keyword,Integer userId);}2、实现类 package com.heima.search.service.impl;import com.heima.model.common.search.ApUserSearch; import com.heima.search.service.ArticleSearchService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service;import java.util.Date; import java.util.List;Service Slf4j public class ArticleSearchServiceImpl implements ArticleSearchService {AutowiredMongoTemplate mongoTemplate;/*** 保存用户搜索历史记录* param keyword* param userId*/OverrideAsyncpublic void insert(String keyword, Integer userId) {/*查询当前用户搜索的关键字*///构造查询条件Query query Query.query(Criteria.where(userid).is(userId).and(keyword).is(keyword));//执行mongodb库的查询ApUserSearch userSearch mongoTemplate.findOne(query, ApUserSearch.class);/*存在则更新创建时间重新保存*/if(userSearch ! null) {userSearch.setCreatedTime(new Date());mongoTemplate.save(userSearch);return;}/*不存在判断当前搜索记录数量是否超过10条*/userSearch new ApUserSearch();userSearch.setUserId(userId);userSearch.setKeyword(keyword);userSearch.setCreatedTime(new Date());//构造搜索条件Query query1 Query.query(Criteria.where(userId).is(userId));query1.with(Sort.by(Sort.Direction.DESC,createdTime));//执行查询ListApUserSearch list mongoTemplate.find(query1, ApUserSearch.class);//判断listif(list null || list.size() 10){mongoTemplate.save(userSearch);}else {//获取mongodb中最后一条数据就ApUserSearch apUserSearch list.get(list.size() - 1);//findAndReplace:根据查询条件替换库中的数据mongoTemplate.findAndReplace(Query.query(Criteria.where(id).is(apUserSearch.getId())),userSearch);}}}3、在文章搜索方法search中异步调用上面实现的保存记录方法 注意异步调用的方法需要在方法上加Async 注解并在工程启动类加入EnableAsynczh注解开启异步 Async是 Spring 框架提供的注解用于将方法标记为异步执行的方法。它的作用是告诉 Spring 框架在调用被注解的方法时将其放入线程池中异步执行而不是阻塞等待方法的完成。 service层完整代码如下 package com.heima.search.service.impl;import com.alibaba.cloud.commons.lang.StringUtils; import com.alibaba.fastjson.JSON; import com.heima.model.common.dtos.ResponseResult; import com.heima.model.common.enums.AppHttpCodeEnum; import com.heima.model.common.search.ApUserSearch; import com.heima.model.common.search.UserSearchDto; import com.heima.model.common.user.ApUser; import com.heima.search.service.ArticleSearchService; import com.heima.utils.thread.AppThreadLocalUtil; import lombok.extern.slf4j.Slf4j; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.text.Text; import org.elasticsearch.index.query.*; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; import org.elasticsearch.search.sort.SortOrder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service;import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map;Service Slf4j public class ArticleSearchServiceImpl implements ArticleSearchService {AutowiredRestHighLevelClient restHighLevelClient;AutowiredMongoTemplate mongoTemplate;/*文章搜索*/Overridepublic ResponseResult search(UserSearchDto dto) throws IOException {//参数校验//1.检查参数if(dto null || StringUtils.isBlank(dto.getSearchWords())){return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);}ApUser user AppThreadLocalUtil.getUser();//异步调用 保存搜索记录if(user ! null dto.getFromIndex() 0){insert(dto.getSearchWords(), user.getId());}//2.设置查询条件SearchRequest searchRequest new SearchRequest(app_info_article);SearchSourceBuilder searchSourceBuilder new SearchSourceBuilder();//布尔查询BoolQueryBuilder boolQueryBuilder QueryBuilders.boolQuery();//关键字的分词之后查询QueryStringQueryBuilder queryStringQueryBuilder QueryBuilders.queryStringQuery(dto.getSearchWords()).field(title).field(content).defaultOperator(Operator.OR);boolQueryBuilder.must(queryStringQueryBuilder);//查询小于mindate的数据 // RangeQueryBuilder rangeQueryBuilder QueryBuilders.rangeQuery(publishTime).lt(dto.getMinBehotTime().getTime()); // boolQueryBuilder.filter(rangeQueryBuilder);//分页查询searchSourceBuilder.from(0);searchSourceBuilder.size(dto.getPageSize());//按照发布时间倒序查询searchSourceBuilder.sort(publishTime, SortOrder.DESC);//设置高亮 titleHighlightBuilder highlightBuilder new HighlightBuilder();highlightBuilder.field(title);highlightBuilder.preTags(font stylecolor: red; font-size: inherit;);highlightBuilder.postTags(/font);searchSourceBuilder.highlighter(highlightBuilder);searchSourceBuilder.query(boolQueryBuilder);searchRequest.source(searchSourceBuilder);SearchResponse searchResponse restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);//3.结果封装返回ListMap list new ArrayList();SearchHit[] hits searchResponse.getHits().getHits();for (SearchHit hit : hits) {String json hit.getSourceAsString();Map map JSON.parseObject(json, Map.class);//处理高亮if(hit.getHighlightFields() ! null hit.getHighlightFields().size() 0){Text[] titles hit.getHighlightFields().get(title).getFragments();String title org.apache.commons.lang.StringUtils.join(titles);//高亮标题map.put(h_title,title);}else {//原始标题map.put(h_title,map.get(title));}list.add(map);}return ResponseResult.okResult(list);}/*** 保存用户搜索历史记录* param keyword* param userId*/OverrideAsyncpublic void insert(String keyword, Integer userId) {/*查询当前用户搜索的关键字*///构造查询条件Query query Query.query(Criteria.where(userid).is(userId).and(keyword).is(keyword));//执行mongodb库的查询ApUserSearch userSearch mongoTemplate.findOne(query, ApUserSearch.class);/*存在则更新创建时间重新保存*/if(userSearch ! null) {userSearch.setCreatedTime(new Date());mongoTemplate.save(userSearch);return;}/*不存在判断当前搜索记录数量是否超过10条*/userSearch new ApUserSearch();userSearch.setUserId(userId);userSearch.setKeyword(keyword);userSearch.setCreatedTime(new Date());//构造搜索条件Query query1 Query.query(Criteria.where(userId).is(userId));query1.with(Sort.by(Sort.Direction.DESC,createdTime));//执行查询ListApUserSearch list mongoTemplate.find(query1, ApUserSearch.class);//判断listif(list null || list.size() 10){mongoTemplate.save(userSearch);}else {//获取mongodb中最后一条数据就ApUserSearch apUserSearch list.get(list.size() - 1);//findAndReplace:根据查询条件替换库中的数据mongoTemplate.findAndReplace(Query.query(Criteria.where(id).is(apUserSearch.getId())),userSearch);}}}4、测试 前端输入搜索内容 查看数据库mongdb中的数据成功添加 下一篇Mongodb业务应用2_Success___的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88163.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正规的企业网站建设描述网站的整体建设一般步骤

图书管理系统 项目使用jsp servletmysql实现; 登陆注册 首页 首页显示图书信息 图书管理 1添加书籍 2查询书籍 3预览书籍 4修改书籍 用户管理 1查询用户 2修改用户 3 删除用户 链接:https://pan.baidu.com/s/1QXK--ypb6OadbmKFlc0jUQ

个人网站建设的花费手机做app的软件叫什么

在上一篇内容中我们介绍了App脱壳的技术,今天我们来介绍一个和iOS逆向密切相关的知识:越狱。 iOS操作系统的封闭性一直是开发者们关注的焦点之一。为了突破Apple的限制,越狱技术应运而生。本文将深入探讨iOS越狱,包括可越狱的版本…

重庆网站建设制作设计公司哪家好惠州有家最好网站建设

P3978 [TJOI2015]概率论 设fif_ifi​表示节点数为iii的二叉树有多少,gig_igi​表示节点数为iii的二叉树有多少叶子节点。 fn∑i0n−1fifn−1−if_n \sum\limits_{i 0} ^{n - 1}f_if_{n - 1 - i}fn​i0∑n−1​fi​fn−1−i​,f01f_0 1f0​1。 对于g…

做图素材网站哪个好WordPress链接公众号插件

需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云<--/-->阿里云<--/-->华为云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、Qt中的信号和槽 1、信号 2、槽 3、Q_OBJECT 二、Qt中的connect函…

主流建站开源程序有哪些精准营销的好处

出自&#xff1a;http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html this是Javascript语言的一个关键字。 它代表函数运行时&#xff0c;自动生成的一个内部对象&#xff0c;只能在函数内部使用。比如&#xff0c; function test(){ this.x 1; }…

购物网站设计人员推广之家邀请码

面试 Java 基础八股文十问十答第十八期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;多线程场景下如何使用…

荆州网站建设兼职wordpress的知名网站

【BASH】回顾与知识点梳理 十五 十五. 指令与文件的搜寻15.1 脚本文件名的搜寻which (寻找『执行档』) 15.2 文件档名的搜寻whereis (由一些特定的目录中寻找文件文件名)locate / updatedbfind与时间有关的选项与使用者或组名有关的参数与文件权限及名称有关的参数额外可进行的…

产品营销型网站建设网站建设要准备什么软件

INFILE的用法 1&#xff09;模糊导入多个数据的文件。 可以在文件名中使用通配符。 星号 &#xff08;*&#xff09; 表示复数字符&#xff0c;问号 &#xff08;&#xff1f;&#xff09; 表示单个字符。 INFILE emp*.dat INFILE m?emp.dat 2&#xff09;如果不需要导入数据…

电器企业网站建设做网站推广大概需要多少钱

来源&#xff1a;蓝焱资本2021年已过半&#xff0c;物联网时代已经到来。毫无疑问&#xff0c;万物联网的背后是万物数字化&#xff0c;而数字化万物的核心就是传感器。传感器这个概念虽然已经存在多年&#xff0c;但它依旧是个活力无限的领域。随着物联网概念的火热&#xff0…

重庆网站优化软件app开发模板网站

Linux 中有 cron 程序定时执行任务&#xff0c;Kubernetes 的 CronJob 提供了类似的功能&#xff0c;可以定时执行 Job。CronJob 配置文件示例如下&#xff1a; ① batch/v2alpha1 是当前 CronJob 的 apiVersion。 ② 指明当前资源的类型为 CronJob。 ③ schedule 指定什么时候…

台州网站seo字体设计网站有哪些

SQL是结构化的&#xff0c;NoSql是非结构化的 SQL是关联的&#xff1a; Nosql是无关联的&#xff1a; SQL采用的是SQL查询&#xff1a; 语法固定&#xff0c;好处是&#xff1a;只要是关系型数据库&#xff08;Mysql,Oracle&#xff09;&#xff0c;都能够使用相同的语句进行查…

网站主机教程WordPress建站维护服务

此项目是针对PDF、docx、doc、PPT四种非结构化数据进行解析&#xff0c;识别里面的文本和图片。 代码结构 ├── Dockerfile ├── requirements ├── resluts ├── test_data │ ├── 20151202033304658.pdf │ ├── 2020_World_Energy_Data.pdf │ ├── …

公众号网站开发定制鱼缸一般多少钱

接上一篇&#xff1a;分布式6大核心专题_分布式Session https://gblfy.blog.csdn.net/article/details/113802195 文章目录1. 安装redis服务并启动2. 引入Spring Session组件3. 分别启动8081端口和8082端口4. 调用8081登录接口5. 调用8081获取用户信息接口6. 调用8082获取用户信…

优惠卷网站建设怎么挣钱带登录网站模板

程序示例精选 PythonQt多点最短路径(最优路径)算法实现 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonQt多点最短路径(最优路径)算法实现》编写代码&#xff0c;代码整洁&#xff0…

中国建设银行网站如何注册学校的网站开发过程

新加坡服务器数据中心怎么保护网络安全原创 保护新加坡服务器数据中心的网络安全是一个重要的任务&#xff0c;以下是一些常见的保护网络安全的办法和办法&#xff1a; 防火墙设置&#xff1a;装备和办理强壮的防火墙来监控和过滤网络流量&#xff0c;阻止未经授权的拜访和歹意…

页面设计排版网站中国化学第九建设公司网站

哲学&#xff1a;世界观的理论形态&#xff0c;或者说是系统化、理论化的世界观&#xff1b;世界观和方法论的统一。马克思主义哲学&#xff1a;辩证唯物主义和历史唯物主义&#xff0c;关于自然。社会和思维发展的普遍规律的学说&#xff0c;无产阶级世界观的理论体系。世界观…

公司建网站做app要多少钱舟山网站网站建设

目录 一. nginx介绍 1. nginx简介 2. nginx和apache区别 二. nginx编译安装 1. 下载解压nginx安装包&#xff0c;并安装nginx依赖包 2. 创建运行用户和组 3. 编译安装并补全 4. 效验结果 三. 平滑升级nginx 1. 下载解压nginx安装包 2. 编译安装 3. 替换二进制文件 …

域名服务器地址seo优化与推广招聘

1 什么是block iOS SDK 4.0開始&#xff0c;Apple引入了block这一特性。字面上说&#xff0c;block就是一个代码块。可是它的奇妙之处在于在内联(inline)运行的时候(这和C非常像)还能够传递參数。同一时候block本身也能够被作为參数在方法和函数间传递。这就给予了block无限的可…

阿里云学生认证免费服务器网站seo外链平台

01、函数指针1.1、函数指针定义一个函数总是占用一段连续的内存区域&#xff0c;函数名在表达式中有时也会被转换为该函数所在内存区域的首地址&#xff0c;这和数组名非常类似。我们可以把函数的这个首地址&#xff08;或称入口地址&#xff09;赋予一个指针变量&#xff0c;使…

摄影网站的建设的论文商店设计效果图

目录 1. Nginx在CentOS上的安装部署 1.1 Nginx简介 1.2 Nginx安装 1.2.1 安装yum依赖程序 1.2.2 手动添加&#xff0c;nginx的yum仓库 1.2.3 通过yum安装最新稳定版的nginx 1.2.4 启动 1.2.5 配置防火墙放行 1.2.6 启动后浏览器输入Linux服务器的IP地址或主机…