分享好友 最新动态首页 最新动态分类 切换频道
微服务项目实战-黑马头条(八):App端-文章ES搜索、MongoDB搜索记录和关键词联想
2024-12-25 16:51


  • 文章搜索

    • ElasticSearch环境搭建

    • 索引库创建

    • 文章搜索多条件复合查询

    • 索引数据同步

  • 搜索历史记录

    • Mongodb环境搭建

    • 异步保存搜索历史

    • 查看搜索历史列表

    • 删除搜索历史

  • 联想词查询

    • 联想词的来源

    • 联想词功能实现

 
 
 
 

因为在创建elasticsearch容器的时候,映射了目录,所以可以在宿主机上进行配置ik中文分词器

在去选择ik分词器的时候,需要与elasticsearch的版本好对应上

把资料中的上传到服务器上,放到对应目录(plugins)解压

 
 
 
 
 
  • 用户输入关键可搜索文章列表

  • 关键词高亮显示

  • 文章列表展示与home展示一样,当用户点击某一篇文章,可查看文章详情

为了加快检索的效率,在查询的时候不会直接从数据库中查询文章,需要在elasticsearch中进行高速检索。

使用postman添加映射

  1. ,添加映射: http://192.168.200.130:9200/app_info_article
 
 
  1. ,查询映射:http://192.168.200.130:9200/app_info_article

  2. ,删除索引及映射:http://192.168.200.130:9200/app_info_article

  3. ,查询所有文档:http://192.168.200.130:9200/app_info_article/_search

3.4.1 导入es-init到heima-leadnews-test工程下

3.4.2 查询所有的文章信息,批量导入到es索引库中

 

3.4.3 测试

postman查询所有的es中数据 GET请求: http://192.168.200.130:9200/app_info_article/_search

3.5.1 搭建搜索微服务

(1)导入 heima-leadnews-search

(2)在heima-leadnews-service的pom中添加依赖

 

(3)nacos配置中心leadnews-search

 

3.5.2 搜索接口定义

参数:UserSearchDto

 

响应结果

3.5.3 控制层接口定义

 

3.5.4 业务层实现

创建业务层接口:ApArticleSearchService

 

实现类

 

3.5.5 控制层实现

新建控制器ArticleSearchController

 

3.5.6 测试

需要在app的网关中添加搜索微服务的路由配置

 

启动项目进行测试,至少要启动文章微服务,用户微服务,搜索微服务,app网关微服务,app前端工程

3.6.1 需求分析

3.6.2 文章微服务发送消息

1.把SearchArticleVo放到model工程下

 

2.文章微服务的ArticleFreemarkerService中的buildArticleToMinIO方法中收集数据并发送消息

完整代码如下

 

在ArticleConstants类中添加新的常量,完整代码如下

 

3.文章微服务集成kafka发送消息

在文章微服务的nacos的配置中心添加如下配置

 

3.6.3 搜索微服务接收消息并创建索引

1.搜索微服务中添加kafka的配置,nacos配置如下

 

2.定义监听接收消息,保存索引数据

 

3.测试
启动全部为微服务,自媒体发布一篇文章[已上架],APP端搜索可以看到该文章。

  • 展示用户的搜索记录10条,按照搜索关键词的时间倒序
  • 可以删除搜索记录
  • 保存历史记录,保存10条,多余的则删除最久的历史记录

用户的搜索记录,需要给每一个用户都保存一份,数据量较大,要求加载速度快,通常这样的数据存储到mongodb更合适,不建议直接存储到关系型数据库中

4.3.1 安装MongoDB

拉取镜像

 

创建容器

 

4.3.2 导入资料中的mongo-demo项目到heima-leadnews-test中

其中有三项配置比较关键

第一:mongo依赖

 

第二:mongo配置

 

第三:映射

 

4.3.3 核心方法

 
 

4.4.1 实现思路

用户输入关键字进行搜索的异步记录关键字

异步保存搜索记录

用户搜索记录对应的集合,对应实体类

 

4.4.2 实现步骤

1.搜索微服务集成mongodb

:pom依赖

 

:nacos配置

 

:在当天资料中找到对应的实体类拷贝到搜索微服务下

在当天资料中找到对应的MongoDB文件leadnews-history.sql运行

2.创建ApUserSearchService新增insert方法

 

实现类

 

3.参考自媒体相关微服务,在搜索微服务中获取当前登录的用户

1)在app网关的过滤器中获取用户信息存入header中

 

2)然后在leadnews-search服务中,添加拦截器,从网关中获取用户id并存入线程中

 

3)上面用到了一个工具类AppThreadLocalUtil用来从线程中存取/取出用户【该类放到heima-leadnews-utils中的thread包下】

 

4)最后在leadnews-search服务中,添加拦截器的配置类,拦截所有请求

 

4.在ArticleSearchService的search方法中调用保存历史记录

完整代码如下

 

5.保存历史记录中开启异步调用,添加注解@Async

 

6.在搜索微服务引导类上开启异步调用@EnableAsync

 

7.测试,搜索后查看结果

4.5.1 思路分析

按照当前用户,按照时间倒序查询

说明接口路径/api/v1/history/load请求方式POST参数无响应结果ResponseResult

4.5.2 接口定义

 

4.5.3 mapper

已定义

4.5.4 业务层

在ApUserSearchService中新增方法

 

实现方法

 

4.5.5 控制器

 

4.5.6 测试

打开app的搜索页面,可以查看搜索记录列表

4.6.1 思路分析

按照搜索历史id删除

说明接口路径/api/v1/history/del请求方式POST参数HistorySearchDto响应结果ResponseResult

4.6.2 接口定义

在ApUserSearchController接口新增方法

 

HistorySearchDto

 

4.6.3 业务层

在ApUserSearchService中新增方法

 

实现方法

 

4.6.4 控制器

修改ApUserSearchController,补全方法

 

4.6.5 测试

打开app可以删除搜索记录

  • 根据用户输入的关键字展示联想词

对应实体类

 
 

通常是网上搜索频率比较高的一些词,通常在企业中有两部分来源

第一:自己维护搜索词

通过分析用户搜索频率较高的词,按照排名作为搜索词

第二:第三方获取

关键词规划师(百度)、5118、爱站网

导入资料中的ap_associate_words.js脚本到mongo中

5.3.1 接口定义

说明接口路径/api/v1/associate/search请求方式POST参数UserSearchDto响应结果ResponseResult

新建接口

 

5.3.2 业务层

新建联想词业务层接口

 

实现类

 
 

5.3.3 控制器

新建联想词控制器

 

5.3.4 测试

最新文章
阿里数据中心失火;精工发布AI外骨骼;亚马逊印度快送;英伟达遭反垄断调查 | 12月11日互联网日报
官方回应阿里巴巴云计算数据中心失火广东河源源城区阿里巴巴云端数据库于12月9日下午发生火情。事故现场火势猛烈,浓烟滚滚,引发广泛关注。据了解,火灾发生在源南镇辖区内,经过迅速扑救,大火已于当日下午被成功扑灭。当地宣传部工作人
聚焦“AI+文旅” 9家企业与两江新区签订意向合作协议
  上海寺页科技有限公司打造的“FuntasyVR超感剧场”以 FuntasyVR 超感剧场为空间载体,不断研发以文化与科技为题材的全新体验,设计了探秘金字塔、寻梦三星堆、探秘巴黎圣母院等内容,消费者可通过VR头显参与单场25分钟的沉浸式体验,体
智能作家助手:一键,助力创作家高效创作
随着科技的飞速发展,人工智能逐渐成为我国经济社会发展的要紧推动力量。在众多人工智能应用中,创作家以其特别的功能和强大的创作能力,受到了广大创作者的喜爱。本文将为您介绍一款全新的智能作家助手——创作家,一键,助您高效创作。传
【游戏相关】《真实MiG
以下正文一架飞机的操控品质是表现在飞行员能够多轻松且精确地完成飞机在任务中所需的机动上的。这在本质上由两个因素组成:- 飞机在没有飞行员交互介入(开环)的情况下显示出的固有稳定性- 闭环操控特性;例如,协调控制,动力控制如MiG-
母亲节专题:动漫中那些难忘的母爱
  很多动漫中的母亲在故事开始之前就已经逝去,但是她们的爱始终鼓舞着孩子们奋勇前行。那么她们临终前是如何将心意表达出来的呢?  “鸣人,你今后可能会遇到很多困难……会背负很多痛苦,但一定要相信自己,明确自己的目标和梦想,勇
比漫熊正版下载最新版
比漫熊正版一款备受漫迷们喜爱的软件,比漫熊正版为读者提供了一个没有广告打扰的舒适漫画阅读环境,让读者能够更好地享受阅读的乐趣;而且漫画作品种类丰富,涵盖了各种题材,每个用户都能够找到自己喜欢的漫画作品,软件内部还按照漫画题
如何协商还款
小编导语在现代社会中,借款已经成为人们生活中不可或缺的一部分。无论是为了购房、购车,还是应对突发的经济困难,贷款都能为我们提供必要的资金支持。当我们面临还款压力时,如何有效地协商还款成为了一个重要的问。本站将从多个角度探讨
“过个屁年!”30岁河南女子冲上热搜:2024,最想哭的一幕来了
2014年春晚的第一个节目是《想你的365天》。演唱者:李玟、、、林志炫。镜头第一个切到的人就是。10年前她还在春晚上献唱,10年后她已在另一个世界了。物是人非。那一年春晚,主持人大家都不陌生:朱军、董卿、张国立、李思思、毕福剑。彼
分享5个自动生成PPT的网站
1、Mindshow 之前公众号里分享过这款做PPT的AI工具,这次再拿出来分享一次。 没别的原因,确实好用。 而且也是目前能够和ChatGPT结合使用最好的PPT工具之一。 直接在ChatGPT生成PPT内容,转成Markdown格式复制进来一键排
华为智慧PC助力年终总结,提升职场效率的最佳选择
随着2024年的结束,职场人士和学生们都在进行着年度总结,回顾过去一年的经验与挑战。在这个过程中,一款真正的智慧PC能够显著提升工作效率,帮助用户更好地完成总结与呈现,而华为的MateBook系列无疑是其中的佼佼者。在快速发展的混合办公
相关文章
推荐文章
发表评论
0评