hisdata.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. package util
  2. import (
  3. "go.mongodb.org/mongo-driver/bson"
  4. "go.mongodb.org/mongo-driver/mongo/options"
  5. "log"
  6. "strings"
  7. "sync"
  8. )
  9. func HistoryReadyData() {
  10. mgo, err := InitMgoEn("mongodb://172.17.4.187:27082,172.17.145.163:27083", 10, "fengweiqiang", "fwq@123123")
  11. if err != nil {
  12. log.Fatalln(err)
  13. }
  14. con := mgo.GetCon()
  15. if con == nil {
  16. log.Fatalln("mgo con err")
  17. }
  18. cursor, err := con.Database("mixdata").Collection("qyxy_std").Find(nil, bson.M{}, options.Find().SetProjection(
  19. bson.M{
  20. "company_name": 1,
  21. "company_type": 1,
  22. }).SetSort(bson.M{"_id": 1}))
  23. if err != nil {
  24. log.Fatalln(err)
  25. }
  26. defer cursor.Close(nil)
  27. wg := sync.WaitGroup{}
  28. bools := make(chan bool, 10)
  29. var num uint64
  30. for tmp := map[string]interface{}{}; cursor.Next(nil); tmp = map[string]interface{}{} {
  31. num++
  32. err := cursor.Decode(&tmp)
  33. if err != nil {
  34. log.Println(err)
  35. continue
  36. }
  37. bools<- true
  38. wg.Add(1)
  39. go func(t map[string]interface{}) {
  40. defer func() {
  41. <-bools
  42. wg.Done()
  43. }()
  44. if company_name, ok := t["company_name"].(string); ok {
  45. if reglen.MatchString(company_name) || !unstart_strReg.MatchString(company_name) ||
  46. con_strReg.MatchString(company_name) {
  47. return
  48. }
  49. company_type:= ObjToString(t["company_type"])
  50. if strings.Contains(company_type,"个人")||strings.Contains(company_type,"个体"){
  51. return
  52. }
  53. //保存企业名
  54. con.Database("mixdata").Collection("unique_qyxy").InsertOne(nil, bson.M{
  55. "qy_name": company_name,
  56. })
  57. }
  58. }(tmp)
  59. if num%1000000 == 0 {
  60. log.Println("qyxy_std:", num)
  61. }
  62. }
  63. wg.Wait()
  64. log.Println("qyxy_std ok")
  65. num = 0
  66. cursormixdata, err := con.Database("mixdata").Collection("qyxy_historyname").Find(nil, bson.M{}, options.Find().SetProjection(
  67. bson.M{
  68. "company_name": 1,
  69. "company_type": 1,
  70. }).SetSort(bson.M{"_id": 1}))
  71. if err != nil {
  72. log.Fatalln(err)
  73. }
  74. defer cursormixdata.Close(nil)
  75. for tmp := map[string]interface{}{}; cursormixdata.Next(nil); tmp = map[string]interface{}{} {
  76. num++
  77. err := cursormixdata.Decode(&tmp)
  78. if err != nil {
  79. log.Println(err)
  80. continue
  81. }
  82. wg.Add(1)
  83. go func(t map[string]interface{}) {
  84. bools<- true
  85. defer func() {
  86. wg.Done()
  87. <-bools
  88. }()
  89. if company_name, ok := t["company_name"].(string); ok {
  90. if reglen.MatchString(company_name) || !unstart_strReg.MatchString(company_name) ||
  91. con_strReg.MatchString(company_name) {
  92. return
  93. }
  94. company_type:= ObjToString(t["company_type"])
  95. if strings.Contains(company_type,"个人")||strings.Contains(company_type,"个体"){
  96. return
  97. }
  98. //保存企业名
  99. con.Database("mixdata").Collection("unique_qyxy").InsertOne(nil, bson.M{
  100. "qy_name": company_name,
  101. })
  102. }
  103. }(tmp)
  104. if num%1000000 == 0 {
  105. log.Println("qyxy_historyname:", num)
  106. }
  107. }
  108. log.Println("qyxy_historyname ok")
  109. }
  110. //测试方法
  111. func TestData() {
  112. log.Println("测试...")
  113. //elastic.Update(esIndex,esType,es_id, updateStr)
  114. //elas
  115. res, err := Client_Es.Update().
  116. Index(es_index).
  117. Type(es_type).
  118. Id("609b6ef203ba548731699074").
  119. Doc(map[string]interface{}{"name": "联通数字科技有限公司","name_word":"联通数字科技有限公司"}).
  120. Do()
  121. log.Println(res,err)
  122. return
  123. //北京建雄建筑集团有限公司 江苏贝尔照明电气有限公司 甘肃三杰软件有限公司 云南和合泰商贸有限公司
  124. //甘肃泓文建筑设计有限公司 天津市静海县龙盛水泥制品厂 中国联通网络通信有限公司张家口市分公司
  125. //广联达软件有限公司河南分公司 上海熊猫机械(集团)有限公司昆明分公司
  126. name:="上海熊猫机械(集团)有限公司昆明分公司"
  127. rname, isok, _ ,datas := dealWithNameScoreRules(name)
  128. log.Println(rname,isok,len(datas))
  129. }