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.