apple 4 rokov pred
rodič
commit
0f5e87d423

+ 53 - 17
udpdataclear/udpSensitiveWords/grpc_server/data.go

@@ -7,12 +7,46 @@ import (
 	"go.mongodb.org/mongo-driver/mongo/options"
 	"gopkg.in/mgo.v2/bson"
 	"log"
+	"regexp"
 	"runtime"
+	"sensitiveWords.udp/util"
 	"strings"
 	"sync"
 	"time"
 )
 
+var reg_alias = regexp.MustCompile("(税务局|工商行政管理局|文化广播电视新闻出版局|外国专家局|" +
+	"中医药管理局|市场监督管理局|广播电视局|医疗保障局|机关事务管理局|粮食和物资储备局|" +
+	"监狱管理局|畜牧兽医局|食品药品监督管理局|城市管理行政执法局|城市管理局|国家保密局|密码管理局|" +
+	"地方金融监督管理局|住房保障和房屋管理局|质量技术监督局|人力资源与社会保障局|公路管理局|国土资源局|" +
+	"卫生和计划生育局|民事政务局|公众安全局|交通管理局|人力资源和社会保障局|劳动和社会保障局|" +
+	"住房和城乡建设局|就业服务局|文物管理局|环境保护局|粮食和物资储备局|教育体育局|" +
+	"体育局|教育局|招商局|农业局|农机局|水务局|林业局|财政局|审计局|统计局|商务局)$")
+var reglen *regexp.Regexp = regexp.MustCompile("^(.{1,5}|.{40,})$")
+var strReg *regexp.Regexp = regexp.MustCompile("^(.{0,3}工程队|.{0,3}总公司|_+|.{0,2}设备安装公司|.{0,2}装[饰修潢]公司|.{0,2}开发公司|.{0,4}有限公司|.{0,4}有限责任公司|.{0,4}设计院|建筑设计研?究?院|省文物考古研究所|经济开发区|省.*|镇人民政府|.{0,2}服务公司|" +
+	".{0,2}工程质量监督站|.{0,3}经[营销]部|.{0,3}事务所|.{0,4}工程公司|.{0,4}责任公司|.*勘测|.{0,4}研究院|.*能源建|.{0,2}安装工程|.*[市省]{1}|.{0,4}中心|.*区.?|" +
+	".{0,3}税务局|.{0,3}财政局|.{0,3}商行|.{0,2}公安处|.{0,2}测绘院|.{0,3}开发|.{0,2}建设局|.{0,2}经销部|.{0,3}委员会|.{0,2}分公司|.{0,2}管理站|.{0,2}事务管理局|" +
+	".*资料|.{0,2}办公用品.{1,2}|.*唯亭|.*设备|.+安装|.{0,2}技术服务|市.+[台院社局司]|城?区.+[府局室院]|县.+[院台局]|.{0,2}发展公司|经济技术开发|" +
+	"发展和改革局|贵州有色地质|铝塑门窗加工|生产力促进中心|特殊普通合伙|工业集团公司|人民调解协会|人民政府办公厅|机电设备公司|房地产开发有限公司|.{0,4}商店|中等专业学校|" +
+	"农村信用联社|.{0,4}经营部|.{0,4}销售部|驾驶员培训学校|.{2}县.{2}镇|保安服务总公司|住房和城乡建设局|地产评估事务所|生产资料门市部|×+|.{0,3}[0-9]{15}|.*[0-9]+|.*路|.*无字号名称.*|.*车|.*[,,]{1}.*|.*个体工商户|.*运输户)$")
+
+//非中文开头...
+var unstart_strReg *regexp.Regexp = regexp.MustCompile("^([\u4e00-\u9fa5])")
+//开头
+var start_strReg *regexp.Regexp = regexp.MustCompile("^([a-zA-Z]{1,2}[\u4e00-\u9fa5]{6,}|省|市|县|区|业绩|资格|中标|项目|预算单位)")
+//结尾
+var end_strReg *regexp.Regexp =  regexp.MustCompile("(\\.|\\.\\.|餐馆|店|腻子|肉庄|画社|美发屋|发廊|网吧|网咖|零售点|新街|包子铺|奶茶铺|(株)|先生|女士|小姐|" +
+	"资格|业绩|中标|项目|预算单位|摊位号|号|厅|室|部|点|馆|场|厂|床|所|处|站|行|中心|合作社|ATMS|" +
+	"吧|楼|摊|摊位|廊|茶社|坊|圃|汤锅|园|民宿|美容院|房|排挡|府|庄|栈|队|批发|苑|养殖户|棋牌|农家乐|货运|" +
+	"城|社|基地|会|服务|娱乐|种植|百货|汽修|农家菜|亭|小吃|快餐|粮库|卫生院|书画院|面|门窗|鸡排|屋|橱|堂|肉铺|服务|服饰|/*)$")
+//包含
+var con_strReg *regexp.Regexp = regexp.MustCompile("(\\?|?|%|代码标识|删除|错误|吊销|注销|发起人|待清理|&#|护照号|身份证号|" +
+	"法人|&nbsp|国家拨入|借款|积累资金|单位自有|认股人|--|、|&|`|美元|[\u4e00-\u9fa5]{2,6}·[\u4e00-\u9fa5]{2,6})|" +
+	"[a-zA-Z]{5,}")
+
+var uncon_strReg *regexp.Regexp = regexp.MustCompile("(园|政府|集团|公司|有限|合伙|企|院|学|局|处)")
+
+
 
 //部署-历史-敏感词库
 func initSensitiveWordsData()  {
@@ -25,7 +59,7 @@ func initSensitiveWordsData()  {
 	if err != nil {
 		log.Fatalln(err)
 	}
-	log.Println("id段落:",BsonTOStringId(gteid),BsonTOStringId(lteid))
+	log.Println("id段落:",util.BsonTOStringId(gteid),util.BsonTOStringId(lteid))
 	iter := MixDataMgo.GetMgoConn().C("unique_qyxy").Find(map[string]interface{}{
 		"_id": map[string]interface{}{
 			"$gte": gteid,
@@ -52,7 +86,9 @@ func initSensitiveWordsData()  {
 
 //定时增量数据处理---冯
 func addTaskSensitiveWordsData()  {
-	mmmgo, err := InitMgoEn("mongodb://172.17.4.187:27082,172.17.145.163:27083", 20, "fengweiqiang", "fwq@123123")
+
+
+	mmmgo, err := util.InitMgoEn("mongodb://172.17.4.187:27082,172.17.145.163:27083", 20, "fengweiqiang", "fwq@123123")
 	if err != nil {
 		log.Fatalln(err)
 	}
@@ -83,10 +119,10 @@ func addTaskSensitiveWordsData()  {
 						con_strReg.MatchString(company_name) {
 						continue
 					}
-					if strings.Contains(ObjToString(tmp["company_type"]),"个人")||
-						strings.Contains(ObjToString(tmp["company_type"]),"个体")||
-						strings.Contains(ObjToString(tmp["company_type_old"]),"个人")||
-						strings.Contains(ObjToString(tmp["company_type_old"]),"个体") {
+					if strings.Contains(util.ObjToString(tmp["company_type"]),"个人")||
+						strings.Contains(util.ObjToString(tmp["company_type"]),"个体")||
+						strings.Contains(util.ObjToString(tmp["company_type_old"]),"个人")||
+						strings.Contains(util.ObjToString(tmp["company_type_old"]),"个体") {
 						continue
 					}
 
@@ -97,7 +133,7 @@ func addTaskSensitiveWordsData()  {
 					//存敏感词
 					Filter.AddWord(company_name)
 					//存es=判断+新增
-					dealWithEsData(company_name,BsonTOStringId(tmp["_id"]))
+					dealWithEsData(company_name,util.BsonTOStringId(tmp["_id"]))
 				}
 			}
 		}
@@ -153,8 +189,8 @@ func dealWithEsData(name string,tmpid string)  {
 func dealWithDataMemory()  {
 	iter := MixDataMgo.GetMgoConn().C("unique_qyxy").Find(map[string]interface{}{
 		"_id": map[string]interface{}{
-			"$gte": BsonTOStringId("1fffffffffffffffffffffff"),
-			"$lte":  BsonTOStringId("9fffffffffffffffffffffff"),
+			"$gte": util.BsonTOStringId("1fffffffffffffffffffffff"),
+			"$lte":  util.BsonTOStringId("9fffffffffffffffffffffff"),
 		},
 	}).Sort("_id").Iter()
 	Filter = sensitive.New()
@@ -163,18 +199,18 @@ func dealWithDataMemory()  {
 	var m runtime.MemStats
 	for tmp := map[string]interface{}{}; iter.Next(&tmp); tmp = map[string]interface{}{} {
 		if start_id=="" {
-			start_id = BsonTOStringId(tmp["_id"])
+			start_id = util.BsonTOStringId(tmp["_id"])
 		}
 		Filter.AddWord(tmp["qy_name"].(string))
 		initnum++
 		if initnum%100000==0 {
 			runtime.ReadMemStats(&m)
-			men :=toMegaBytes(m.HeapAlloc)
+			men :=util.ToMegaBytes(m.HeapAlloc)
 			log.Printf("current index %d\tos %.2f M",initnum, men)
 			if men>7.5*1024 { //7.5G
 				saveIdArr = append(saveIdArr, map[string]string{
 					"start":start_id,
-					"end":BsonTOStringId(tmp["_id"]),
+					"end":util.BsonTOStringId(tmp["_id"]),
 				})
 				runtime.GC()
 				Filter = sensitive.New()
@@ -204,18 +240,18 @@ func dealWithDataMemory()  {
 func temporaryTest()  {
 	log.Println("测试......导出数据")
 	q := map[string]interface{}{}
-	sess := data_mgo.GetMgoConn()
-	defer data_mgo.DestoryMongoConn(sess)
+	sess := MixDataMgo.GetMgoConn()
+	defer MixDataMgo.DestoryMongoConn(sess)
 	//多线程升索引
 	pool_es := make(chan bool, 20)
 	wg_es := &sync.WaitGroup{}
-	it := sess.DB(data_mgo.DbName).C("zk_company_test").Find(&q).Iter()
+	it := sess.DB(MixDataMgo.DbName).C("zk_company_test").Find(&q).Iter()
 	total,isOK:=0,0
 	for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
 		if total % 1000 == 0 {
 			log.Println("current index",total,isOK)
 		}
-		name:=ObjToString(tmp["name"])
+		name:=util.ObjToString(tmp["name"])
 		pool_es <- true
 		wg_es.Add(1)
 
@@ -228,7 +264,7 @@ func temporaryTest()  {
 			new_name,b :=dealWithNameScoreRules(name)
 			if new_name!="" && b {
 				isOK++
-				data_mgo.Save("zk_words_test_test", map[string]interface{}{
+				MixDataMgo.Save("zk_words_test", map[string]interface{}{
 					"name":name,
 					"new_name":new_name,
 				})

+ 41 - 64
udpdataclear/udpSensitiveWords/grpc_server/main.go

@@ -14,7 +14,6 @@ import (
 	"log"
 	"net"
 	"net/http"
-	"regexp"
 	"sensitiveWords.udp/proto_grpc"
 	"sensitiveWords.udp/util"
 	"strings"
@@ -23,47 +22,26 @@ import (
 const (
 	YAMLFILE = "./server.yaml"
 )
-var reg_alias = regexp.MustCompile("(税务局|工商行政管理局|文化广播电视新闻出版局|外国专家局|" +
-	"中医药管理局|市场监督管理局|广播电视局|医疗保障局|机关事务管理局|粮食和物资储备局|" +
-	"监狱管理局|畜牧兽医局|食品药品监督管理局|城市管理行政执法局|城市管理局|国家保密局|密码管理局|" +
-	"地方金融监督管理局|住房保障和房屋管理局|质量技术监督局|人力资源与社会保障局|公路管理局|国土资源局|" +
-	"卫生和计划生育局|民事政务局|公众安全局|交通管理局|人力资源和社会保障局|劳动和社会保障局|" +
-	"住房和城乡建设局|就业服务局|文物管理局|环境保护局|粮食和物资储备局|教育体育局|" +
-	"体育局|教育局|招商局|农业局|农机局|水务局|林业局|财政局|审计局|统计局|商务局)$")
-var reglen *regexp.Regexp = regexp.MustCompile("^(.{1,5}|.{40,})$")
-var strReg *regexp.Regexp = regexp.MustCompile("^(.{0,3}工程队|.{0,3}总公司|_+|.{0,2}设备安装公司|.{0,2}装[饰修潢]公司|.{0,2}开发公司|.{0,4}有限公司|.{0,4}有限责任公司|.{0,4}设计院|建筑设计研?究?院|省文物考古研究所|经济开发区|省.*|镇人民政府|.{0,2}服务公司|" +
-	".{0,2}工程质量监督站|.{0,3}经[营销]部|.{0,3}事务所|.{0,4}工程公司|.{0,4}责任公司|.*勘测|.{0,4}研究院|.*能源建|.{0,2}安装工程|.*[市省]{1}|.{0,4}中心|.*区.?|" +
-	".{0,3}税务局|.{0,3}财政局|.{0,3}商行|.{0,2}公安处|.{0,2}测绘院|.{0,3}开发|.{0,2}建设局|.{0,2}经销部|.{0,3}委员会|.{0,2}分公司|.{0,2}管理站|.{0,2}事务管理局|" +
-	".*资料|.{0,2}办公用品.{1,2}|.*唯亭|.*设备|.+安装|.{0,2}技术服务|市.+[台院社局司]|城?区.+[府局室院]|县.+[院台局]|.{0,2}发展公司|经济技术开发|" +
-	"发展和改革局|贵州有色地质|铝塑门窗加工|生产力促进中心|特殊普通合伙|工业集团公司|人民调解协会|人民政府办公厅|机电设备公司|房地产开发有限公司|.{0,4}商店|中等专业学校|" +
-	"农村信用联社|.{0,4}经营部|.{0,4}销售部|驾驶员培训学校|.{2}县.{2}镇|保安服务总公司|住房和城乡建设局|地产评估事务所|生产资料门市部|×+|.{0,3}[0-9]{15}|.*[0-9]+|.*路|.*无字号名称.*|.*车|.*[,,]{1}.*|.*个体工商户|.*运输户)$")
-
-//非中文开头...
-var unstart_strReg *regexp.Regexp = regexp.MustCompile("^([\u4e00-\u9fa5])")
-//开头
-var start_strReg *regexp.Regexp = regexp.MustCompile("^([a-zA-Z]{1,2}[\u4e00-\u9fa5]{6,}|省|市|县|区|业绩|资格|中标|项目|预算单位)")
-//结尾
-var end_strReg *regexp.Regexp =  regexp.MustCompile("(\\.|\\.\\.|餐馆|店|腻子|肉庄|画社|美发屋|发廊|网吧|网咖|零售点|新街|包子铺|奶茶铺|(株)|先生|女士|小姐|" +
-	"资格|业绩|中标|项目|预算单位|摊位号|号|厅|室|部|点|馆|场|厂|床|所|处|站|行|中心|合作社|ATMS|" +
-	"吧|楼|摊|摊位|廊|茶社|坊|圃|汤锅|园|民宿|美容院|房|排挡|府|庄|栈|队|批发|苑|养殖户|棋牌|农家乐|货运|" +
-	"城|社|基地|会|服务|娱乐|种植|百货|汽修|农家菜|亭|小吃|快餐|粮库|卫生院|书画院|面|门窗|鸡排|屋|橱|堂|肉铺|服务|服饰|/*)$")
-//包含
-var con_strReg *regexp.Regexp = regexp.MustCompile("(\\?|?|%|代码标识|删除|错误|吊销|注销|发起人|待清理|&#|护照号|身份证号|" +
-	"法人|&nbsp|国家拨入|借款|积累资金|单位自有|认股人|--|、|&|`|美元|[\u4e00-\u9fa5]{2,6}·[\u4e00-\u9fa5]{2,6})|" +
-	"[a-zA-Z]{5,}")
-
-var uncon_strReg *regexp.Regexp = regexp.MustCompile("(园|政府|集团|公司|有限|合伙|企|院|学|局|处)")
-
 
 var YamlConfig YAMLConfig
-var MixDataMgo *util.MongodbSim
 var Filter *sensitive.Filter
 var es_type, es_index string
 var Client_Es *elastic.Client
 
-var data_mgo  *MongodbSim
+var MixDataMgo  *util.MongodbSim
+var (
+	// Create a metrics registry.
+	reg = prometheus.NewRegistry()
 
+	// Create some standard server metrics.
+	grpcMetrics = grpc_prometheus.NewServerMetrics()
+	customizedCounterMetric = prometheus.NewCounterVec(prometheus.CounterOpts{
+		Name: "demo_server_search_method_handle_count",
+		Help: "Total number of RPCs handled on the server.",
+	}, []string{"name"})
+)
 func init() {
+	return
 	yamlFile, err := ioutil.ReadFile(YAMLFILE)
 	if err != nil {
 		log.Fatalln("load conf error")
@@ -82,49 +60,49 @@ func init() {
 	}
 	MixDataMgo.InitPool()
 
+	Client_Es ,_= elastic.NewClient(http.DefaultClient, "http://192.168.3.11:9800")
 
-	data_mgo = &MongodbSim{
-		MongodbAddr: "192.168.3.207:27092",
-		DbName:      "zhengkun",
-		Size:        10,
-		UserName:    "",
-		Password:    "",
-	}
-	data_mgo.InitPool()
 
-	Client_Es, _ = elastic.NewClient(http.DefaultClient, "http://192.168.3.11:9800")
-	es_type, es_index = "azktest", "azktest"
+	es_type, es_index = "azktest","azktest"
+
+
+	//政府采购 - 公共资源   (23 25)
+
 	reg.MustRegister(grpcMetrics, customizedCounterMetric)
 
+
+
+
 }
 
-var (
-	// Create a metrics registry.
-	reg = prometheus.NewRegistry()
 
-	// Create some standard server metrics.
-	grpcMetrics = grpc_prometheus.NewServerMetrics()
-	customizedCounterMetric = prometheus.NewCounterVec(prometheus.CounterOpts{
-		Name: "demo_server_search_method_handle_count",
-		Help: "Total number of RPCs handled on the server.",
-	}, []string{"name"})
-)
 
 func main() {
 
 
-	log.Println("main ...")
-	return
-	//淡赌跑断
-	if YamlConfig.IsAddTask == 0 {
-		initSensitiveWordsData() //初始化敏感词数据
-	} else {
-		go addTaskSensitiveWordsData() //增量-改配置文件
+	MixDataMgo = &util.MongodbSim{
+		MongodbAddr: "192.168.3.207:27092",
+		Size:        20,
+		DbName:      "zhengkun",
+		UserName:    "",
+		PassWord:    "",
 	}
+	MixDataMgo.InitPool()
 
+	Client_Es ,_= elastic.NewClient(http.DefaultClient, "http://192.168.3.11:9800")
 
 
+	es_type, es_index = "azktest","azktest"
 
+	temporaryTest()
+	return
+
+	//淡赌跑断
+	//if YamlConfig.IsAddTask == 0 {
+	//	initSensitiveWordsData() //初始化敏感词数据
+	//} else {
+	//	go addTaskSensitiveWordsData() //增量-改配置文件
+	//}
 
 	lis, err := net.Listen("tcp", YamlConfig.Port)
 	if err != nil {
@@ -137,10 +115,9 @@ func main() {
 		Addr: fmt.Sprintf("0.0.0.0:%d",
 			2092),
 	}
-
 	grpcServer := grpc.NewServer(
-		//grpc.StreamInterceptor(grpcMetrics.StreamServerInterceptor()),
-		grpc.UnaryInterceptor(grpcMetrics.UnaryServerInterceptor()))
+	//grpc.StreamInterceptor(grpcMetrics.StreamServerInterceptor()),
+	grpc.UnaryInterceptor(grpcMetrics.UnaryServerInterceptor()))
 	proto_grpc.RegisterSensitiveWordsServer(grpcServer, &server{})
 	// Initialize all metrics.
 	grpcMetrics.InitializeMetrics(grpcServer)

+ 0 - 550
udpdataclear/udpSensitiveWords/grpc_server/mgo.go

@@ -1,550 +0,0 @@
-package main
-
-import (
-	"context"
-	"fmt"
-	"go.mongodb.org/mongo-driver/bson/primitive"
-	"go.mongodb.org/mongo-driver/mongo"
-	"go.mongodb.org/mongo-driver/mongo/options"
-	"gopkg.in/mgo.v2/bson"
-	"log"
-	"math/big"
-	"strconv"
-	"time"
-)
-
-type Mgo struct {
-	Uri                string
-	PoolSize           uint64
-	mgoEn              *mongo.Client
-}
-
-type MgoSess struct {
-	Db     string
-	Coll   string
-	Query  interface{}
-	Sorts  []string
-	fields interface{}
-	limit  int64
-	skip   int64
-	M      *MongodbSim
-}
-
-type MgoIter struct {
-	Cursor *mongo.Cursor
-}
-
-func (mt *MgoIter) Next(result interface{}) bool {
-	if mt.Cursor != nil {
-		if mt.Cursor.Next(nil) {
-			err := mt.Cursor.Decode(result)
-			if err != nil {
-				log.Println("mgo cur err", err.Error())
-				mt.Cursor.Close(nil)
-				return false
-			}
-			return true
-		} else {
-			mt.Cursor.Close(nil)
-			return false
-		}
-	} else {
-		return false
-	}
-
-}
-
-func (ms *MgoSess) DB(name string) *MgoSess {
-	ms.Db = name
-	return ms
-}
-
-func (ms *MgoSess) C(name string) *MgoSess {
-	ms.Coll = name
-	return ms
-}
-
-func (ms *MgoSess) Find(q interface{}) *MgoSess {
-	ms.Query = q
-	return ms
-}
-
-func (ms *MgoSess) Select(fields interface{}) *MgoSess {
-	ms.fields = fields
-	return ms
-}
-
-func (ms *MgoSess) Limit(limit int64) *MgoSess {
-	ms.limit = limit
-	return ms
-}
-func (ms *MgoSess) Skip(skip int64) *MgoSess {
-	ms.skip = skip
-	return ms
-}
-
-func (ms *MgoSess) Sort(sorts ...string) *MgoSess {
-	ms.Sorts = sorts
-	return ms
-}
-
-func (ms *MgoSess) Iter() *MgoIter {
-	it := &MgoIter{}
-	find := options.Find()
-	if ms.skip > 0 {
-		find.SetSkip(ms.skip)
-	}
-	if ms.limit > 0 {
-		find.SetLimit(ms.limit)
-	}
-	find.SetBatchSize(100)
-	if len(ms.Sorts) > 0 {
-		sort := bson.M{}
-		for _, k := range ms.Sorts {
-			switch k[:1] {
-			case "-":
-				sort[k[1:]] = -1
-			case "+":
-				sort[k[1:]] = 1
-			default:
-				sort[k] = 1
-			}
-		}
-		find.SetSort(sort)
-	}
-	if ms.fields != nil {
-		find.SetProjection(ms.fields)
-	}
-	cur, err := ms.M.C.Database(ms.Db).Collection(ms.Coll).Find(ms.M.Ctx, ms.Query, find)
-	if err != nil {
-		log.Println("mgo find err", err.Error())
-	} else {
-		it.Cursor = cur
-	}
-	return it
-}
-
-type MongodbSim struct {
-	MongodbAddr string
-	Size        int
-	//	MinSize     int
-	DbName   string
-	C        *mongo.Client
-	Ctx      context.Context
-	ShortCtx context.Context
-	pool     chan bool
-	UserName string
-	Password string
-}
-
-func (m *MongodbSim) GetMgoConn() *MgoSess {
-	//m.Open()
-	ms := &MgoSess{}
-	ms.M = m
-	return ms
-}
-
-func (m *MongodbSim) DestoryMongoConn(ms *MgoSess) {
-	//m.Close()
-	ms.M = nil
-	ms = nil
-}
-
-func (m *MongodbSim) InitPool() {
-	opts := options.Client()
-	opts.SetConnectTimeout(3 * time.Second)
-	opts.ApplyURI("mongodb://" + m.MongodbAddr)
-	opts.SetMaxPoolSize(uint64(m.Size))
-	m.pool = make(chan bool, m.Size)
-
-	if m.UserName !="" && m.Password !="" {
-		cre := options.Credential{
-			Username:m.UserName,
-			Password:m.Password,
-		}
-		opts.SetAuth(cre)
-	}
-
-
-
-	opts.SetMaxConnIdleTime(2 * time.Hour)
-	m.Ctx, _ = context.WithTimeout(context.Background(), 99999*time.Hour)
-	m.ShortCtx, _ = context.WithTimeout(context.Background(), 1*time.Minute)
-	client, err := mongo.Connect(m.ShortCtx, opts)
-	if err != nil {
-		log.Println("mgo init error:", err.Error())
-	} else {
-		m.C = client
-		log.Println("init success")
-	}
-}
-
-func (m *MongodbSim) Open() {
-	m.pool <- true
-}
-func (m *MongodbSim) Close() {
-	<-m.pool
-}
-
-//批量插入
-func (m *MongodbSim) UpSertBulk(c string, doc ...[]map[string]interface{}) (map[int64]interface{}, bool) {
-	m.Open()
-	defer m.Close()
-	coll := m.C.Database(m.DbName).Collection(c)
-	var writes []mongo.WriteModel
-	for _, d := range doc {
-		write := mongo.NewUpdateOneModel()
-		write.SetFilter(d[0])
-		write.SetUpdate(d[1])
-		write.SetUpsert(true)
-		writes = append(writes, write)
-	}
-	r, e := coll.BulkWrite(m.Ctx, writes)
-	if e != nil {
-		log.Println("mgo upsert error:", e.Error())
-		return nil, false
-	}
-	//	else {
-	//		if r.UpsertedCount != int64(len(doc)) {
-	//			log.Println("mgo upsert uncomplete:uc/dc", r.UpsertedCount, len(doc))
-	//		}
-	//		return true
-	//	}
-	return r.UpsertedIDs, true
-}
-
-//批量插入
-func (m *MongodbSim) SaveBulk(c string, doc ...map[string]interface{}) bool {
-	m.Open()
-	defer m.Close()
-	coll := m.C.Database(m.DbName).Collection(c)
-	var writes []mongo.WriteModel
-	for _, d := range doc {
-		write := mongo.NewInsertOneModel()
-		write.SetDocument(d)
-		writes = append(writes, write)
-	}
-	_, e := coll.BulkWrite(m.Ctx, writes)
-	if e != nil {
-		log.Println("mgo savebulk error:", e.Error())
-		return false
-	}
-	return true
-}
-
-//保存
-func (m *MongodbSim) Save(c string, doc map[string]interface{}) interface{} {
-	m.Open()
-	defer m.Close()
-	coll := m.C.Database(m.DbName).Collection(c)
-	r, err := coll.InsertOne(m.Ctx, doc)
-	if err != nil {
-		return nil
-	}
-	return r.InsertedID
-}
-
-//更新by Id
-func (m *MongodbSim) UpdateById(c, id string, doc map[string]interface{}) bool {
-	m.Open()
-	defer m.Close()
-	coll := m.C.Database(m.DbName).Collection(c)
-	_, err := coll.UpdateOne(m.Ctx, map[string]interface{}{"_id": StringTOBsonId(id)}, doc)
-	if err != nil {
-		return false
-	}
-	return true
-}
-
-//删除by id
-func (m *MongodbSim) DeleteById(c, id string) int64 {
-	m.Open()
-	defer m.Close()
-	coll := m.C.Database(m.DbName).Collection(c)
-	r, err := coll.DeleteOne(m.Ctx, map[string]interface{}{"_id": StringTOBsonId(id)})
-	if err != nil {
-		return 0
-	}
-	return r.DeletedCount
-}
-
-//通过条件删除
-func (m *MongodbSim) Delete(c string, query map[string]interface{}) int64 {
-	m.Open()
-	defer m.Close()
-	coll := m.C.Database(m.DbName).Collection(c)
-	r, err := coll.DeleteMany(m.Ctx, query)
-	if err != nil {
-		return 0
-	}
-	return r.DeletedCount
-}
-
-//findbyid
-func (m *MongodbSim) FindById(c, id string) map[string]interface{} {
-	m.Open()
-	defer m.Close()
-	coll := m.C.Database(m.DbName).Collection(c)
-	r := coll.FindOne(m.Ctx, map[string]interface{}{"_id": StringTOBsonId(id)})
-	v := map[string]interface{}{}
-	r.Decode(&v)
-	return v
-}
-
-//findone
-func (m *MongodbSim) FindOne(c string, query map[string]interface{}) map[string]interface{} {
-	m.Open()
-	defer m.Close()
-	coll := m.C.Database(m.DbName).Collection(c)
-	r := coll.FindOne(m.Ctx, query)
-	v := map[string]interface{}{}
-	r.Decode(&v)
-	return v
-}
-
-//find
-func (m *MongodbSim) Find(c string, query map[string]interface{}, sort, fields interface{}) ([]map[string]interface{}, error) {
-	m.Open()
-	defer m.Close()
-	coll := m.C.Database(m.DbName).Collection(c)
-	op := options.Find()
-	r, err := coll.Find(m.Ctx, query, op.SetSort(sort), op.SetProjection(fields))
-	if err != nil {
-		log.Fatal(err)
-		return nil, err
-	}
-	var results []map[string]interface{}
-	if err = r.All(m.Ctx, &results); err != nil {
-		log.Fatal(err)
-		return nil, err
-	}
-	return results, nil
-}
-
-//创建_id
-func NewObjectId() primitive.ObjectID {
-	return primitive.NewObjectID()
-}
-
-
-
-func StringTOBsonId(id string) primitive.ObjectID {
-	objectId, _ := primitive.ObjectIDFromHex(id)
-	return objectId
-}
-
-func BsonTOStringId(id interface{}) string {
-	return id.(primitive.ObjectID).Hex()
-}
-
-
-
-
-
-
-func toMegaBytes(bytes uint64) float64 {
-	return float64(bytes) / 1024 / 1024
-}
-
-func IntAll(num interface{}) int {
-	return IntAllDef(num, 0)
-}
-
-func Int64All(num interface{}) int64 {
-	if i, ok := num.(int64); ok {
-		return int64(i)
-	} else if i0, ok0 := num.(int32); ok0 {
-		return int64(i0)
-	} else if i1, ok1 := num.(float64); ok1 {
-		return int64(i1)
-	} else if i2, ok2 := num.(int); ok2 {
-		return int64(i2)
-	} else if i3, ok3 := num.(float32); ok3 {
-		return int64(i3)
-	} else if i4, ok4 := num.(string); ok4 {
-		i64, _ := strconv.ParseInt(i4, 10, 64)
-		//in, _ := strconv.Atoi(i4)
-		return i64
-	} else if i5, ok5 := num.(int16); ok5 {
-		return int64(i5)
-	} else if i6, ok6 := num.(int8); ok6 {
-		return int64(i6)
-	} else if i7, ok7 := num.(*big.Int); ok7 {
-		in, _ := strconv.ParseInt(fmt.Sprint(i7), 10, 64)
-		return int64(in)
-	} else if i8, ok8 := num.(*big.Float); ok8 {
-		in, _ := strconv.ParseInt(fmt.Sprint(i8), 10, 64)
-		return int64(in)
-	} else {
-		return 0
-	}
-}
-
-func Float64All(num interface{}) float64 {
-	if i, ok := num.(float64); ok {
-		return float64(i)
-	} else if i0, ok0 := num.(int32); ok0 {
-		return float64(i0)
-	} else if i1, ok1 := num.(int64); ok1 {
-		return float64(i1)
-	} else if i2, ok2 := num.(int); ok2 {
-		return float64(i2)
-	} else if i3, ok3 := num.(float32); ok3 {
-		return float64(i3)
-	} else if i4, ok4 := num.(string); ok4 {
-		in, _ := strconv.ParseFloat(i4, 64)
-		return in
-	} else if i5, ok5 := num.(int16); ok5 {
-		return float64(i5)
-	} else if i6, ok6 := num.(int8); ok6 {
-		return float64(i6)
-	} else if i6, ok6 := num.(uint); ok6 {
-		return float64(i6)
-	} else if i6, ok6 := num.(uint8); ok6 {
-		return float64(i6)
-	} else if i6, ok6 := num.(uint16); ok6 {
-		return float64(i6)
-	} else if i6, ok6 := num.(uint32); ok6 {
-		return float64(i6)
-	} else if i6, ok6 := num.(uint64); ok6 {
-		return float64(i6)
-	} else if i7, ok7 := num.(*big.Float); ok7 {
-		in, _ := strconv.ParseFloat(fmt.Sprint(i7), 64)
-		return float64(in)
-	} else if i8, ok8 := num.(*big.Int); ok8 {
-		in, _ := strconv.ParseFloat(fmt.Sprint(i8), 64)
-		return float64(in)
-	} else {
-		return 0
-	}
-}
-
-func IntAllDef(num interface{}, defaultNum int) int {
-	if i, ok := num.(int); ok {
-		return int(i)
-	} else if i0, ok0 := num.(int32); ok0 {
-		return int(i0)
-	} else if i1, ok1 := num.(float64); ok1 {
-		return int(i1)
-	} else if i2, ok2 := num.(int64); ok2 {
-		return int(i2)
-	} else if i3, ok3 := num.(float32); ok3 {
-		return int(i3)
-	} else if i4, ok4 := num.(string); ok4 {
-		in, _ := strconv.Atoi(i4)
-		return int(in)
-	} else if i5, ok5 := num.(int16); ok5 {
-		return int(i5)
-	} else if i6, ok6 := num.(int8); ok6 {
-		return int(i6)
-	} else if i7, ok7 := num.(*big.Int); ok7 {
-		in, _ := strconv.Atoi(fmt.Sprint(i7))
-		return int(in)
-	} else if i8, ok8 := num.(*big.Float); ok8 {
-		in, _ := strconv.Atoi(fmt.Sprint(i8))
-		return int(in)
-	} else {
-		return defaultNum
-	}
-}
-
-func ObjToString(old interface{}) string {
-	if nil == old {
-		return ""
-	} else {
-		r, _ := old.(string)
-		return r
-	}
-}
-
-func ObjToStringDef(old interface{}, defaultstr string) string {
-	if nil == old {
-		return defaultstr
-	} else {
-		r, _ := old.(string)
-		if r == "" {
-			return defaultstr
-		}
-		return r
-	}
-}
-
-//对象数组转成string数组
-func ObjArrToStringArr(old []interface{}) []string {
-	if old != nil {
-		new := make([]string, len(old))
-		for i, v := range old {
-			new[i] = v.(string)
-		}
-		return new
-	} else {
-		return nil
-	}
-}
-
-//对象数组转成map数组
-func ObjArrToMapArr(old []interface{}) []map[string]interface{} {
-	if old != nil {
-		new := make([]map[string]interface{}, len(old))
-		for i, v := range old {
-			new[i] = v.(map[string]interface{})
-		}
-		return new
-	} else {
-		return nil
-	}
-}
-
-//map数组转成对象数组
-func MapArrToObjArr(old []map[string]interface{}) []interface{} {
-	if old != nil {
-		new := make([]interface{}, len(old))
-		for i, v := range old {
-			new[i] = v
-		}
-		return new
-	} else {
-		return nil
-	}
-}
-
-
-
-
-
-
-
-
-
-
-func InitMgoEn(uri string, poolSize uint64,username_password ... string) (*Mgo, error) {
-	//fengweiqiang fwq@123123
-	m := Mgo{}
-	m.Uri = uri
-	if poolSize == 0 {
-		m.PoolSize = 100
-	}
-	//fengweiqiang/fwq@123123
-	options_client := options.Client().
-		ApplyURI(uri).SetMaxPoolSize(m.PoolSize)
-	if len(username_password)==2{
-		options_client = options_client.SetAuth(options.Credential{Username: username_password[0], Password: username_password[1]})
-	}
-	client, err := mongo.Connect(context.Background(), options_client)
-	if err != nil {
-		return nil, err
-	} else {
-		m.mgoEn = client
-		return &m, nil
-	}
-}
-
-func (m *Mgo) GetCon() *mongo.Client {
-	if m.mgoEn != nil {
-		return m.mgoEn
-	} else {
-		return nil
-	}
-}
-
-//var zwjeReg *regexp.Regexp = regexp.MustCompile(`([〇零点壹贰叁肆伍陆柒捌玖拾百佰千仟万萬亿億元圆角分整正]{4,40})`)

+ 23 - 6
udpdataclear/udpSensitiveWords/grpc_server/words.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"log"
 	"os"
+	"sensitiveWords.udp/util"
 	"strings"
 	"unicode/utf8"
 )
@@ -11,12 +12,16 @@ import (
 func dealWithNameScoreRules(name string) (string,bool) {
 	new_name,new_score,isok :="",float64(0),false
 	old_name := escape(name)
+	if old_name=="" {
+		return "",false
+	}
 	query := `{"query":{"bool":{"must":[{"query_string":{"default_field":"azktest.name_2","query":"`+old_name+`"}}],"must_not":[],"should":[]}},"from":"0","size":"1"}`
 	tmp := make(map[string]interface{})
 	json.Unmarshal([]byte(query),&tmp)
 	searchResult, err := Client_Es.Search().Index(es_index).Type(es_type).Source(tmp).Do()
 	if err != nil {
-		log.Println("从ES查询出错", err.Error())
+		log.Println("从ES查询出错",name,old_name)
+		return "",false
 	}
 	resNum := len(searchResult.Hits.Hits)
 	res := make([]map[string]interface{}, resNum)
@@ -35,8 +40,8 @@ func dealWithNameScoreRules(name string) (string,bool) {
 		}
 	}
 	if len(res)>0 && res != nil {
-		new_name = ObjToString(res[0]["name"])
-		new_score = Float64All(res[0]["score"])
+		new_name = util.ObjToString(res[0]["name"])
+		new_score = util.Float64All(res[0]["score"])
 	}
 	if new_name!="" { //分析hit比例
 		total,hit := dealWithWordsRules(name,new_name)
@@ -92,13 +97,25 @@ func calculateWordCount(name string) ([]string,int) {
 
 func escape(s string) string {
 	news := ""
+	s = strings.ReplaceAll(s," ","")
 	for _, c := range s {
-		if c == '\\' || c == '+' || c == '-' || c == '!' || c == '(' || c == ')' || c == ':' || c == '^' || c == '[' || c == ']' || c == '"' || c == '{' || c == '}' || c == '~' || c == '*' || c == '?' || c == '|' || c == '&' || c == '/' || c == '#' || c == '@' || c == '(' || c == ')' || c == '>' || c == '<' || c == '“' || c == '”' || c == '?' || c == '、' || c == '.' {
+		//if unicode.Is(unicode.Han, c) || unicode.IsNumber(c) || unicode.IsLetter(c) {
+		//	news = news + string(c)
+		//}else if c == '\\' || c == '+' || c == '-' || c == '!' || c == '(' || c == ')' || c == ':' || c == '^' || c == '[' || c == ']' || c == '"' || c == '{' || c == '}' || c == '~' || c == '*' || c == '?' || c == '|' || c == '&' || c == '/' || c == '#' || c == '@' || c == '(' || c == ')' || c == '>' || c == '<' || c == '“' || c == '”' || c == '?' || c == '、' || c == '.' {
+		//	a := string([]rune{os.PathSeparator, '\\'})
+		//	news = news + a + string(c)
+		//} else {
+		//	return ""
+		//}
+		if c == '\\' || c == '+' || c == '-' || c == '!' || c == '(' || c == ')' || c == ':' || c == '^' || c == '[' || c == ']' || c == '{' || c == '}' || c == '~' || c == '*' || c == '?' || c == '|' || c == '&' || c == '/' || c == '#' || c == '@' || c == '(' || c == ')' || c == '>' || c == '<' || c == '“' || c == '”' || c == '?' || c == '、' || c == '.' {
 			a := string([]rune{os.PathSeparator, '\\'})
-			news = news + a + `\` + string(c)
+			news = news + a + string(c)
 		} else {
 			news = news + string(c)
 		}
+
 	}
 	return news
-}
+}
+
+

+ 15 - 0
udpdataclear/udpSensitiveWords/util/common.go

@@ -7,6 +7,7 @@ import (
 	"encoding/json"
 	"encoding/xml"
 	"fmt"
+	"go.mongodb.org/mongo-driver/bson/primitive"
 	"io"
 	"log"
 	"math/big"
@@ -562,3 +563,17 @@ func XmlToMap(input string) map[string]string {
 	}
 	return m
 }
+
+
+func StringTOBsonId(id string) primitive.ObjectID {
+	objectId, _ := primitive.ObjectIDFromHex(id)
+	return objectId
+}
+
+func BsonTOStringId(id interface{}) string {
+	return id.(primitive.ObjectID).Hex()
+}
+
+func ToMegaBytes(bytes uint64) float64 {
+	return float64(bytes) / 1024 / 1024
+}

+ 52 - 49
udpdataclear/udpSensitiveWords/util/mgo.go

@@ -2,16 +2,19 @@ package util
 
 import (
 	"context"
-	"log"
-	"time"
-
-	"go.mongodb.org/mongo-driver/bson"
 	"go.mongodb.org/mongo-driver/bson/primitive"
 	"go.mongodb.org/mongo-driver/mongo"
 	"go.mongodb.org/mongo-driver/mongo/options"
+	"gopkg.in/mgo.v2/bson"
+	"log"
+	"time"
 )
 
-var Mgo *MongodbSim
+type Mgo struct {
+	Uri                string
+	PoolSize           uint64
+	mgoEn              *mongo.Client
+}
 
 type MgoSess struct {
 	Db     string
@@ -134,7 +137,6 @@ type MongodbSim struct {
 func (m *MongodbSim) GetMgoConn() *MgoSess {
 	//m.Open()
 	ms := &MgoSess{}
-	ms.Db = m.DbName
 	ms.M = m
 	return ms
 }
@@ -151,10 +153,18 @@ func (m *MongodbSim) InitPool() {
 	opts.ApplyURI("mongodb://" + m.MongodbAddr)
 	opts.SetMaxPoolSize(uint64(m.Size))
 	m.pool = make(chan bool, m.Size)
-	opts.SetMaxConnIdleTime(2 * time.Hour)
-	if m.UserName != "" && m.PassWord != "" {
-		opts.SetAuth(options.Credential{Username: m.UserName, Password: m.PassWord})
+
+	if m.UserName !="" && m.PassWord !="" {
+		cre := options.Credential{
+			Username:m.UserName,
+			Password:m.PassWord,
+		}
+		opts.SetAuth(cre)
 	}
+
+
+
+	opts.SetMaxConnIdleTime(2 * time.Hour)
 	m.Ctx, _ = context.WithTimeout(context.Background(), 99999*time.Hour)
 	m.ShortCtx, _ = context.WithTimeout(context.Background(), 1*time.Minute)
 	client, err := mongo.Connect(m.ShortCtx, opts)
@@ -243,24 +253,6 @@ func (m *MongodbSim) UpdateById(c, id string, doc map[string]interface{}) bool {
 	return true
 }
 
-//更新Update
-func (m *MongodbSim) Update(c string, query map[string]interface{}, up map[string]interface{}) (map[int64]interface{}, bool) {
-	m.Open()
-	defer m.Close()
-	coll := m.C.Database(m.DbName).Collection(c)
-	var writes []mongo.WriteModel
-	write := mongo.NewUpdateOneModel()
-	write.SetFilter(query)
-	write.SetUpdate(up)
-	write.SetUpsert(true)
-	writes = append(writes, write)
-	r, err := coll.BulkWrite(m.Ctx, writes)
-	if err != nil {
-		return nil, false
-	}
-	return r.UpsertedIDs, true
-}
-
 //删除by id
 func (m *MongodbSim) DeleteById(c, id string) int64 {
 	m.Open()
@@ -286,12 +278,11 @@ func (m *MongodbSim) Delete(c string, query map[string]interface{}) int64 {
 }
 
 //findbyid
-func (m *MongodbSim) FindById(c, id string, fields interface{}) map[string]interface{} {
+func (m *MongodbSim) FindById(c, id string) map[string]interface{} {
 	m.Open()
 	defer m.Close()
 	coll := m.C.Database(m.DbName).Collection(c)
-	op := options.FindOne()
-	r := coll.FindOne(m.Ctx, map[string]interface{}{"_id": StringTOBsonId(id)}, op.SetProjection(fields))
+	r := coll.FindOne(m.Ctx, map[string]interface{}{"_id": StringTOBsonId(id)})
 	v := map[string]interface{}{}
 	r.Decode(&v)
 	return v
@@ -302,8 +293,6 @@ func (m *MongodbSim) FindOne(c string, query map[string]interface{}) map[string]
 	m.Open()
 	defer m.Close()
 	coll := m.C.Database(m.DbName).Collection(c)
-	//op := options.FindOne()
-	//r := coll.FindOne(m.Ctx, query, op.SetProjection(fields))
 	r := coll.FindOne(m.Ctx, query)
 	v := map[string]interface{}{}
 	r.Decode(&v)
@@ -328,28 +317,42 @@ func (m *MongodbSim) Find(c string, query map[string]interface{}, sort, fields i
 	}
 	return results, nil
 }
-//count
-func (m *MongodbSim) Count(c string, query map[string]interface{}) (int64, error) {
-	m.Open()
-	defer m.Close()
-	coll := m.C.Database(m.DbName).Collection(c)
-	countDocuments, err := coll.CountDocuments(m.Ctx, query)
-	if err != nil {
-		log.Fatal(err)
-		return 0, err
-	}
-	return countDocuments, nil
-}
+
 //创建_id
 func NewObjectId() primitive.ObjectID {
 	return primitive.NewObjectID()
 }
 
-func StringTOBsonId(id string) primitive.ObjectID {
-	objectId, _ := primitive.ObjectIDFromHex(id)
-	return objectId
+
+func InitMgoEn(uri string, poolSize uint64,username_password ... string) (*Mgo, error) {
+	//fengweiqiang fwq@123123
+	m := Mgo{}
+	m.Uri = uri
+	if poolSize == 0 {
+		m.PoolSize = 100
+	}
+	//fengweiqiang/fwq@123123
+	options_client := options.Client().
+		ApplyURI(uri).SetMaxPoolSize(m.PoolSize)
+	if len(username_password)==2{
+		options_client = options_client.SetAuth(options.Credential{Username: username_password[0], Password: username_password[1]})
+	}
+	client, err := mongo.Connect(context.Background(), options_client)
+	if err != nil {
+		return nil, err
+	} else {
+		m.mgoEn = client
+		return &m, nil
+	}
 }
 
-func BsonTOStringId(id interface{}) string {
-	return id.(primitive.ObjectID).Hex()
+func (m *Mgo) GetCon() *mongo.Client {
+	if m.mgoEn != nil {
+		return m.mgoEn
+	} else {
+		return nil
+	}
 }
+
+
+//var zwjeReg *regexp.Regexp = regexp.MustCompile(`([〇零点壹贰叁肆伍陆柒捌玖拾百佰千仟万萬亿億元圆角分整正]{4,40})`)

+ 4 - 9
udpdataclear/udpSensitiveWords/util/udpdata.go

@@ -54,9 +54,7 @@ func QuerySensitiveWords(sid, eid string) {
 		if win, isok := tmp["winner"].(string); isok {
 			queryGrpcWinner := query_grpc(win, FindWinnerC)
 			if queryGrpcWinner == "" {
-				new_name,b :=dealWithScoreRules(win)
-				if b {tmp["winner"] = new_name}
-				log.Println(new_name)
+
 			} else {
 				tmp["winner"] = queryGrpcWinner
 			}
@@ -64,8 +62,7 @@ func QuerySensitiveWords(sid, eid string) {
 		if win, isok := tmp["s_winner"].(string); isok {
 			queryGrpcWinner := query_grpc(win, FindWinnerC)
 			if queryGrpcWinner == "" {
-				new_name,b :=dealWithScoreRules(win)
-				if b {tmp["s_winner"] = new_name}
+
 			} else {
 				tmp["s_winner"] = queryGrpcWinner
 			}
@@ -74,8 +71,7 @@ func QuerySensitiveWords(sid, eid string) {
 		if agency, isok := tmp["agency"].(string); isok {
 			queryGrpcAgency := query_grpc(agency, FindAgencyC)
 			if queryGrpcAgency == "" {
-				new_name,b :=dealWithScoreRules(agency)
-				if b {tmp["agency"] = new_name}
+
 			} else {
 				tmp["agency"] = queryGrpcAgency
 			}
@@ -84,8 +80,7 @@ func QuerySensitiveWords(sid, eid string) {
 		if buyer, isok := tmp["buyer"].(string); isok {
 			queryGrpcBuyer := query_grpc(buyer, FindBuyerC)
 			if queryGrpcBuyer == "" {
-				new_name,b :=dealWithScoreRules(buyer)
-				if b {tmp["buyer"] = new_name}
+
 			} else {
 				tmp["buyer"] = queryGrpcBuyer
 			}

+ 0 - 81
udpdataclear/udpSensitiveWords/util/word.go

@@ -1,81 +0,0 @@
-package util
-
-import (
-	"encoding/json"
-	"log"
-	"strings"
-	"unicode"
-	"unicode/utf8"
-)
-
-func dealWithScoreRules(name string) (string,bool) {
-	new_name,isok :="",false
-	for _, c := range name {
-		if !(unicode.Is(unicode.Han, c) || unicode.IsNumber(c) || unicode.IsLetter(c)) {
-			return "",false
-		}
-	}
-	query:= `{"query":{"bool":{"must":[{"query_string":{"default_field":"`+es_index+`.name_word","query":"`+name+`"}}],"must_not":[],"should":[]}},"from":0,"size":1,"sort":[],"facets":{}}`
-	//默认取最高分-分析多个分-遍历器查询
-	tmp := make(map[string]interface{})
-	json.Unmarshal([]byte(query),&tmp)
-	searchResult, err := Client_Es.Search().Index(es_index).Type(es_type).Source(tmp).Do()
-	if err != nil {
-		log.Println("从ES查询出错", err.Error())
-		return new_name,isok
-	}
-	data := make(map[string]interface{},0)
-	if searchResult.Hits != nil {
-		for _, hit := range searchResult.Hits.Hits {
-			json.Unmarshal(*hit.Source, &data)
-		}
-	}
-	if len(data)>0 && data != nil {
-		new_name = objToString(data["name"])
-	}
-	if new_name!="" { //分析hit比例
-		total,hit := dealWithWordsRules(name,new_name)
-		if float64(hit)/float64(total)>=0.8 {
-			isok = true
-		}
-	}
-	return new_name,isok
-}
-
-//击中数量以及比例
-func dealWithWordsRules(info_name string ,source_name string) (int,int){
-	total,hit :=0,0
-	nameArr,_ := calculateWordCount(info_name)
-	_,total = calculateWordCount(source_name)
-	for _,v1 := range nameArr {
-		if strings.Contains(source_name,v1) {
-			hit++
-		}
-	}
-	return total,hit
-}
-
-//分词结果
-func calculateWordCount(name string) ([]string,int) {
-
-	arr, space := make([]string, 0), 2
-	total := utf8.RuneCountInString(name) - (space - 1)
-	if name == "" || total <= 0 {
-		return arr, 0
-	}
-	nameRune := []rune(name)
-	for i := 0; i < total; i++ {
-		new_str := string(nameRune[i : space+i])
-		arr = append(arr, new_str)
-	}
-	return arr, len(arr)
-}
-
-func objToString(old interface{}) string {
-	if nil == old {
-		return ""
-	} else {
-		r, _ := old.(string)
-		return r
-	}
-}