main.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package main
  2. import (
  3. "fmt"
  4. util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  5. es "jygit.jydev.jianyu360.cn/data_processing/common_utils/elastic"
  6. "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
  7. "log"
  8. "regexp"
  9. )
  10. var (
  11. Mgo *mongodb.MongodbSim
  12. GF GlobalConf
  13. Esa *es.Elastic
  14. Esb *es.Elastic
  15. //Labels []LabelData //全局所有标签规则
  16. )
  17. type DataRes struct {
  18. Name string
  19. Weight float64
  20. }
  21. func main() {
  22. REG, _ = regexp.Compile(`\(.*?\)\d*`)
  23. InitConfig()
  24. InitMgo()
  25. //data := map[string]interface{}{
  26. // "conpamy_name": "发展和改革投资",
  27. // "cc_name": "ccdd",
  28. // "name": "发展治理委员会",
  29. //}
  30. defer util.Catch()
  31. sess := Mgo.GetMgoConn()
  32. defer Mgo.DestoryMongoConn(sess)
  33. it := sess.DB("wcc").C("bidding").Find(nil).Select(nil).Iter()
  34. fmt.Println("taskRun 开始")
  35. count := 0
  36. for tmp := make(map[string]interface{}); it.Next(&tmp); count++ {
  37. ResMap := make([]LabelData, 0)
  38. id := mongodb.BsonIdToSId(tmp["_id"])
  39. for _, v := range GF.Labels {
  40. //fmt.Println(v)
  41. v.RegRule = DealRules(v.Rule)
  42. if v.Name == "自然资源" {
  43. log.Println(v)
  44. }
  45. //Labels = append(Labels, v)
  46. //匹配规则,返回规则内匹配的关键词
  47. //根据识别字段,开始各个字段匹配
  48. for _, vv := range v.Field {
  49. text := util.ObjToString(tmp[vv])
  50. if text == "" {
  51. continue
  52. }
  53. rs, _ := DFAAnalyRules(text, v.RegRule)
  54. if rs {
  55. ResMap = append(ResMap, v)
  56. continue
  57. }
  58. }
  59. }
  60. //
  61. // 处理有重复的标签
  62. mergedMap := MergeLabelData(ResMap)
  63. for key, values := range mergedMap {
  64. fmt.Printf("Sfield: %s\n", key)
  65. datas := make([]DataRes, 0)
  66. for _, value := range values {
  67. fmt.Printf(" Name: %s, Weight: %f\n", value.Name, value.Weight)
  68. dar := DataRes{
  69. Name: value.Name,
  70. Weight: value.Weight,
  71. }
  72. datas = append(datas, dar)
  73. //log.Println("aaaaaa", key, "==", datas)
  74. update := map[string]interface{}{
  75. key: datas,
  76. }
  77. Mgo.UpdateById("bidding", id, map[string]interface{}{"$set": update})
  78. }
  79. }
  80. }
  81. }