Documentation ¶
Overview ¶
Package sensitivewords golang实现DFA算法的敏感词查找、过滤替换、敏感词匹配检测
Example ¶
package main import ( "fmt" "github.com/feiin/sensitivewords" ) func main() { sensitive := sensitivewords.New() sensitive.LoadFromFile("./keywords.txt") sensitive.AddWord("测试") sensitive.AddWords("+q", "+v") s, keyword := sensitive.Find("测试啊+q/+v,尼玛,哈哈") fmt.Printf("%v,%v\n", s, keyword) }
Output: true,测试
Index ¶
- type SensitiveWords
- func (sensitiveWords *SensitiveWords) AddWord(word string)
- func (sensitiveWords *SensitiveWords) AddWords(words ...string)
- func (sensitiveWords *SensitiveWords) Check(input string) (sensitive bool)
- func (sensitiveWords *SensitiveWords) Filter(input string) string
- func (sensitiveWords *SensitiveWords) Find(input string) (sensitive bool, keyword string)
- func (sensitiveWords *SensitiveWords) FindAll(input string) (sensitive bool, results []string)
- func (sensitiveWords *SensitiveWords) FindAny(input string, count int) (sensitive bool, results []string)
- func (sensitiveWords *SensitiveWords) Load(rd io.Reader) error
- func (sensitiveWords *SensitiveWords) LoadFromFile(path string) error
- type TrieNode
- type TrieTree
- func (tree *TrieTree) Add(word string)
- func (tree *TrieTree) AddWords(words ...string)
- func (tree *TrieTree) Filter(input string) string
- func (tree *TrieTree) Find(input string) (sensitive bool, keyword string)
- func (tree *TrieTree) FindAll(input string) (sensitive bool, results []string)
- func (tree *TrieTree) FindAny(input string, count int) (sensitive bool, results []string)
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type SensitiveWords ¶
type SensitiveWords struct {
// contains filtered or unexported fields
}
func New ¶
func New() *SensitiveWords
New 返回敏感词库实例
Example ¶
package main import ( "fmt" "github.com/feiin/sensitivewords" ) func main() { sensitive := sensitivewords.New() sensitive.AddWord("test") fmt.Printf("ok") }
Output: ok
func (*SensitiveWords) AddWord ¶
func (sensitiveWords *SensitiveWords) AddWord(word string)
AddWord 添加敏感词
Example ¶
package main import ( "github.com/feiin/sensitivewords" ) var sensitive *sensitivewords.SensitiveWords = sensitivewords.New() func main() { sensitive.AddWord("测试") }
Output:
func (*SensitiveWords) AddWords ¶
func (sensitiveWords *SensitiveWords) AddWords(words ...string)
AddWords 添加敏感词数组
Example ¶
package main import ( "github.com/feiin/sensitivewords" ) var sensitive *sensitivewords.SensitiveWords = sensitivewords.New() func main() { sensitive.AddWords("测试", "fuc") }
Output:
func (*SensitiveWords) Check ¶
func (sensitiveWords *SensitiveWords) Check(input string) (sensitive bool)
Check 是否包含敏感词
Example ¶
package main import ( "fmt" "github.com/feiin/sensitivewords" ) var sensitive *sensitivewords.SensitiveWords = sensitivewords.New() func main() { find := sensitive.Check("测试") fmt.Printf("%v", find) }
Output: true
func (*SensitiveWords) Filter ¶
func (sensitiveWords *SensitiveWords) Filter(input string) string
Filter 过滤敏感词为*
func (*SensitiveWords) Find ¶
func (sensitiveWords *SensitiveWords) Find(input string) (sensitive bool, keyword string)
Find 查找敏感词,找到第一个就退出
Example ¶
package main import ( "fmt" "github.com/feiin/sensitivewords" ) var sensitive *sensitivewords.SensitiveWords = sensitivewords.New() func main() { sensitive.AddWord("测试") s, keyword := sensitive.Find("测试啊+q/+v,尼玛,哈哈") fmt.Printf("%v,%v\n", s, keyword) //true, 测试 }
Output: true,测试
func (*SensitiveWords) FindAll ¶
func (sensitiveWords *SensitiveWords) FindAll(input string) (sensitive bool, results []string)
FindAll 查找ALL敏感词
Example ¶
package main import ( "fmt" "github.com/feiin/sensitivewords" ) var sensitive *sensitivewords.SensitiveWords = sensitivewords.New() func main() { sensitive.AddWords("测试", "尼玛") s, results := sensitive.FindAll("测试啊+q/+v,尼玛,哈哈") fmt.Printf("%v,%v\n", s, results) }
Output: true,[测试 尼玛]
func (*SensitiveWords) FindAny ¶
func (sensitiveWords *SensitiveWords) FindAny(input string, count int) (sensitive bool, results []string)
FindAny 找到N个敏感词才退出
Example ¶
package main import ( "fmt" "github.com/feiin/sensitivewords" ) var sensitive *sensitivewords.SensitiveWords = sensitivewords.New() func main() { sensitive.AddWords("测试", "尼玛", "哈哈", "+q", "+v") s, results := sensitive.FindAny("测试啊+q/+v,尼玛,哈哈", 4) fmt.Printf("%v,%v\n", s, results) }
Output: true,[测试 +q +v 尼玛]
func (*SensitiveWords) Load ¶
func (sensitiveWords *SensitiveWords) Load(rd io.Reader) error
Load 加载敏感词
Example ¶
package main import ( "os" "github.com/feiin/sensitivewords" ) var sensitive *sensitivewords.SensitiveWords = sensitivewords.New() func main() { // 读取文件、网络请求等等 fs, _ := os.Open("path") defer fs.Close() sensitive.Load(fs) }
Output:
func (*SensitiveWords) LoadFromFile ¶
func (sensitiveWords *SensitiveWords) LoadFromFile(path string) error
LoadFromFile 加载敏感词库文件
Example ¶
package main import ( "github.com/feiin/sensitivewords" ) var sensitive *sensitivewords.SensitiveWords = sensitivewords.New() func main() { sensitive.LoadFromFile("./keywords.txt") }
Output:
Click to show internal directories.
Click to hide internal directories.