readdict.go 965 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package fsw
  2. import (
  3. "io/ioutil"
  4. "log"
  5. "os"
  6. "strings"
  7. )
  8. //敏感词库
  9. var link map[string]interface{}
  10. //读取字段
  11. func ReadFswDict(config ...string) {
  12. var fi *os.File
  13. if len(config) == 0 {
  14. fi1, err := os.Open("./mosaic_fsw.dict")
  15. log.Println("err:", err)
  16. fi = fi1
  17. } else {
  18. fi, _ = os.Open(config[0])
  19. }
  20. defer fi.Close()
  21. bs, _ := ioutil.ReadAll(fi)
  22. fswwords := strings.Split(string(bs), "\r\n")
  23. if len(fswwords) == 1 {
  24. fswwords = strings.Split(string(bs), "\n")
  25. }
  26. //要组装关键字
  27. link = make(map[string]interface{})
  28. var nowMap *map[string]interface{}
  29. for _, key := range fswwords {
  30. nowMap = &link
  31. for i := 0; i < len(key); i++ {
  32. kc := key[i : i+1]
  33. if v, ok := (*nowMap)[kc]; ok {
  34. nowMap, _ = v.(*map[string]interface{})
  35. } else {
  36. newMap := map[string]interface{}{}
  37. newMap["YN"] = "N"
  38. (*nowMap)[kc] = &newMap
  39. nowMap = &newMap
  40. }
  41. if i == len(key)-1 {
  42. (*nowMap)["YN"] = "Y"
  43. }
  44. }
  45. }
  46. }