English | 中文
敏感词过滤, 支持多种数据源加载, 多种过滤算法, 多种操作功能
- 支持多种操作功能
Filter()
返回过滤后的文本Replace()
返回替换了敏感词后的文本IsSensitive()
返回文本是否含有敏感词FindOne()
返回匹配到的第一个敏感词FindAll()
返回匹配到的所有敏感词FindAllCount()
返回匹配到的所有敏感词及出现次数
- 支持多种数据源加载, 动态修改数据源
- 支持内存存储
- 支持mysql存储
- 支持mongo存储
- 支持多种字典加载方式
- 支持运行过程中动态修改数据源
- 支持多种过滤算法
- DFA 使用
trie tree
数据结构匹配敏感词 - AC 自动机
- DFA 使用
package main
import (
"fmt"
"github.com/StellarisW/go-sensitive"
)
func main() {
filterManager := sensitive.NewFilter(
sensitive.StoreOption{
Type: sensitive.StoreMemory
},
sensitive.FilterOption{
Type: sensitive.FilterDfa
}
)
// 加载字典
err:=filterManager.GetStore().LoadDictPath("path-to-dict")
if err != nil {
fmt.Println(err)
return
}
// 动态增加词汇
err=filterManager.GetStore().AddWord("这是敏感词1", "这是敏感词2", "这是敏感词3")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(filterManager.GetFilter().IsSensitive("这是敏感词1,这是敏感词2,这是敏感词3,这是敏感词1,这里没有敏感词"))
fmt.Println(filterManager.GetFilter().Filter("这是敏感词1,这是敏感词2,这是敏感词3,这是敏感词1,这里没有敏感词"))
fmt.Println(filterManager.GetFilter().Replace("这是敏感词1,这是敏感词2,这是敏感词3,这是敏感词1,这里没有敏感词", '*'))
fmt.Println(filterManager.GetFilter().FindOne("这是敏感词1,这是敏感词2,这是敏感词3,这是敏感词1,这里没有敏感词"))
fmt.Println(filterManager.GetFilter().FindAll("这是敏感词1,这是敏感词2,这是敏感词3,这是敏感词1,这里没有敏感词"))
fmt.Println(filterManager.GetFilter().FindAllCount("这是敏感词1,这是敏感词2,这是敏感词3,这是敏感词1,这里没有敏感词"))
}
$ go get -u github.com/StellarisW/go-sensitive
import "github.com/StellarisW/go-sensitive"
- add mongo data source support
- add bloom algorithm