# 前言
这里主要讲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 测试使用
以下只是简单的测试,上面的核心函数可以自己组合,一般组合加上敏感词过滤