我是怎么做到开源系统中类似CSDN的搜索功能的?

91 阅读2分钟

写在前面:

最近有一个想法,做一个程序员师徒系统。因为在大学期间的我在学习java的时候非常地迷茫,找不到自己的方向,也没有一个社会上有经验的前辈去指导,所以走了很多的弯路。后来工作了,想把自己的避坑经验分享给别人,但是发现身边都是有经验的开发者,也没有机会去分享自己的想法,所以富贵同学就想做一个程序员专属的师徒系统,秉承着徒弟能够有人指教少走弯路,师傅能桃李满天下的目的,所以开始做这个师徒系统,也会同步更新该系统所用到的技术,并且作为教程分享给大家,希望大家能够关注一波。

请添加图片描述

时隔这么久,富贵同学又给大家带来无敌干货啦!! 首先我们来看一下csdn的搜索功能,根据搜索关键字,展示对应的内容,达到搜索的功能 在这里插入图片描述 那么这个是怎么做到的呢?我们可不可以在数据表中用sql写like语句? 答案是可以,但是效率不高,尤其是在数据量大的时候,会造成卡顿效果,这会让用户的体验感直线下降,所以这里不卖关子了,这里用到一项新的技术:ElasticSearch。 说道这里,老规矩,先看一看这个是个什么牛鬼蛇神: 在这里插入图片描述 ElasticSearch首页有一句话:your know,for search! 好家伙,口气这么大!!! 首先给大家介绍一下在springboot中怎么使用elasticsearch: SpringBoot集成ElasticSearch 7.6.2 如果你先看完了这篇博客,你会有很大的收获 核心技术是在这里:

    @Override
    public boolean save(Blog entity) {

        //保存到es中
        try {
            IndexResponse indexResponse = elasticSearchUtil.addEntity(entity, ElasticSearchConstant.TEXT_INDEX);
            entity.setElsearchId(indexResponse.getId());
        } catch (IOException e) {
            e.printStackTrace();
        }

        return super.save(entity);
    }

其实,很简单,我们在创建博客的时候将这个博客整个传入到ElasticSearch 中去,然后我们去搜索:


    /**搜索*/
    @ApiOperation("搜索")
    @GetMapping("/search")
    public ResponseUtils search(@RequestParam String searchMatch,@RequestParam String searchStr) throws IOException {
        return ResponseUtils.success(elasticSearchUtil.search(searchMatch,searchStr));
    }

在这里插入图片描述 这样,既有权重,又有搜索出来的内容 在这里插入图片描述 所以,师徒系统集成elasticsearch就可以实现极速搜索的功能啦!!!

说在之后

师徒系统我会一直更新,因为是开源的项目,所以我也希望有更多的小伙伴加入进来!! 这是程序员师徒管理系统的地址: 程序员师徒管理系统 在这里插入图片描述