| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- package keyword
- import (
- "encoding/json"
- "os"
- "regexp"
- "time"
- "bet24.com/log"
- platformconfig "bet24.com/servers/micros/platformconfig/proto"
- )
- const config_key = "keywords"
- const refresh_config_sec = 300
- var config_string string
- // 屏蔽词列表
- var keywordList struct {
- Word []string
- maps map[string]string
- regex *regexp.Regexp
- }
- var trie = NewTrie()
- func Run() {
- loadKeywords()
- }
- func loadKeywords() {
- time.AfterFunc(refresh_config_sec*time.Second, loadKeywords)
- configString := platformconfig.GetConfig(config_key)
- if configString == "" {
- data, err := os.ReadFile("fishconf/Keyword.json")
- //fmt.Println(string(data))
- if err != nil {
- log.Release("read config failed fishconf/Keyword.json %v", err)
- return
- }
- configString = string(data)
- if configString != "" {
- platformconfig.SetConfig(config_key, configString)
- }
- }
- if config_string == configString {
- return
- }
- config_string = configString
- err := json.Unmarshal([]byte(configString), &keywordList)
- trie = NewTrie()
- for _, word := range keywordList.Word {
- trie.Insert(word)
- }
- if err != nil {
- log.Release("Unmarshal config failed fishconf/Keyword.json err %v", err)
- }
- }
- // /////////////测试本地加载/////////////////////////////////
- func LoadKeywordsLocal() {
- configString := ""
- if configString == "" {
- data, err := os.ReadFile("Keyword.json")
- //fmt.Println(string(data))
- if err != nil {
- log.Release("read config failed fishconf/Keyword.json %v", err)
- return
- }
- configString = string(data)
- }
- config_string = configString
- err := json.Unmarshal([]byte(configString), &keywordList)
- for _, word := range keywordList.Word {
- trie.Insert(word)
- }
- if err != nil {
- log.Release("Unmarshal config failed fishconf/Keyword.json err %v", err)
- }
- }
- ////////////////////////测试本地加载end////////////////
- func ParseKeyword(in string) string {
- return FilterSensitiveWords(in, trie)
- }
- func Dump() {
- log.Release("-------------------------------")
- log.Release("keyword.dump keyword count = %d", len(keywordList.Word))
- defer func() {
- log.Release("+++++++++++++++++++++++++++++++")
- log.Release("")
- }()
- for _, v := range keywordList.Word {
- log.Release(" %s", v)
- }
- }
|