func addBlackWords(w http.ResponseWriter, r *http.Request) { resp := make(map[string]interface{}) q := r.FormValue("q") op := r.FormValue("type") if op == "init" { trie.NewBlackTrie() } if q == "" { resp["code"] = 0 resp["error"] = "参数q不能为空" } else { i := 0 words := strings.Split(q, ",") for _, s := range words { trie.BlackTrie().Add(strings.Trim(s, " ")) i++ } resp["code"] = 1 resp["mess"] = fmt.Sprintf("共添加了%d个敏感词", i) } serveJson(w, resp) }
func deleteBlackWords(w http.ResponseWriter, r *http.Request) { resp := make(map[string]interface{}) q := r.FormValue("q") if q == "" { body, err := ioutil.ReadAll(r.Body) if err == nil { data := make(map[string]string) err = json.Unmarshal(body, &data) if err == nil { if qq, ok := data["q"]; ok { q = qq } } } } if q == "" { resp["code"] = 0 resp["error"] = "参数q不能为空" } else { i := 0 words := strings.Split(q, ",") for _, s := range words { trie.BlackTrie().Del(strings.Trim(s, " ")) i++ } resp["code"] = 1 resp["mess"] = fmt.Sprintf("共删除了%d个敏感词", i) } serveJson(w, resp) }
func showBlackWords(w http.ResponseWriter, r *http.Request) { words := trie.BlackTrie().ReadAll() str := strings.Join(words, "\n") w.Header().Set("Server", "goo") w.Header().Set("Content-Type", "text/html; charset=utf-8") w.WriteHeader(200) w.Write([]byte(str)) }
// 从字典中装入敏感词库 func LoadDict() { trieHandle := trie.BlackTrie() load(trieHandle, "add", "./dictionary/black/default") load(trieHandle, "del", "./dictionary/black/exclude") trieHandle = trie.WhitePrefixTrie() load(trieHandle, "add", "./dictionary/white/prefix") trieHandle = trie.WhiteSuffixTrie() load(trieHandle, "add", "./dictionary/white/suffix") }
func queryWords(w http.ResponseWriter, r *http.Request) { paramName := "q" type resp struct { Code int `json:"code"` Error string `json:"error,omitempty"` Keywords []string `json:"keywords,omitempty"` Text string `json:"text,omitempty"` } text := "" if r.Method == "GET" { params, err := url.ParseQuery(r.URL.RawQuery) if err == nil { if q, ok := params[paramName]; ok { text = q[0] } } else { fmt.Println(err) } } else if r.Method == "POST" { text = r.FormValue(paramName) } res := resp{ Keywords: []string{}, } if text != "" { res.Code = 1 ok, keyword, newText := trie.BlackTrie().Query(text) if ok { res.Keywords = keyword res.Text = newText } } else { res.Code = 0 res.Error = "参数" + paramName + "不能为空" } serveJson(w, res) }