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) } }