Parcourir la source

homepage recommend

丁云鹏 il y a 1 an
Parent
commit
b640239f76

+ 21 - 17
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/RecommendService.java

@@ -249,7 +249,8 @@ public class RecommendService {
         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>>>(){},
+                    new TypeToken<Map<String, Map<String, String>>>() {
+                    },
                     Collections.emptyMap());
             for (Map.Entry<String, Map<String, String>> entry : map.entrySet()) {
                 if (MapUtils.isEmpty(entry.getValue())) {
@@ -345,24 +346,27 @@ public class RecommendService {
 
     private void markFlowPoolVideo(RecommendParam param, List<Video> videos) {
         for (Video data : videos) {
-
-            Long videoId = data.getVideoId();
-            String quick_flow_pool_isin_flow_pool_key =
-                    String.format("flow:pool:quick:video:ids:%s:3", param.getAppType());
-            String quick_flow_pool_flow_pool_key =
-                    String.format("flow:pool:quick:video:%s:3:%s", param.getAppType(), videoId);
-            if (redisTemplate.opsForSet().isMember(quick_flow_pool_isin_flow_pool_key, videoId)) {
-                data.setFlowPool(redisTemplate.opsForSet().randomMember(quick_flow_pool_flow_pool_key));
-                data.setInFlowPool(true);
-            } else {
-                String isIn_flow_pool_key =
-                        String.format("flow:pool:video:ids:%s:3", param.getAppType());
-                String flow_pool_key =
-                        String.format("flow:pool:video:%s:%s", param.getAppType(), videoId);
-                if (redisTemplate.opsForSet().isMember(isIn_flow_pool_key, videoId)) {
-                    data.setFlowPool(redisTemplate.opsForSet().randomMember(flow_pool_key));
+            try {
+                Long videoId = data.getVideoId();
+                String quick_flow_pool_isin_flow_pool_key =
+                        String.format("flow:pool:quick:video:ids:%s:3", param.getAppType());
+                String quick_flow_pool_flow_pool_key =
+                        String.format("flow:pool:quick:video:%s:3:%s", param.getAppType(), videoId);
+                if (redisTemplate.opsForSet().isMember(quick_flow_pool_isin_flow_pool_key, String.valueOf(videoId))) {
+                    data.setFlowPool(redisTemplate.opsForSet().randomMember(quick_flow_pool_flow_pool_key));
                     data.setInFlowPool(true);
+                } else {
+                    String isIn_flow_pool_key =
+                            String.format("flow:pool:video:ids:%s:3", param.getAppType());
+                    String flow_pool_key =
+                            String.format("flow:pool:video:%s:%s", param.getAppType(), videoId);
+                    if (redisTemplate.opsForSet().isMember(isIn_flow_pool_key, String.valueOf(videoId))) {
+                        data.setFlowPool(redisTemplate.opsForSet().randomMember(flow_pool_key));
+                        data.setInFlowPool(true);
+                    }
                 }
+            } catch (Exception e) {
+                log.error("markFlowPoolVideo error data={}", JSONUtils.toJson(data));
             }
         }
     }

+ 19 - 16
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/ViewedService.java

@@ -5,19 +5,20 @@ import com.google.common.reflect.TypeToken;
 import com.tzld.piaoquan.recommend.server.util.JSONUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.HttpEntity;
-import org.apache.http.NameValuePair;
-import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
-import org.apache.http.message.BasicNameValuePair;
 import org.apache.http.util.EntityUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
-import java.util.*;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author dyp
@@ -40,6 +41,7 @@ public class ViewedService {
         viewedTypesMap.put(13, Lists.newArrayList(1));
     }
 
+    // TODO 如果过滤失败,那么认为所有视频都被过滤掉
     public List<Long> filterViewedVideo(int appType, String mid, String uid, List<Long> videoIds) {
         List<Integer> viewedTypes = viewedTypesMap.getOrDefault(appType, defaultViewedTypes);
 
@@ -49,24 +51,23 @@ public class ViewedService {
 
             HttpPost post = new HttpPost(videoFilterUrl);
             post.addHeader("Connection", "close");
+            post.addHeader("content-type", "application/json");
 
-            List<NameValuePair> nvps = new ArrayList<NameValuePair>();
-            nvps.add(new BasicNameValuePair("appType", String.valueOf(appType)));
-            nvps.add(new BasicNameValuePair("mid", mid));
-            nvps.add(new BasicNameValuePair("uid", uid));
-            nvps.add(new BasicNameValuePair("types", JSONUtils.toJson(viewedTypes)));
-            nvps.add(new BasicNameValuePair("videoIds", JSONUtils.toJson(videoIds)));
-
-            post.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
+            Map<String, Object> param = new HashMap<>();
+            param.put("appType", appType);
+            param.put("mid", mid);
+            param.put("uid", uid);
+            param.put("types", viewedTypes);
+            param.put("videoIds", videoIds);
+            post.setEntity(new StringEntity(JSONUtils.toJson(param)));
 
+            log.info("request HttpPost={}", JSONUtils.toJson(post));
             chr = clients.execute(post);
             if (chr == null
                     || chr.getStatusLine() == null
                     || chr.getStatusLine().getStatusCode() != 200) {
-                log.info("request videoFilterUrl exception! videoFilterUrl={},statusCode={}", videoFilterUrl,
-                        chr != null && chr.getStatusLine() != null
-                                ? chr.getStatusLine().getStatusCode()
-                                : -1);
+                log.error("filterViewedVideo failed http status exception! videoFilterUrl={}, CloseableHttpResponse={}",
+                        videoFilterUrl, chr);
                 return Collections.emptyList();
             }
             HttpEntity entity = chr.getEntity();
@@ -79,6 +80,8 @@ public class ViewedService {
                     Collections.emptyMap());
             if (data.get("code") == null
                     || !data.get("code").equals("0")) {
+                log.error("filterViewedVideo failed videoFilterUrl return code exception! data={}",
+                        JSONUtils.toJson(data));
                 return Collections.emptyList();
             }
             return JSONUtils.fromJson(data.get("data"),

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

@@ -98,7 +98,6 @@ public abstract class AbstractRegionRecallStrategy implements RecallStrategy {
             }
             Set<ZSetOperations.TypedTuple<String>> data = redisTemplate.opsForZSet().reverseRangeWithScores(poolKey, idx,
                     idx + getSize - 1);
-            log.info("recall freq={},data={}", freq, data);
             if (CollectionUtils.isEmpty(data)) {
                 break;
             }