七叶笔记 » java编程 » SpringBoot 热搜与不雅文字过滤的实现

SpringBoot 热搜与不雅文字过滤的实现

一、前言

这里主要讲springboot整合redis的个人搜索记录与热搜、敏感词过滤与替换两个功能,下面进行环境准备,引入相关maven依赖

application.yml配置为

 最后敏感词文本文件放在resources/static目录下,取名为word.txt,敏感词文本网上很多,这里就随便贴一个:github敏感词

二、不雅文字过滤

1、实现原理

简单原理如下图所示,使用了DFA算法,创建结点类,里面包含是否是敏感词结束符,以及一个HashMap,哈希里key值存储的是敏感词的一个词,value指向下一个结点(即指向下一个词),一个哈希表中可以存放多个值,比如赌博、赌黄这两个都是敏感词。

2、实现方法

2.1 敏感词库初始化

敏感词库的初始化,这里主要工作是读取敏感词文件,在内存中构建好敏感词的Map节点

2.2 敏感词过滤器

敏感词过滤器,主要功能是初始化敏感词库,敏感词的过滤以及替换

2.3 测试使用

最后进行测试,这里有两种方式可以获取,因为容器初始化时会默认执行无参构造

三、Redis搜索栏热搜

1、前言

使用java和redis实现一个简单的热搜功能,具备以下功能:

搜索栏展示当前登陆的个人用户的搜索历史记录,删除个人历史记录用户在搜索栏输入某字符,则将该字符记录下来 以zset格式存储的redis中,记录该字符被搜索的个数以及当前的时间戳 (用了DFA算法)每当用户查询了已在redis存在了的字符时,则直接累加个数, 用来获取平台上最热查询的十条数据。(可以自己写接口或者直接在redis中添加一些预备好的关键词)最后还要做不雅文字过滤功能。

代码实现热搜与个人搜索记录功能,主要controller层下几个方法就行了 :

向redis 添加热搜词汇(添加的时候使用下面不雅文字过滤的方法来过滤下这个词汇,合法再去存储每次点击给相关词热度 +1根据key搜索相关最热的前十名插入个人搜索记录查询个人搜索记录

2、代码实现

2.1 创建RedisKeyUtils 工具类

管理redis的键,防止太乱了

2.2 核心搜索文件

两个文件是一起的

接上一个

2.3 测试使用

以下只是简单的测试,上面的核心函数可以自己组合,一般组合加上敏感词过滤

参考文章

Redis6.0学习笔记

到此这篇关于SpringBoot 热搜与不雅文字过滤的实现的文章就介绍到这了,更多相关SpringBoot 热搜与不雅文字过滤内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章