Преглед на файлове

用户实时分享数据埋点

jch преди 2 дни
родител
ревизия
d1a175adce
променени са 11 файла, в които са добавени 85 реда и са изтрити 5 реда
  1. 3 0
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/RecommendParam.java
  2. 25 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/RecommendService.java
  3. 3 0
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/RankParam.java
  4. 17 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelBasic.java
  5. 4 0
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV536.java
  6. 4 0
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV566.java
  7. 4 0
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV567.java
  8. 4 0
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV568.java
  9. 6 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/tansform/FeatureV6.java
  10. 3 0
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/RecallParam.java
  11. 12 0
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/util/FeatureUtils.java

+ 3 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/RecommendParam.java

@@ -1,9 +1,11 @@
 package com.tzld.piaoquan.recommend.server.model;
 
+import com.tzld.piaoquan.recommend.server.service.rank.bo.UserSRBO;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -51,5 +53,6 @@ public class RecommendParam {
     private String channelName;
 
     private String rootSessionId;
+    private List<UserSRBO> userRTShareList;
 }
 

+ 25 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/RecommendService.java

@@ -17,6 +17,7 @@ import com.tzld.piaoquan.recommend.server.service.flowpool.FlowPoolService;
 import com.tzld.piaoquan.recommend.server.service.rank.RankParam;
 import com.tzld.piaoquan.recommend.server.service.rank.RankResult;
 import com.tzld.piaoquan.recommend.server.service.rank.RankRouter;
+import com.tzld.piaoquan.recommend.server.service.rank.bo.UserSRBO;
 import com.tzld.piaoquan.recommend.server.service.rank.bo.UserShareReturnProfile;
 import com.tzld.piaoquan.recommend.server.service.recall.RecallParam;
 import com.tzld.piaoquan.recommend.server.service.recall.RecallResult;
@@ -372,6 +373,7 @@ public class RecommendService {
         param.setUserShareDepth(request.getUserShareDepth());
         param.setPageNum(request.getPageNum());
         param.setRootSessionId(request.getRootSessionId());
+        param.setUserRTShareList(getUserRTShareList(request.getShareListList()));
         return param;
     }
 
@@ -387,6 +389,7 @@ public class RecommendService {
         RecallParam recallParam = convertToRecallParam(param);
         recallParam.setUserProfile(userProfile);
         recallParam.setHeadInfo(headVideoInfo);
+        recallParam.setUserRTShareList(param.getUserRTShareList());
         RecallResult recallResult = recallService.recall(recallParam);
 
         long recallTime = stopwatch.elapsed(TimeUnit.MILLISECONDS);
@@ -397,6 +400,7 @@ public class RecommendService {
         RankParam rankParam = convertToRankParam(param, recallResult);
         rankParam.setUserProfile(userProfile);
         rankParam.setHeadInfo(headVideoInfo);
+        rankParam.setUserRTShareList(param.getUserRTShareList());
         RankResult rankResult = rankRouter.rank(rankParam);
 
         long rankTime = stopwatch.elapsed(TimeUnit.MILLISECONDS);
@@ -570,5 +574,25 @@ public class RecommendService {
         return "公众号代运营-Daily";
     }
 
-
+    private List<UserSRBO> getUserRTShareList(List<VideoActionInfoProto> list) {
+        List<UserSRBO> rtShareList = new ArrayList<>();
+        if (null != list && !list.isEmpty()) {
+            long startTs = System.currentTimeMillis() / 1000L - 2 * 3600L;
+            for (VideoActionInfoProto videoAction : list) {
+                if (null != videoAction) {
+                    long id = videoAction.getVideoId();
+                    long ts = videoAction.getTs();
+                    if (ts > startTs && rtShareList.size() < 4) {
+                        UserSRBO userSRBO = new UserSRBO();
+                        userSRBO.setId(id);
+                        userSRBO.setTs(ts);
+                        rtShareList.add(userSRBO);
+                    } else {
+                        break;
+                    }
+                }
+            }
+        }
+        return rtShareList;
+    }
 }

+ 3 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/RankParam.java

@@ -1,10 +1,12 @@
 package com.tzld.piaoquan.recommend.server.service.rank;
 
 import com.tzld.piaoquan.recommend.server.model.MachineInfo;
+import com.tzld.piaoquan.recommend.server.service.rank.bo.UserSRBO;
 import com.tzld.piaoquan.recommend.server.service.rank.bo.UserShareReturnProfile;
 import com.tzld.piaoquan.recommend.server.service.recall.RecallResult;
 import lombok.Data;
 
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -40,4 +42,5 @@ public class RankParam {
     private Map<String, String> headInfo;
 
     private String rootSessionId;
+    private List<UserSRBO> userRTShareList;
 }

+ 17 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelBasic.java

@@ -7,14 +7,16 @@ import com.tzld.piaoquan.recommend.server.model.Video;
 import com.tzld.piaoquan.recommend.server.service.rank.RankParam;
 import com.tzld.piaoquan.recommend.server.service.rank.RankResult;
 import com.tzld.piaoquan.recommend.server.service.rank.RankService;
-import com.tzld.piaoquan.recommend.server.service.rank.extractor.ExtractVideoMergeCate;
+import com.tzld.piaoquan.recommend.server.service.rank.bo.UserSRBO;
 import com.tzld.piaoquan.recommend.server.service.rank.extractor.ExtractorUtils;
 import com.tzld.piaoquan.recommend.server.service.rank.extractor.RankExtractorItemTags;
-import com.tzld.piaoquan.recommend.server.service.rank.processor.*;
+import com.tzld.piaoquan.recommend.server.service.rank.processor.RankProcessorBoost;
+import com.tzld.piaoquan.recommend.server.service.rank.processor.RankProcessorDensity;
+import com.tzld.piaoquan.recommend.server.service.rank.processor.RankProcessorInsert;
+import com.tzld.piaoquan.recommend.server.service.rank.processor.RankProcessorTagFilter;
 import com.tzld.piaoquan.recommend.server.util.JSONUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.RandomUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -370,6 +372,18 @@ public abstract class RankStrategy4RegionMergeModelBasic extends RankService {
         return vor;
     }
 
+    protected Map<String, String> dumpsRtFeature(List<UserSRBO> userRTShareList) {
+        if (null == userRTShareList || userRTShareList.isEmpty()) {
+            return null;
+        }
+        Map<String, String> map = new HashMap<>();
+        String rtShare = JSONUtils.toJson(userRTShareList);
+        if (null != rtShare && !rtShare.isEmpty()) {
+            map.put("share", rtShare);
+        }
+        return map;
+    }
+
     private boolean isInsertDouHotFlowPoolVideo() {
         double rand = RandomUtils.nextDouble(0, 1);
         return rand <= newFlowPoolSelectRate;

+ 4 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV536.java

@@ -71,6 +71,7 @@ public class RankStrategy4RegionMergeModelV536 extends RankStrategy4RegionMergeM
         //-------------------序-------------------
         //-------------------逻-------------------
         //-------------------辑-------------------
+        Map<String, String> rtFeatureDumpsMap = dumpsRtFeature(param.getUserRTShareList());
 
         // 1. 批量获取特征  省份参数要对齐  headvid  要传递过来!
         // k1:视频、k2:表、k3:特征、v:特征值
@@ -160,6 +161,9 @@ public class RankStrategy4RegionMergeModelV536 extends RankStrategy4RegionMergeM
             if (MapUtils.isNotEmpty(feature.getUserFeature())) {
                 video.getMetaFeatureMap().putAll(feature.getUserFeature());
             }
+            if (null != rtFeatureDumpsMap && !rtFeatureDumpsMap.isEmpty()) {
+                video.getMetaFeatureMap().put("rt", rtFeatureDumpsMap);
+            }
             result.add(video);
         }
         ExtractVideoMergeCate.addOtherParam(result, videoBaseInfoMap);

+ 4 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV566.java

@@ -71,6 +71,7 @@ public class RankStrategy4RegionMergeModelV566 extends RankStrategy4RegionMergeM
         //-------------------序-------------------
         //-------------------逻-------------------
         //-------------------辑-------------------
+        Map<String, String> rtFeatureDumpsMap = dumpsRtFeature(param.getUserRTShareList());
 
         // 1. 批量获取特征  省份参数要对齐  headvid  要传递过来!
         // k1:视频、k2:表、k3:特征、v:特征值
@@ -160,6 +161,9 @@ public class RankStrategy4RegionMergeModelV566 extends RankStrategy4RegionMergeM
             if (MapUtils.isNotEmpty(feature.getUserFeature())) {
                 video.getMetaFeatureMap().putAll(feature.getUserFeature());
             }
+            if (null != rtFeatureDumpsMap && !rtFeatureDumpsMap.isEmpty()) {
+                video.getMetaFeatureMap().put("rt", rtFeatureDumpsMap);
+            }
             result.add(video);
         }
         ExtractVideoMergeCate.addOtherParam(result, videoBaseInfoMap);

+ 4 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV567.java

@@ -73,6 +73,7 @@ public class RankStrategy4RegionMergeModelV567 extends RankStrategy4RegionMergeM
         //-------------------序-------------------
         //-------------------逻-------------------
         //-------------------辑-------------------
+        Map<String, String> rtFeatureDumpsMap = dumpsRtFeature(param.getUserRTShareList());
 
         // 1. 批量获取特征  省份参数要对齐  headvid  要传递过来!
         // k1:视频、k2:表、k3:特征、v:特征值
@@ -162,6 +163,9 @@ public class RankStrategy4RegionMergeModelV567 extends RankStrategy4RegionMergeM
             if (MapUtils.isNotEmpty(feature.getUserFeature())) {
                 video.getMetaFeatureMap().putAll(feature.getUserFeature());
             }
+            if (null != rtFeatureDumpsMap && !rtFeatureDumpsMap.isEmpty()) {
+                video.getMetaFeatureMap().put("rt", rtFeatureDumpsMap);
+            }
             result.add(video);
         }
         ExtractVideoMergeCate.addOtherParam(result, videoBaseInfoMap);

+ 4 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV568.java

@@ -73,6 +73,7 @@ public class RankStrategy4RegionMergeModelV568 extends RankStrategy4RegionMergeM
         //-------------------序-------------------
         //-------------------逻-------------------
         //-------------------辑-------------------
+        Map<String, String> rtFeatureDumpsMap = dumpsRtFeature(param.getUserRTShareList());
 
         // 1. 批量获取特征  省份参数要对齐  headvid  要传递过来!
         // k1:视频、k2:表、k3:特征、v:特征值
@@ -170,6 +171,9 @@ public class RankStrategy4RegionMergeModelV568 extends RankStrategy4RegionMergeM
             if (MapUtils.isNotEmpty(feature.getUserFeature())) {
                 video.getMetaFeatureMap().putAll(feature.getUserFeature());
             }
+            if (null != rtFeatureDumpsMap && !rtFeatureDumpsMap.isEmpty()) {
+                video.getMetaFeatureMap().put("rt", rtFeatureDumpsMap);
+            }
             result.add(video);
         }
         ExtractVideoMergeCate.addOtherParam(result, videoBaseInfoMap);

+ 6 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/tansform/FeatureV6.java

@@ -179,6 +179,11 @@ public class FeatureV6 {
             String resolution = String.format("%s@%s@%s_%s", prefix, "wh", videoInfo.get("width"), videoInfo.get("height"));
             featMap.put(resolution, 1.0);
         }
+        String resolution = FeatureUtils.getResolution(videoInfo);
+        if (!resolution.isEmpty()) {
+            String resKey = String.format("%s@%s@%s", prefix, "res", resolution);
+            featMap.put(resKey, 1.0);
+        }
 
         // cate
         getVideoCateFeature(prefix, videoInfo, featMap);
@@ -303,7 +308,7 @@ public class FeatureV6 {
         for (String attr : videoCateAttrs) {
             String attrVal = videoInfo.getOrDefault(attr, "");
             attrVal = attrVal.trim();
-            if (!attrVal.isEmpty()) {
+            if (!attrVal.isEmpty() && !attrVal.equals("unknown")) {
                 String key = String.format("%s@%s@%s", prefix, attr, attrVal);
                 featMap.put(key, 1.0);
             }

+ 3 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/RecallParam.java

@@ -1,8 +1,10 @@
 package com.tzld.piaoquan.recommend.server.service.recall;
 
+import com.tzld.piaoquan.recommend.server.service.rank.bo.UserSRBO;
 import com.tzld.piaoquan.recommend.server.service.rank.bo.UserShareReturnProfile;
 import lombok.Data;
 
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -40,4 +42,5 @@ public class RecallParam {
     private Map<String, String> headInfo;
 
     private String rootSessionId;
+    private List<UserSRBO> userRTShareList;
 }

+ 12 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/util/FeatureUtils.java

@@ -131,4 +131,16 @@ public class FeatureUtils {
         }
         return "";
     }
+
+    public static String getResolution(Map<String, String> videoInfo) {
+        try {
+            if (null != videoInfo && videoInfo.containsKey("width") && videoInfo.containsKey("height")) {
+                int width = Integer.parseInt(videoInfo.get("width")) / 100;
+                int height = Integer.parseInt(videoInfo.get("height")) / 100;
+                return String.format("%d_%d", width, height);
+            }
+        } catch (Exception ignore) {
+        }
+        return "";
+    }
 }