【go
一、背景
关于敏感词,设计的过滤与屏蔽的方案我认为有2个方向
- 一是:我们在写入的时候,对全部的文本进行控制,让敏感词被replaced
- 二是:我们在展示的时候,对读取的文本进行控制,让敏感词被replaced
目前我是选择的后者,考虑到写入的性能与并发性,不对写入时进行控制
在读取后添加缓存的方式进行提高读的效率
这里就看您的业务对读需求量大,还是写入,自行评估去决策
二、关于 sensitive 与 trie算法
本次使用插件是 sensitive:
其实他内部还是实现的trie算法
基础算法–Trie树
trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。 – 维基百科
2.1、配置
首先需要加载他的字典
之前尝试过通过对象存储去加载,对比
【go
一、背景
关于敏感词,设计的过滤与屏蔽的方案我认为有2个方向
- 一是:我们在写入的时候,对全部的文本进行控制,让敏感词被replaced
- 二是:我们在展示的时候,对读取的文本进行控制,让敏感词被replaced
目前我是选择的后者,考虑到写入的性能与并发性,不对写入时进行控制
在读取后添加缓存的方式进行提高读的效率
这里就看您的业务对读需求量大,还是写入,自行评估去决策
二、关于 sensitive 与 trie算法
本次使用插件是 sensitive:
其实他内部还是实现的trie算法
基础算法–Trie树
trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。 – 维基百科
2.1、配置
首先需要加载他的字典
之前尝试过通过对象存储去加载,对比