通过文章标签计算相关文章的方式 在我们写博客系统的时候,如果我们没有引入其他的框架,直接自己写代码,能不能找到比较相似的文章推荐给用户呢? 我们来试试吧! 提交参数 当前文章ID,用于获取当前文章的标签进行匹配 推荐数量,返回的条数,后面要做限额处理,比如说5~50. 计算方式 第一种: 获取文章标签 如果标签只有一个,则获取一个。如果标签不指一个,随即获取一个 根据标签去查询其他文章,并且文章ID不为当前文章的ID 如果数量不够,获取最新的进行补充 第二种: 获取文章标签 如果标签只有一个,则获取一个。如果标签不指一个,则获取第一个。 根据标签获取文章,如果不够,标签只有一个的话,获取最新的文章;标签不指一个,则获取下一个标签,再不够再获取最新的文章即可 实现 博客系统目前的实现方式是第一种 代码: 
    /**
     * 获取推荐文章,通过标签来计算
     *
     * @param articleId
     * @param size
     * @return
     */
    @Override
    public ResponseResult listRecommendArticle(String articleId, int size) {
        //查询文章,不需要文章,只需要标签
        String labels = articleDao.listArticleLabelsById(articleId);
        //打散标签
        List
 labelList = new ArrayList<>();
        if (!labels.contains("-")) {
            labelList.add(labels);
        } else {
            labelList.addAll(Arrays.asList(labels.split("-")));
        }
        //从列表中随即获取一标签,查询与此标签相似的文章
        String targetLabel = labelList.get(random.nextInt(labelList.size()));
        log.info("targetLabel == > " + targetLabel);
        List likeResultList = articleNoContentDao.listArticleByLikeLabel("%" + targetLabel + "%", articleId, size);
        //判断它的长度
        if (likeResultList.size() < size) {
            //说明不够数量,获取最新的文章作为补充
            int dxSize = size - likeResultList.size();
            List dxList = articleNoContentDao.listLastedArticleBySize(articleId, dxSize);
            //这个写法有一定的弊端,会把可能前面找到的也加进来,概率比较小,如果文章比较多
            likeResultList.addAll(dxList);
        }
        return ResponseResult.SUCCESS("获取推荐文章成功.").setData(likeResultList);
    }
 结果