package main import ( "fmt" util "jygit.jydev.jianyu360.cn/data_processing/common_utils" es "jygit.jydev.jianyu360.cn/data_processing/common_utils/elastic" "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb" "log" "regexp" ) var ( Mgo *mongodb.MongodbSim GF GlobalConf Esa *es.Elastic Esb *es.Elastic //Labels []LabelData //全局所有标签规则 ) type DataRes struct { Name string Weight float64 } func main() { REG, _ = regexp.Compile(`\(.*?\)\d*`) InitConfig() InitMgo() //data := map[string]interface{}{ // "conpamy_name": "发展和改革投资", // "cc_name": "ccdd", // "name": "发展治理委员会", //} defer util.Catch() sess := Mgo.GetMgoConn() defer Mgo.DestoryMongoConn(sess) it := sess.DB("wcc").C("bidding").Find(nil).Select(nil).Iter() fmt.Println("taskRun 开始") count := 0 for tmp := make(map[string]interface{}); it.Next(&tmp); count++ { ResMap := make([]LabelData, 0) id := mongodb.BsonIdToSId(tmp["_id"]) for _, v := range GF.Labels { //fmt.Println(v) v.RegRule = DealRules(v.Rule) if v.Name == "自然资源" { log.Println(v) } //Labels = append(Labels, v) //匹配规则,返回规则内匹配的关键词 //根据识别字段,开始各个字段匹配 for _, vv := range v.Field { text := util.ObjToString(tmp[vv]) if text == "" { continue } rs, _ := DFAAnalyRules(text, v.RegRule) if rs { ResMap = append(ResMap, v) continue } } } // // 处理有重复的标签 mergedMap := MergeLabelData(ResMap) for key, values := range mergedMap { fmt.Printf("Sfield: %s\n", key) datas := make([]DataRes, 0) for _, value := range values { fmt.Printf(" Name: %s, Weight: %f\n", value.Name, value.Weight) dar := DataRes{ Name: value.Name, Weight: value.Weight, } datas = append(datas, dar) //log.Println("aaaaaa", key, "==", datas) update := map[string]interface{}{ key: datas, } Mgo.UpdateById("bidding", id, map[string]interface{}{"$set": update}) } } } }