SpringBoot博客开发日常记录-搜索功能以及搜索词汇云图显示

博客中需要包含一个简单的检索功能,我自己设定的目标是能够通过检索一定的关键词来获取带有这些关键词的标题的博客列表,并且能够通过云图展示搜索趋势。

1. Service

在ArticleService.java中添加三个方法

//模糊查找 title的相关内容
List<Article> getArticleListByTitle(String contents);
//搜索记录相关
List<Search> getSearchHistory();
int addSearchHistory(Search search);

在ArticleServiceImpl.java中对其进行实现

	@Override
     /**
       * @description: 查找的匹配方式是%contents%,如果检索到,则会将这个contents加到search History中
       * @param [contents]
       * @return java.util.List<com.nevergetme.nevergetmeweb.bean.Article>
       * @throws
       * @author Alden He
       * @date 2019/5/23 19:04
       */
    public List<Article> getArticleListByTitle(String contents){
   
        List<Article> list=articleMapper.getArticleListByTitle("%"+contents+"%");
        if(list!=null&&list.size()>0)articleMapper.addSearchHistory(new Search(contents,1));
        return list;
    }
    //搜索记录相关
    @Override
    public List<Search> getSearchHistory(){
   
        return articleMapper.getSearchHistory();
    }
    @Override
    public int addSearchHistory(Search search){
   
        return articleMapper.addSearchHistory(search);
    }

这里的一个处理逻辑是如果搜索结果存在则将搜索词添加到搜索历史中

2. Mapper

在ArticleMapper添加如下方法

	List<Article> getArticleListByTitle(String contents);
	//搜索记录相关
    List<Search> getSearchHistory();
    int addSearchHistory(Search search);

在ArticleMapper.xml中的实现为

	<select id="getArticleListByTitle" parameterType="java.lang.String" resultMap="articleResultMapList">
        select article.id,article.title,article.shortcut,
               DATE_FORMAT(article.publishDate,'%Y-%m-%d') publishDate,
               DATE_FORMAT(article.updateDate,'%Y-%m-%d') updateDate,article.likes,article.visitTimes,article.isStick,article.cover,
               user.id as user_id,user.username
        from article left join user on article.authorId=user.id where article.title like #{contents}
        order by isStick desc,article.id desc
    </select>
    <select id="getSearchHistory" resultType="com.nevergetme.nevergetmeweb.bean.Search">
        select * from SearchHistory
    </select>
    <insert id="addSearchHistory" parameterType="com.nevergetme.nevergetmeweb.bean.Search" keyProperty="id" useGeneratedKeys="true">
        insert into SearchHistory(content,times) values(#{content},#{times}) on duplicate key update times=times+1
    </insert>

3. SQL建表

需要建立存储搜索记录的表

CREATE TABLE `searchhistory` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `content` varchar(200
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值