Bläddra i källkod

homepage recommend

丁云鹏 1 år sedan
förälder
incheckning
b32bec913f

+ 32 - 18
recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/recommend/Recommend.java

@@ -19,6 +19,11 @@ public final class Recommend {
   static final 
   static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_RecommendRequest_fieldAccessorTable;
       internal_static_RecommendRequest_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_RecommendRequest_EventIdEntry_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_RecommendRequest_EventIdEntry_fieldAccessorTable;
   static final com.google.protobuf.Descriptors.Descriptor
   static final com.google.protobuf.Descriptors.Descriptor
     internal_static_RecommendResponse_descriptor;
     internal_static_RecommendResponse_descriptor;
   static final 
   static final 
@@ -41,24 +46,27 @@ public final class Recommend {
       "\n2com/tzld/piaoquan/recommend/server/rec" +
       "\n2com/tzld/piaoquan/recommend/server/rec" +
       "ommend.proto\032\031google/protobuf/any.proto\032" +
       "ommend.proto\032\031google/protobuf/any.proto\032" +
       "/com/tzld/piaoquan/recommend/server/comm" +
       "/com/tzld/piaoquan/recommend/server/comm" +
-      "on.proto\"\354\001\n\020RecommendRequest\022\022\n\nrequest" +
+      "on.proto\"\315\002\n\020RecommendRequest\022\022\n\nrequest" +
       "_id\030\001 \001(\t\022\013\n\003mid\030\002 \001(\t\022\013\n\003uid\030\003 \001(\t\022\014\n\004s" +
       "_id\030\001 \001(\t\022\013\n\003mid\030\002 \001(\t\022\013\n\003uid\030\003 \001(\t\022\014\n\004s" +
-      "ize\030\004 \001(\005\022\020\n\010app_type\030\005 \001(\005\022\023\n\013client_in" +
-      "fo\030\006 \001(\t\022\023\n\013ab_exp_info\030\007 \001(\t\022\024\n\014ab_info" +
-      "_data\030\010 \001(\t\022\034\n\024version_audit_status\030\t \001(" +
-      "\005\022\032\n\022recommend_trace_id\030\n \001(\t\022\020\n\010video_i" +
-      "d\030\013 \001(\003\"H\n\021RecommendResponse\022\027\n\006result\030\001" +
-      " \001(\0132\007.Result\022\032\n\005video\030\002 \003(\0132\013.VideoProt" +
-      "o\"\265\001\n\nVideoProto\022\020\n\010video_id\030\001 \001(\003\022\021\n\tro" +
-      "v_score\030\002 \001(\001\022\021\n\tpush_from\030\003 \001(\t\022\017\n\007ab_c" +
-      "ode\030\004 \001(\t\022\022\n\nsort_score\030\005 \001(\001\022\020\n\010positio" +
-      "n\030\006 \001(\005\022\021\n\tflow_pool\030\007 \001(\t\022\027\n\017is_in_flow" +
-      "_pool\030\010 \001(\005\022\014\n\004rand\030\t \001(\0012\212\001\n\020RecommendS" +
-      "ervice\022:\n\021HomepageRecommend\022\021.RecommendR" +
-      "equest\032\022.RecommendResponse\022:\n\021RelevantRe" +
-      "commend\022\021.RecommendRequest\032\022.RecommendRe" +
-      "sponseB7\n0com.tzld.piaoquan.recommend.se" +
-      "rver.gen.recommendP\001\210\001\001b\006proto3"
+      "ize\030\004 \001(\005\022\020\n\010app_type\030\005 \001(\005\022\021\n\tcity_code" +
+      "\030\006 \001(\t\022\025\n\rprovince_code\030\007 \001(\t\022\023\n\013ab_exp_" +
+      "code\030\010 \003(\t\0220\n\010event_id\030\t \003(\0132\036.Recommend" +
+      "Request.EventIdEntry\022\034\n\024version_audit_st" +
+      "atus\030\n \001(\005\022\032\n\022recommend_trace_id\030\013 \001(\t\022\020" +
+      "\n\010video_id\030\014 \001(\003\032.\n\014EventIdEntry\022\013\n\003key\030" +
+      "\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"H\n\021RecommendRes" +
+      "ponse\022\027\n\006result\030\001 \001(\0132\007.Result\022\032\n\005video\030" +
+      "\002 \003(\0132\013.VideoProto\"\265\001\n\nVideoProto\022\020\n\010vid" +
+      "eo_id\030\001 \001(\003\022\021\n\trov_score\030\002 \001(\001\022\021\n\tpush_f" +
+      "rom\030\003 \001(\t\022\017\n\007ab_code\030\004 \001(\t\022\022\n\nsort_score" +
+      "\030\005 \001(\001\022\020\n\010position\030\006 \001(\005\022\021\n\tflow_pool\030\007 " +
+      "\001(\t\022\027\n\017is_in_flow_pool\030\010 \001(\005\022\014\n\004rand\030\t \001" +
+      "(\0012\212\001\n\020RecommendService\022:\n\021HomepageRecom" +
+      "mend\022\021.RecommendRequest\032\022.RecommendRespo" +
+      "nse\022:\n\021RelevantRecommend\022\021.RecommendRequ" +
+      "est\032\022.RecommendResponseB7\n0com.tzld.piao" +
+      "quan.recommend.server.gen.recommendP\001\210\001\001" +
+      "b\006proto3"
     };
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -71,7 +79,13 @@ public final class Recommend {
     internal_static_RecommendRequest_fieldAccessorTable = new
     internal_static_RecommendRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_RecommendRequest_descriptor,
         internal_static_RecommendRequest_descriptor,
-        new java.lang.String[] { "RequestId", "Mid", "Uid", "Size", "AppType", "ClientInfo", "AbExpInfo", "AbInfoData", "VersionAuditStatus", "RecommendTraceId", "VideoId", });
+        new java.lang.String[] { "RequestId", "Mid", "Uid", "Size", "AppType", "CityCode", "ProvinceCode", "AbExpCode", "EventId", "VersionAuditStatus", "RecommendTraceId", "VideoId", });
+    internal_static_RecommendRequest_EventIdEntry_descriptor =
+      internal_static_RecommendRequest_descriptor.getNestedTypes().get(0);
+    internal_static_RecommendRequest_EventIdEntry_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_RecommendRequest_EventIdEntry_descriptor,
+        new java.lang.String[] { "Key", "Value", });
     internal_static_RecommendResponse_descriptor =
     internal_static_RecommendResponse_descriptor =
       getDescriptor().getMessageTypes().get(1);
       getDescriptor().getMessageTypes().get(1);
     internal_static_RecommendResponse_fieldAccessorTable = new
     internal_static_RecommendResponse_fieldAccessorTable = new

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 538 - 198
recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/recommend/RecommendRequest.java


+ 69 - 22
recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/recommend/RecommendRequestOrBuilder.java

@@ -64,65 +64,112 @@ public interface RecommendRequestOrBuilder extends
   int getAppType();
   int getAppType();
 
 
   /**
   /**
-   * <code>string client_info = 6;</code>
-   * @return The clientInfo.
+   * <code>string city_code = 6;</code>
+   * @return The cityCode.
    */
    */
-  java.lang.String getClientInfo();
+  java.lang.String getCityCode();
   /**
   /**
-   * <code>string client_info = 6;</code>
-   * @return The bytes for clientInfo.
+   * <code>string city_code = 6;</code>
+   * @return The bytes for cityCode.
    */
    */
   com.google.protobuf.ByteString
   com.google.protobuf.ByteString
-      getClientInfoBytes();
+      getCityCodeBytes();
 
 
   /**
   /**
-   * <code>string ab_exp_info = 7;</code>
-   * @return The abExpInfo.
+   * <code>string province_code = 7;</code>
+   * @return The provinceCode.
    */
    */
-  java.lang.String getAbExpInfo();
+  java.lang.String getProvinceCode();
   /**
   /**
-   * <code>string ab_exp_info = 7;</code>
-   * @return The bytes for abExpInfo.
+   * <code>string province_code = 7;</code>
+   * @return The bytes for provinceCode.
    */
    */
   com.google.protobuf.ByteString
   com.google.protobuf.ByteString
-      getAbExpInfoBytes();
+      getProvinceCodeBytes();
 
 
   /**
   /**
-   * <code>string ab_info_data = 8;</code>
-   * @return The abInfoData.
+   * <code>repeated string ab_exp_code = 8;</code>
+   * @return A list containing the abExpCode.
    */
    */
-  java.lang.String getAbInfoData();
+  java.util.List<java.lang.String>
+      getAbExpCodeList();
   /**
   /**
-   * <code>string ab_info_data = 8;</code>
-   * @return The bytes for abInfoData.
+   * <code>repeated string ab_exp_code = 8;</code>
+   * @return The count of abExpCode.
+   */
+  int getAbExpCodeCount();
+  /**
+   * <code>repeated string ab_exp_code = 8;</code>
+   * @param index The index of the element to return.
+   * @return The abExpCode at the given index.
+   */
+  java.lang.String getAbExpCode(int index);
+  /**
+   * <code>repeated string ab_exp_code = 8;</code>
+   * @param index The index of the value to return.
+   * @return The bytes of the abExpCode at the given index.
    */
    */
   com.google.protobuf.ByteString
   com.google.protobuf.ByteString
-      getAbInfoDataBytes();
+      getAbExpCodeBytes(int index);
+
+  /**
+   * <code>map&lt;string, string&gt; event_id = 9;</code>
+   */
+  int getEventIdCount();
+  /**
+   * <code>map&lt;string, string&gt; event_id = 9;</code>
+   */
+  boolean containsEventId(
+      java.lang.String key);
+  /**
+   * Use {@link #getEventIdMap()} instead.
+   */
+  @java.lang.Deprecated
+  java.util.Map<java.lang.String, java.lang.String>
+  getEventId();
+  /**
+   * <code>map&lt;string, string&gt; event_id = 9;</code>
+   */
+  java.util.Map<java.lang.String, java.lang.String>
+  getEventIdMap();
+  /**
+   * <code>map&lt;string, string&gt; event_id = 9;</code>
+   */
+
+  java.lang.String getEventIdOrDefault(
+      java.lang.String key,
+      java.lang.String defaultValue);
+  /**
+   * <code>map&lt;string, string&gt; event_id = 9;</code>
+   */
+
+  java.lang.String getEventIdOrThrow(
+      java.lang.String key);
 
 
   /**
   /**
    * <pre>
    * <pre>
    * default 2
    * default 2
    * </pre>
    * </pre>
    *
    *
-   * <code>int32 version_audit_status = 9;</code>
+   * <code>int32 version_audit_status = 10;</code>
    * @return The versionAuditStatus.
    * @return The versionAuditStatus.
    */
    */
   int getVersionAuditStatus();
   int getVersionAuditStatus();
 
 
   /**
   /**
-   * <code>string recommend_trace_id = 10;</code>
+   * <code>string recommend_trace_id = 11;</code>
    * @return The recommendTraceId.
    * @return The recommendTraceId.
    */
    */
   java.lang.String getRecommendTraceId();
   java.lang.String getRecommendTraceId();
   /**
   /**
-   * <code>string recommend_trace_id = 10;</code>
+   * <code>string recommend_trace_id = 11;</code>
    * @return The bytes for recommendTraceId.
    * @return The bytes for recommendTraceId.
    */
    */
   com.google.protobuf.ByteString
   com.google.protobuf.ByteString
       getRecommendTraceIdBytes();
       getRecommendTraceIdBytes();
 
 
   /**
   /**
-   * <code>int64 video_id = 11;</code>
+   * <code>int64 video_id = 12;</code>
    * @return The videoId.
    * @return The videoId.
    */
    */
   long getVideoId();
   long getVideoId();

+ 7 - 6
recommend-server-client/src/main/proto/com/tzld/piaoquan/recommend/server/recommend.proto

@@ -14,12 +14,13 @@ message RecommendRequest {
   string uid = 3;
   string uid = 3;
   int32 size = 4; // default 4
   int32 size = 4; // default 4
   int32 app_type = 5; // default 4
   int32 app_type = 5; // default 4
-  string client_info = 6;
-  string ab_exp_info = 7;
-  string ab_info_data = 8;
-  int32 version_audit_status = 9; // default 2
-  string recommend_trace_id = 10;
-  int64 video_id = 11;
+  string city_code = 6;
+  string province_code = 7;
+  repeated string ab_exp_code = 8;
+  map<string, string> event_id = 9;
+  int32 version_audit_status = 10; // default 2
+  string recommend_trace_id = 11;
+  int64 video_id = 12;
 }
 }
 
 
 // https://sls.console.aliyun.com/lognext/project/rov-server/logsearch/info
 // https://sls.console.aliyun.com/lognext/project/rov-server/logsearch/info

+ 15 - 51
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/RecommendService.java

@@ -2,7 +2,6 @@ package com.tzld.piaoquan.recommend.server.service;
 
 
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.google.common.base.Strings;
 import com.google.common.base.Strings;
-import com.google.common.reflect.TypeToken;
 import com.tzld.piaoquan.recommend.server.common.enums.AppTypeEnum;
 import com.tzld.piaoquan.recommend.server.common.enums.AppTypeEnum;
 import com.tzld.piaoquan.recommend.server.gen.common.Result;
 import com.tzld.piaoquan.recommend.server.gen.common.Result;
 import com.tzld.piaoquan.recommend.server.gen.recommend.RecommendRequest;
 import com.tzld.piaoquan.recommend.server.gen.recommend.RecommendRequest;
@@ -26,7 +25,6 @@ import com.tzld.piaoquan.recommend.server.service.recall.strategy.RegionRelative
 import com.tzld.piaoquan.recommend.server.util.DateUtils;
 import com.tzld.piaoquan.recommend.server.util.DateUtils;
 import com.tzld.piaoquan.recommend.server.util.JSONUtils;
 import com.tzld.piaoquan.recommend.server.util.JSONUtils;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.RandomUtils;
 import org.apache.commons.lang3.RandomUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -99,7 +97,7 @@ public class RecommendService {
                 && redisTemplate.opsForSet().isMember("special:mid", request.getMid())) {
                 && redisTemplate.opsForSet().isMember("special:mid", request.getMid())) {
             return specialMidRecommend(request);
             return specialMidRecommend(request);
         }
         }
-        RecommendParam param = genRecommendParam(request, 0);
+        RecommendParam param = genRecommendParam(request, recommendType);
         log.info("genRecommendParam : {}", JSONUtils.toJson(param));
         log.info("genRecommendParam : {}", JSONUtils.toJson(param));
 
 
         List<Video> videos = videoRecommend(param);
         List<Video> videos = videoRecommend(param);
@@ -190,15 +188,8 @@ public class RecommendService {
         param.setUid(request.getUid());
         param.setUid(request.getUid());
         param.setSize(request.getSize());
         param.setSize(request.getSize());
         param.setVideoId(request.getVideoId());
         param.setVideoId(request.getVideoId());
-
-        // client_info: {"cityCode": "", "provinceCode": "330000"}
-        if (StringUtils.isNotBlank(request.getClientInfo())) {
-            Map<String, String> clientInfoMap = JSONUtils.fromJson(request.getClientInfo(),
-                    new TypeToken<Map<String, String>>() {
-                    }, Collections.emptyMap());
-            param.setCityCode(clientInfoMap.get("cityCode"));
-            param.setProvinceCode(clientInfoMap.get("provinceCode"));
-        }
+        param.setCityCode(request.getCityCode());
+        param.setProvinceCode(request.getProvinceCode());
 
 
         String abInitialConfig = ab_initial_config_map.getOrDefault(request.getAppType(), "095-1");
         String abInitialConfig = ab_initial_config_map.getOrDefault(request.getAppType(), "095-1");
         Map<String, String> abExpCode = abExpCodeMap.get(abInitialConfig);
         Map<String, String> abExpCode = abExpCodeMap.get(abInitialConfig);
@@ -208,16 +199,8 @@ public class RecommendService {
         param.setRankKeyPrefix("rank:score1:");
         param.setRankKeyPrefix("rank:score1:");
 
 
         // 实验配置
         // 实验配置
-        if (StringUtils.isNotBlank(request.getAbExpInfo())) {
-            Set<String> abExpCodes = new HashSet<>();
-            Map<String, List<Map<String, String>>> map = JSONUtils.fromJson(request.getAbExpInfo(),
-                    new TypeToken<Map<String, List<Map<String, String>>>>() {
-                    },
-                    Collections.emptyMap());
-            for (List<Map<String, String>> list : map.values()) {
-                list.stream().forEach(m -> abExpCodes.add(m.get("abExpCode")));
-            }
-
+        if (request.getAbExpCodeCount() > 0) {
+            Set<String> abExpCodes = request.getAbExpCodeList().stream().collect(Collectors.toSet());
             // 流量池视频分发概率
             // 流量池视频分发概率
             if (abExpCodes.contains("211")) {
             if (abExpCodes.contains("211")) {
                 param.setFlowPoolP(0.9);
                 param.setFlowPoolP(0.9);
@@ -247,24 +230,9 @@ public class RecommendService {
         }
         }
 
 
         // app实验组
         // app实验组
-        // {"10018":{"eventId":"100182","ifAddedRootEventId":true},"10020":{"eventId":"100201","ifAddedRootEventId":true}}
-        if (StringUtils.isNotBlank(request.getAbInfoData())) {
-            Map<String, String> abInfoAppMap = new HashMap<>();
-            Map<String, Map<String, String>> map = JSONUtils.fromJson(request.getAbInfoData(),
-                    new TypeToken<Map<String, Map<String, String>>>() {
-                    },
-                    Collections.emptyMap());
-            for (Map.Entry<String, Map<String, String>> entry : map.entrySet()) {
-                if (MapUtils.isEmpty(entry.getValue())) {
-                    continue;
-                }
-                String eventId = entry.getValue().get("eventId");
-                if (StringUtils.isNotBlank(eventId)) {
-                    abInfoAppMap.put(entry.getKey(), eventId);
-                }
-            }
+        if (request.getEventIdCount() > 0) {
             if (recommendType == 0) {
             if (recommendType == 0) {
-                String eventId = abInfoAppMap.get("10003");
+                String eventId = request.getEventIdMap().get("10003");
                 Map<String, Map<String, String>> appAbCode = appAbCodeMap.get("10003");
                 Map<String, Map<String, String>> appAbCode = appAbCodeMap.get("10003");
                 if (StringUtils.isNotBlank(eventId) && appAbCode.containsKey(eventId)) {
                 if (StringUtils.isNotBlank(eventId) && appAbCode.containsKey(eventId)) {
                     param.setAbCode(appAbCode.get(eventId).get("ab_code"));
                     param.setAbCode(appAbCode.get(eventId).get("ab_code"));
@@ -272,19 +240,15 @@ public class RecommendService {
                     param.setDataKey(appAbCode.get(eventId).get("data_key"));
                     param.setDataKey(appAbCode.get(eventId).get("data_key"));
                 }
                 }
             }
             }
+        }
 
 
-            // 流量池分发实验组划分
-            int flowPoolIdChoice = flowPoolIdList[RandomUtils.nextInt(0, flowPoolIdList.length - 1)];
-            param.setFlowPoolAbtestGroup("control_group");
-            try {
-                Map<String, List<Integer>> flowPoolConfig = flowPoolConfigService.getFlowPoolConfig();
-                for (Map.Entry<String, List<Integer>> entry : flowPoolConfig.entrySet()) {
-                    if (entry.getValue().contains(flowPoolIdChoice)) {
-                        param.setFlowPoolAbtestGroup(entry.getKey());
-                    }
-                }
-            } catch (Exception e) {
-                log.error("flowPoolConfigCache get error", e);
+        // 流量池分发实验组划分
+        int flowPoolIdChoice = flowPoolIdList[RandomUtils.nextInt(0, flowPoolIdList.length - 1)];
+        param.setFlowPoolAbtestGroup("control_group");
+        Map<String, List<Integer>> flowPoolConfig = flowPoolConfigService.getFlowPoolConfig();
+        for (Map.Entry<String, List<Integer>> entry : flowPoolConfig.entrySet()) {
+            if (entry.getValue().contains(flowPoolIdChoice)) {
+                param.setFlowPoolAbtestGroup(entry.getKey());
             }
             }
         }
         }
 
 

+ 1 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/RecallService.java

@@ -60,7 +60,7 @@ public class RecallService implements ApplicationContextAware {
         try {
         try {
             cdl.await(3000, TimeUnit.MILLISECONDS);
             cdl.await(3000, TimeUnit.MILLISECONDS);
         } catch (InterruptedException e) {
         } catch (InterruptedException e) {
-            log.error("rov_pool_recall_with_region recall error", e);
+            log.error("recall error", e);
             return null;
             return null;
         }
         }
 
 

+ 1 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/ReturnVideoRecallStrategy.java

@@ -10,7 +10,7 @@ public class ReturnVideoRecallStrategy extends AbstractVideoRecallStrategy {
 
 
     @Override
     @Override
     String recallKey(RecallParam param) {
     String recallKey(RecallParam param) {
-        return "rv2:" + param.getVideoId();
+        return String.format("rv2:%s", param.getVideoId());
     }
     }
 
 
     @Override
     @Override

+ 1 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/SimHotVideoRecallStrategy.java

@@ -11,7 +11,7 @@ public class SimHotVideoRecallStrategy extends AbstractVideoRecallStrategy {
 
 
     @Override
     @Override
     String recallKey(RecallParam param) {
     String recallKey(RecallParam param) {
-        return "sim_hot_" + param.getVideoId();
+        return String.format("sim_hot_%s", param.getVideoId());
     }
     }
 
 
     @Override
     @Override

Vissa filer visades inte eftersom för många filer har ändrats