|
@@ -1027,7 +1027,7 @@ func AnalysisSaveResult(j, jf *ju.Job, e *ExtractTask) {
|
|
|
|
|
|
//质量审核
|
|
|
if ok, _ := ju.Config["qualityaudit"].(bool); ok {
|
|
|
- e.QualityAudit(tmp)
|
|
|
+ e.QualityAudit(tmp, _id)
|
|
|
}
|
|
|
if e.IsExtractCity { //城市抽取
|
|
|
b, p, c, d := e.TransmitData(tmp, _id) //抽取省份城市
|
|
@@ -1154,62 +1154,101 @@ func funcAnalysis(j *ju.Job) (*map[string]interface{}, map[string][]*ju.ExtField
|
|
|
return doc, result, _id, values
|
|
|
}
|
|
|
|
|
|
-func (e *ExtractTask) QualityAudit(resulttmp map[string]interface{}) {
|
|
|
+func (e *ExtractTask) QualityAudit(resulttmp map[string]interface{}, _id string) {
|
|
|
defer qu.Catch()
|
|
|
//获取审核字段
|
|
|
for _, field := range e.AuditFields {
|
|
|
- //1.分包
|
|
|
- if resulttmp["package"] != nil {
|
|
|
- packagedata := resulttmp["package"].(map[string]map[string]interface{})
|
|
|
- for _, val := range packagedata {
|
|
|
- if val[field] != nil {
|
|
|
- fv := qu.ObjToString(val[field])
|
|
|
- if fv != "" {
|
|
|
- if field == "buyer" || field == "winner" { //field为buyer和winner时特殊处理,先从Redis中查,有直接通过,没有走匹配规则
|
|
|
- e.RedisMatch(field, fv, val) //redis匹配
|
|
|
- } else { //除了buyer和winner,其他字段走规则匹配
|
|
|
- e.RuleMatch(field, fv, val)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ //1.分包 暂时不处理
|
|
|
+ // if resulttmp["package"] != nil {
|
|
|
+ // packagedata := resulttmp["package"].(map[string]map[string]interface{})
|
|
|
+ // for _, val := range packagedata {
|
|
|
+ // if val[field] != nil {
|
|
|
+ // fv := qu.ObjToString(val[field])
|
|
|
+ // if fv != "" {
|
|
|
+ // if field == "buyer" || field == "winner" { //field为buyer和winner时特殊处理,先从Redis中查,有直接通过,没有走匹配规则
|
|
|
+ // e.RedisMatch(field, fv, _id, true) //redis匹配
|
|
|
+ // } else { //除了buyer和winner,其他字段走规则匹配
|
|
|
+ // e.RuleMatch(field, fv, _id, true)
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
//2.外围
|
|
|
- if resulttmp[field] != nil {
|
|
|
- fv := qu.ObjToString(resulttmp[field])
|
|
|
- if fv != "" {
|
|
|
- if field == "buyer" || field == "winner" { //field为buyer和winner时特殊处理,先从Redis中查,有直接通过,没有走匹配规则
|
|
|
- e.RedisMatch(field, fv, resulttmp) //redis匹配
|
|
|
- } else { //除了buyer和winner,其他字段走规则匹配
|
|
|
- e.RuleMatch(field, fv, resulttmp)
|
|
|
- }
|
|
|
+ //if resulttmp[field] != nil {
|
|
|
+ //fv := qu.ObjToString(resulttmp[field])
|
|
|
+ fv := "中标单位123"
|
|
|
+ if fv != "" {
|
|
|
+ if field == "buyer" || field == "winner" { //field为buyer和winner时特殊处理,先从Redis中查,有直接通过,没有走匹配规则
|
|
|
+ e.RedisMatch(field, fv, _id, false) //redis匹配
|
|
|
+ } else { //除了buyer和winner,其他字段走规则匹配
|
|
|
+ e.RuleMatch(field, fv, _id, false)
|
|
|
}
|
|
|
}
|
|
|
+ //}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//Redis匹配
|
|
|
-func (e *ExtractTask) RedisMatch(field, fv string, val map[string]interface{}) {
|
|
|
+func (e *ExtractTask) RedisMatch(field, fv, _id string, isPackage bool) {
|
|
|
defer qu.Catch()
|
|
|
+ //先匹配redis,在匹配企业名称库
|
|
|
i := redis.GetInt(field, field+"_"+fv) //查找redis
|
|
|
- if i == 0 { //reids未找到,执行规则匹配
|
|
|
- val[field+"_isredis"] = false
|
|
|
- e.RuleMatch(field, fv, val) //规则匹配
|
|
|
- } else { //redis找到,打标识存库
|
|
|
- val[field+"_isredis"] = true
|
|
|
+ if i == 0 {
|
|
|
+ has := e.GetFromBusinessLab(fv) //查企业名称库
|
|
|
+ if !has { //没有保存到审核表
|
|
|
+ go func(_id, field, fv string, isPackage bool) {
|
|
|
+ save := map[string]interface{}{
|
|
|
+ "extractid": _id,
|
|
|
+ "field": field,
|
|
|
+ "val": fv,
|
|
|
+ "l_createtime": time.Now().Unix(),
|
|
|
+ "ispackage": isPackage,
|
|
|
+ "extractcoll": e.TaskInfo.TrackColl,
|
|
|
+ }
|
|
|
+ db.Mgo.Save("audit_err", save) //保存
|
|
|
+ }(_id, field, fv, isPackage)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return
|
|
|
}
|
|
|
+
|
|
|
+ // if i == 0 { //reids未找到,执行规则匹配
|
|
|
+ // val[field+"_isredis"] = false
|
|
|
+ // e.RuleMatch(field, fv, val) //规则匹配
|
|
|
+ // } else { //redis找到,打标识存库
|
|
|
+ // val[field+"_isredis"] = true
|
|
|
+ // }
|
|
|
+}
|
|
|
+
|
|
|
+//查企业库
|
|
|
+func (e *ExtractTask) GetFromBusinessLab(name string) bool {
|
|
|
+ //db.Mgo.FindOne()
|
|
|
+ return false
|
|
|
}
|
|
|
|
|
|
//规则匹配
|
|
|
-func (e *ExtractTask) RuleMatch(field, fieldval string, tmpMap map[string]interface{}) {
|
|
|
+func (e *ExtractTask) RuleMatch(field, fieldval, _id string, isPackage bool) {
|
|
|
defer qu.Catch()
|
|
|
if fieldval != "" {
|
|
|
SMap := e.StartMatch(field, fieldval)
|
|
|
- //SMap.AddKey(field+"_isaudit", false)
|
|
|
for _, k := range SMap.Keys {
|
|
|
- tmpMap[k] = SMap.Map[k]
|
|
|
+ if k == "err" {
|
|
|
+ go func(_id, field, fv string, isPackage bool) {
|
|
|
+ save := map[string]interface{}{
|
|
|
+ "extractid": _id,
|
|
|
+ "field": field,
|
|
|
+ "val": fv,
|
|
|
+ "l_createtime": time.Now().Unix(),
|
|
|
+ "ispackage": isPackage,
|
|
|
+ "extractcoll": e.TaskInfo.TrackColl,
|
|
|
+ }
|
|
|
+ db.Mgo.Save("audit_err", save) //保存
|
|
|
+ }(_id, field, fieldval, isPackage)
|
|
|
+ }
|
|
|
+ //tmpMap[k] = SMap.Map[k]
|
|
|
}
|
|
|
- tmpMap[field+"_isaudit"] = false //添加字段未审核信息
|
|
|
+ //tmpMap[field+"_isaudit"] = false //添加字段未审核信息
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1232,7 +1271,7 @@ func (e *ExtractTask) StartMatch(field, text string) *pretreated.SortMap {
|
|
|
for _, c := range classMap { //class
|
|
|
classid := qu.BsonIdToSId(c["_id"])
|
|
|
classPrerule := qu.ObjToString(c["s_class_prerule"])
|
|
|
- savefield := qu.ObjToString(c["s_savefield"]) //保存字段
|
|
|
+ savefield := qu.ObjToString(c["s_savefield"])
|
|
|
textAfterClassPrerule := ju.PreFilter(textAfterRecogFieldPrerule, classPrerule) //class的前置过滤
|
|
|
if textAfterClassPrerule != "" {
|
|
|
lock.Lock()
|
|
@@ -1247,7 +1286,8 @@ func (e *ExtractTask) StartMatch(field, text string) *pretreated.SortMap {
|
|
|
b, _ := ju.RecogAnalyRules(textAfterRulePrerule, rule)
|
|
|
if b { //匹配到一个分类下某个规则时,不再继续匹配
|
|
|
if savefield != "" { //保存字段不为空,存储代码信息
|
|
|
- SMap.AddKey(field+"_"+savefield, s_name)
|
|
|
+ //SMap.AddKey(field+"_"+savefield, s_name)
|
|
|
+ SMap.AddKey(savefield, s_name)
|
|
|
}
|
|
|
break L
|
|
|
}
|