readdict.go 950 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. fi, _ = os.Open("./baidu_fsw.dict")
  15. } else {
  16. fi, _ = os.Open(config[0])
  17. }
  18. defer fi.Close()
  19. bs, _ := ioutil.ReadAll(fi)
  20. fswwords := strings.Split(string(bs), "\r\n")
  21. if len(fswwords) == 1 {
  22. fswwords = strings.Split(string(bs), "\n")
  23. }
  24. log.Println(len(fswwords))
  25. //要组装关键字
  26. link = make(map[string]interface{})
  27. var nowMap *map[string]interface{}
  28. for _, key := range fswwords {
  29. nowMap = &link
  30. for i := 0; i < len(key); i++ {
  31. kc := key[i : i+1]
  32. if v, ok := (*nowMap)[kc]; ok {
  33. nowMap, _ = v.(*map[string]interface{})
  34. } else {
  35. newMap := map[string]interface{}{}
  36. newMap["YN"] = "N"
  37. (*nowMap)[kc] = &newMap
  38. nowMap = &newMap
  39. }
  40. if i == len(key)-1 {
  41. (*nowMap)["YN"] = "Y"
  42. }
  43. }
  44. }
  45. }