From 250f2e68becab56cc009216496dfa0d7d8d1a22f Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期日, 07 七月 2024 15:15:20 +0800 Subject: [PATCH] 添加常住人口和重点人员比对 --- compare/compare.go | 89 +++++++++----------------------------------- 1 files changed, 18 insertions(+), 71 deletions(-) diff --git a/compare/compare.go b/compare/compare.go index 59f989a..a1fa2e1 100644 --- a/compare/compare.go +++ b/compare/compare.go @@ -2,10 +2,9 @@ import ( "fmt" - "sdkCompare/util" "strconv" - "sdkCompare/cache" + "sdkCompare/util" "basic.com/pubsub/protomsg.git" "basic.com/valib/logger.git" @@ -14,12 +13,12 @@ const thresholdLimit = float32(30) -func GetComparePersonBaseInfo(args protomsg.CompareArgs) []byte { +func Walk(args protomsg.CompareArgs) []byte { if args.FaceFeature == nil { return nil } - floatFeat := util.ByteSlice2float32Slice(args.FaceFeature) + fFeature := util.ByteSlice2float32Slice(args.FaceFeature) //鎸囧畾鏈�浣庡垎 baseScore := thresholdLimit @@ -31,79 +30,27 @@ baseScore = 0 } - var scResult protomsg.SdkCompareResult + var response protomsg.SdkCompareResult - var walkedArea = make(map[string]struct{}, 0) - // 浼樺厛姣斿浼犲叆鐨勫皬鍖篿d - if args.TreeNodes != nil && len(args.TreeNodes) > 0 { - for _, id := range args.TreeNodes { - if _, ok := cache.CacheMap.Area[id]; ok { - targets := cache.CacheMap.Area[id].Walk(DoSdkCompare, floatFeat, baseScore) - if len(targets) > 0 { - // 姣斿缁撴灉鍘婚噸, 鍚屼竴涓汉鍒拌杩囧涓皬鍖�, 缂撳瓨鏁版嵁鍐呬細鏈夊鏉¤褰� - for idx, t := range targets { - var isRepeat bool - for _, r := range scResult.CompareResult { - if t.Id == r.Id { - isRepeat = true - break - } - } - if !isRepeat { - scResult.CompareResult = append(scResult.CompareResult, targets[idx]) - } - } - } - - walkedArea[id] = struct{}{} - } - } - - if len(scResult.CompareResult) > 0 { - goto done - } + // 鎶撴媿搴撴瘮瀵� + switch args.CompareTarget { + case "realName": + response = realNamePersonsCompere(args, fFeature, baseScore) + case "keyPerson": + response = keyPersonsCompere(args, fFeature, baseScore) + default: + response = capturePersonsCompere(args, fFeature, baseScore) } - // 姣斿浠ュ鐨勫皬鍖� - if !args.IsCompareAll && len(args.TreeNodes) > 0 { - baseScore += 20 + logger.Debugf("Compare Target %s result len %d", args.CompareTarget, len(response.CompareResult)) + + if len(response.CompareResult) > 0 { + logger.Debugf("Compare result %+v", response.CompareResult) } - for key, val := range cache.CacheMap.Area { - if _, ok := walkedArea[key]; ok { - continue - } - - targets := val.Walk(DoSdkCompare, floatFeat, baseScore) - if len(targets) > 0 { - if len(targets) > 0 { - // 姣斿缁撴灉鍘婚噸, 鍚屼竴涓汉鍒拌杩囧涓皬鍖�, 缂撳瓨鏁版嵁鍐呬細鏈夊鏉¤褰� - for idx, t := range targets { - var isRepeat bool - for _, r := range scResult.CompareResult { - if t.Id == r.Id { - isRepeat = true - break - } - } - if !isRepeat { - scResult.CompareResult = append(scResult.CompareResult, targets[idx]) - } - } - } - // todo 娣诲姞灏忓尯澶栫殑鍏宠仈鍏崇郴, 涓嬫浼樺厛姣斿 - } - } - -done: - logger.Debugf("姣斿缁撴灉 %d鏉�", len(scResult.CompareResult)) - if len(scResult.CompareResult) > 0 { - logger.Debugf("姣斿缁撴灉%+v", scResult.CompareResult) - } - - buf, err := proto.Marshal(&scResult) + buf, err := proto.Marshal(&response) if err != nil { - logger.Error("scResult Marshal error!", err) + logger.Error("response Marshal error!", err) return nil } -- Gitblit v1.8.0