Browse Source

mv ad feature to feature server

sunmingze 1 year ago
parent
commit
2de5e1959f
27 changed files with 29 additions and 1808 deletions
  1. 3 3
      ad-engine-commons/pom.xml
  2. 0 121
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdActionFeature.java
  3. 0 183
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdItemBytesFeature.java
  4. 0 183
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdItemFeature.java
  5. 0 40
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdRankItem.java
  6. 0 98
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdRequestContext.java
  7. 0 41
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdRequestContextBytesFeature.java
  8. 0 64
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/UserAdBytesFeature.java
  9. 0 64
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/UserAdFeature.java
  10. 0 108
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/UserVideoActionFeature.java
  11. 0 86
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/UserVideoFeature.java
  12. 3 3
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/AbstractScorer.java
  13. 1 1
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/ScoreParam.java
  14. 2 3
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/ScorerPipeline.java
  15. 0 35
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/BytesGroup.java
  16. 0 192
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/BytesUtils.java
  17. 0 230
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/FeatureHash.java
  18. 0 43
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/FeatureUsage.java
  19. 0 76
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/LRBytesFeatureExtractorBase.java
  20. 0 216
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/VlogAdCtrLRFeatureExtractor.java
  21. 3 3
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/model/LRModel.java
  22. 2 2
      ad-engine-service/pom.xml
  23. 3 3
      ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/FeatureRemoteService.java
  24. 5 3
      ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/VlogAdCtrLRScorer.java
  25. 3 3
      ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/convert/FeatureConvert.java
  26. 1 1
      ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/convert/RequestConvert.java
  27. 3 3
      ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/impl/RankServiceImpl.java

+ 3 - 3
ad-engine-commons/pom.xml

@@ -10,7 +10,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>ad-engine-commons</artifactId>
-    <version>1.0.1</version>
+    <version>1.0.2</version>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.compiler.source>1.8</maven.compiler.source>
@@ -25,12 +25,12 @@
         <dependency>
             <groupId>com.tzld.piaoquan</groupId>
             <artifactId>recommend-feature-client</artifactId>
-            <version>1.0.0</version>
+            <version>1.0.2</version>
         </dependency>
         <dependency>
             <groupId>com.tzld.piaoquan</groupId>
             <artifactId>recommend-server-client</artifactId>
-            <version>1.0.1.0.01</version>
+            <version>1.0.1</version>
         </dependency>
 
         <dependency>

+ 0 - 121
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdActionFeature.java

@@ -1,121 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.base;
-
-import lombok.Data;
-
-@Data
-public class AdActionFeature {
-    private double adView=0d;
-    private double adClick=0d;
-    private double adConversion=0d;
-
-    private double ctr=0d;
-    private double cvr=0d;
-
-    private double ceilLog(Double key) {
-        return Math.ceil(Math.log(key + 1));
-    }
-
-    private double bucketRatioFeature(Double key) {
-        long bucket = Math.round(Math.log((key + 1) * 50));
-        if (bucket > 50)
-            bucket = 50;
-        return (double) bucket;
-    }
-
-
-    public void setOriginAdView(Object key) {
-        if (key == null) {
-            this.adView = 0.0;
-        } else {
-            String formateKey = key.toString().replace("\\N", "0");
-            this.adView = Double.valueOf(formateKey);
-        }
-    }
-
-    public void setOriginAdClick(Object key) {
-        if (key == null) {
-            this.adClick = 0.0;
-        } else {
-            String formateKey = key.toString().replace("\\N", "0");
-            this.adClick = Double.valueOf(formateKey);
-        }
-    }
-
-    public void setOriginAdConversion(Object key) {
-        if (key == null) {
-            this.adConversion = 0.0;
-        } else {
-            String formateKey = key.toString().replace("\\N", "0");
-            this.adConversion = Double.valueOf(formateKey);
-        }
-    }
-
-    // redis中保存原始值  server段统一处理
-    public void setOriginCtr(Object key) {
-        if (key == null) {
-            this.ctr = 0.0;
-        } else {
-            String formateKey = key.toString().replace("\\N", "0");
-            this.ctr = Double.valueOf(formateKey);
-        }
-    }
-
-    public void setOriginCvr(Object key) {
-        if (key == null) {
-            this.cvr = 0.0;
-        } else {
-            String formateKey = key.toString().replace("\\N", "0");
-            this.cvr = Double.valueOf(formateKey);
-        }
-    }
-
-
-
-
-    public void setAdView(Object key) {
-        if (key == null) {
-            this.adView = 0.0;
-        } else {
-            String formateKey = key.toString().replace("\\N", "0");
-            this.adView = ceilLog(Double.valueOf(formateKey));
-        }
-    }
-
-    public void setAdClick(Object key) {
-        if (key == null) {
-            this.adClick = 0.0;
-        } else {
-            String formateKey = key.toString().replace("\\N", "0");
-            this.adClick = ceilLog(Double.valueOf(formateKey));
-        }
-    }
-
-    public void setAdConversion(Object key) {
-        if (key == null) {
-            this.adConversion = 0.0;
-        } else {
-            String formateKey = key.toString().replace("\\N", "0");
-            this.adConversion = ceilLog(Double.valueOf(formateKey));
-        }
-    }
-
-    public void setCtr(Object key) {
-        if (key == null) {
-            this.ctr = 0.0;
-        } else {
-            String formateKey = key.toString().replace("\\N", "0");
-            this.ctr = bucketRatioFeature(Double.valueOf(formateKey));
-        }
-    }
-
-    public void setCvr(Object key) {
-        if (key == null) {
-            this.cvr = 0.0;
-        } else {
-            String formateKey = key.toString().replace("\\N", "0");
-            this.cvr = bucketRatioFeature(Double.valueOf(formateKey));
-        }
-    }
-
-
-}

+ 0 - 183
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdItemBytesFeature.java

@@ -1,183 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.base;
-
-import lombok.Data;
-
-import java.util.HashMap;
-import java.util.Map;
-
-@Data
-public class AdItemBytesFeature {
-
-    private final byte[] adId;
-
-    //private final byte[] adCode;
-
-    private final byte[] advertiserId;
-
-    //private final byte[] advertiserCode;
-
-    private final byte[] campaignId;
-
-    //private final byte[] campaignCode;
-
-    private final byte[] creative;
-
-    //private final byte[] creativeCode;
-
-    // adid 维度,也就是planid
-    private Map<String, byte[]> day1_cnt_features;
-    // 3天内统计量
-    private Map<String, byte[]> day3_cnt_features;
-    // 7天内统计量
-    private Map<String, byte[]> day7_cnt_features;
-    // 3个月统计量
-    private Map<String, byte[]> month3_cnt_features;
-
-
-    // creative 维度
-    private Map<String, byte[]> creative_day1_cnt_features;
-    // 3天内统计量
-    private Map<String, byte[]> creative_day3_cnt_features;
-    // 7天内统计量
-    private Map<String, byte[]> creative_day7_cnt_features;
-    // 3个月统计量
-    private Map<String, byte[]> creative_month3_cnt_features;
-
-
-    // advertiserid 维度
-    private Map<String, byte[]> advertiser_day1_cnt_features;
-    // 3天内统计量
-    private Map<String, byte[]> advertiser_day3_cnt_features;
-    // 7天内统计量
-    private Map<String, byte[]> advertiser_day7_cnt_features;
-    // 3个月统计量
-    private Map<String, byte[]> advertiser_month3_cnt_features;
-
-
-
-
-    public AdItemBytesFeature(AdItemFeature feature) {
-
-        adId = feature.getAdId().getBytes();
-        // adCode = feature.getAdCode().getBytes();
-        advertiserId = feature.getAdvertiserId().getBytes();
-        //advertiserCode = feature.getAdvertiserCode().getBytes();
-        campaignId = feature.getCampaignId().getBytes();
-        //campaignCode = feature.getCampaignCode().getBytes();
-        creative = feature.getCreativeId().getBytes();
-        // creativeCode = feature.getCreativeCode().getBytes();
-
-
-        // adid 维度  planid
-        // 1 day statistic
-        day1_cnt_features = new HashMap<String, byte[]>();
-        day1_cnt_features.put("view", String.valueOf(feature.getDay1_cnt_features().getAdView()).getBytes());
-        day1_cnt_features.put("click", String.valueOf(feature.getDay1_cnt_features().getAdClick()).getBytes());
-        day1_cnt_features.put("conversion", String.valueOf(feature.getDay1_cnt_features().getAdConversion()).getBytes());
-        day1_cnt_features.put("ctr", String.valueOf(feature.getDay1_cnt_features().getCtr()).getBytes());
-        day1_cnt_features.put("cvr", String.valueOf(feature.getDay1_cnt_features().getCvr()).getBytes());
-
-        // 3 day statistic
-        day3_cnt_features = new HashMap<String, byte[]>();
-        day3_cnt_features.put("view", String.valueOf(feature.getDay3_cnt_features().getAdView()).getBytes());
-        day3_cnt_features.put("click", String.valueOf(feature.getDay3_cnt_features().getAdClick()).getBytes());
-        day3_cnt_features.put("conversion", String.valueOf(feature.getDay3_cnt_features().getAdConversion()).getBytes());
-        day3_cnt_features.put("ctr", String.valueOf(feature.getDay3_cnt_features().getCtr()).getBytes());
-        day3_cnt_features.put("cvr", String.valueOf(feature.getDay3_cnt_features().getCvr()).getBytes());
-
-        // 7 day statistic
-        day7_cnt_features = new HashMap<String, byte[]>();
-        day7_cnt_features.put("view", String.valueOf(feature.getDay7_cnt_features().getAdView()).getBytes());
-        day7_cnt_features.put("click", String.valueOf(feature.getDay7_cnt_features().getAdClick()).getBytes());
-        day7_cnt_features.put("conversion", String.valueOf(feature.getDay7_cnt_features().getAdConversion()).getBytes());
-        day7_cnt_features.put("ctr", String.valueOf(feature.getDay7_cnt_features().getCtr()).getBytes());
-        day7_cnt_features.put("cvr", String.valueOf(feature.getDay7_cnt_features().getCvr()).getBytes());
-
-        // 3 month statisic
-        month3_cnt_features = new HashMap<String, byte[]>();
-        month3_cnt_features.put("view", String.valueOf(feature.getMonth3_cnt_features().getAdView()).getBytes());
-        month3_cnt_features.put("click", String.valueOf(feature.getMonth3_cnt_features().getAdClick()).getBytes());
-        month3_cnt_features.put("conversion", String.valueOf(feature.getMonth3_cnt_features().getAdConversion()).getBytes());
-        month3_cnt_features.put("ctr", String.valueOf(feature.getMonth3_cnt_features().getCtr()).getBytes());
-        month3_cnt_features.put("cvr", String.valueOf(feature.getMonth3_cnt_features().getCvr()).getBytes());
-
-
-        // creative 维度  creativeid
-        // 1 day statistic
-        creative_day1_cnt_features = new HashMap<String, byte[]>();
-        creative_day1_cnt_features.put("view", String.valueOf(feature.getCreative_1day_cnt_features().getAdView()).getBytes());
-        creative_day1_cnt_features.put("click", String.valueOf(feature.getCreative_1day_cnt_features().getAdClick()).getBytes());
-        creative_day1_cnt_features.put("conversion", String.valueOf(feature.getCreative_1day_cnt_features().getAdConversion()).getBytes());
-        creative_day1_cnt_features.put("ctr", String.valueOf(feature.getCreative_1day_cnt_features().getCtr()).getBytes());
-        creative_day1_cnt_features.put("cvr", String.valueOf(feature.getCreative_1day_cnt_features().getCvr()).getBytes());
-
-        // 3 day statistic
-        creative_day3_cnt_features = new HashMap<String, byte[]>();
-        creative_day3_cnt_features.put("view", String.valueOf(feature.getDay3_cnt_features().getAdView()).getBytes());
-        creative_day3_cnt_features.put("click", String.valueOf(feature.getDay3_cnt_features().getAdClick()).getBytes());
-        creative_day3_cnt_features.put("conversion", String.valueOf(feature.getDay3_cnt_features().getAdConversion()).getBytes());
-        creative_day3_cnt_features.put("ctr", String.valueOf(feature.getDay3_cnt_features().getCtr()).getBytes());
-        creative_day3_cnt_features.put("cvr", String.valueOf(feature.getDay3_cnt_features().getCvr()).getBytes());
-
-        // 7 day statistic
-        creative_day7_cnt_features = new HashMap<String, byte[]>();
-        creative_day7_cnt_features.put("view", String.valueOf(feature.getDay7_cnt_features().getAdView()).getBytes());
-        creative_day7_cnt_features.put("click", String.valueOf(feature.getDay7_cnt_features().getAdClick()).getBytes());
-        creative_day7_cnt_features.put("conversion", String.valueOf(feature.getDay7_cnt_features().getAdConversion()).getBytes());
-        creative_day7_cnt_features.put("ctr", String.valueOf(feature.getDay7_cnt_features().getCtr()).getBytes());
-        creative_day7_cnt_features.put("cvr", String.valueOf(feature.getDay7_cnt_features().getCvr()).getBytes());
-
-
-        // 3 month statisic
-        creative_month3_cnt_features = new HashMap<String, byte[]>();
-        creative_month3_cnt_features.put("view", String.valueOf(feature.getMonth3_cnt_features().getAdView()).getBytes());
-        creative_month3_cnt_features.put("click", String.valueOf(feature.getMonth3_cnt_features().getAdClick()).getBytes());
-        creative_month3_cnt_features.put("conversion", String.valueOf(feature.getMonth3_cnt_features().getAdConversion()).getBytes());
-        creative_month3_cnt_features.put("ctr", String.valueOf(feature.getMonth3_cnt_features().getCtr()).getBytes());
-        creative_month3_cnt_features.put("cvr", String.valueOf(feature.getMonth3_cnt_features().getCvr()).getBytes());
-
-
-
-        // advertiser 维度  planid
-        // 1 day statistic
-        advertiser_day1_cnt_features = new HashMap<String, byte[]>();
-        advertiser_day1_cnt_features.put("view", String.valueOf(feature.getAdvertiser_1day_cnt_features().getAdView()).getBytes());
-        advertiser_day1_cnt_features.put("click", String.valueOf(feature.getAdvertiser_1day_cnt_features().getAdClick()).getBytes());
-        advertiser_day1_cnt_features.put("conversion", String.valueOf(feature.getAdvertiser_1day_cnt_features().getAdConversion()).getBytes());
-        advertiser_day1_cnt_features.put("ctr", String.valueOf(feature.getAdvertiser_1day_cnt_features().getCtr()).getBytes());
-        advertiser_day1_cnt_features.put("cvr", String.valueOf(feature.getAdvertiser_1day_cnt_features().getCvr()).getBytes());
-
-
-        // 3 day statistic
-        advertiser_day3_cnt_features = new HashMap<String, byte[]>();
-        advertiser_day3_cnt_features.put("view", String.valueOf(feature.getAdvertiser_3day_cnt_features().getAdView()).getBytes());
-        advertiser_day3_cnt_features.put("click", String.valueOf(feature.getAdvertiser_3day_cnt_features().getAdClick()).getBytes());
-        advertiser_day3_cnt_features.put("conversion", String.valueOf(feature.getAdvertiser_3day_cnt_features().getAdConversion()).getBytes());
-        advertiser_day3_cnt_features.put("ctr", String.valueOf(feature.getAdvertiser_3day_cnt_features().getCtr()).getBytes());
-        advertiser_day3_cnt_features.put("cvr", String.valueOf(feature.getAdvertiser_3day_cnt_features().getCvr()).getBytes());
-
-
-        // 7 day statistic
-        advertiser_day7_cnt_features = new HashMap<String, byte[]>();
-        advertiser_day7_cnt_features.put("view", String.valueOf(feature.getAdvertiser_7day_cnt_features().getAdView()).getBytes());
-        advertiser_day7_cnt_features.put("click", String.valueOf(feature.getAdvertiser_7day_cnt_features().getAdClick()).getBytes());
-        advertiser_day7_cnt_features.put("conversion", String.valueOf(feature.getAdvertiser_7day_cnt_features().getAdConversion()).getBytes());
-        advertiser_day7_cnt_features.put("ctr", String.valueOf(feature.getAdvertiser_7day_cnt_features().getCtr()).getBytes());
-        advertiser_day7_cnt_features.put("cvr", String.valueOf(feature.getAdvertiser_7day_cnt_features().getCvr()).getBytes());
-
-
-        // 3 month statisic
-        advertiser_month3_cnt_features = new HashMap<String, byte[]>();
-        advertiser_month3_cnt_features.put("view", String.valueOf(feature.getAdvertiser_3month_cnt_features().getAdView()).getBytes());
-        advertiser_month3_cnt_features.put("click", String.valueOf(feature.getAdvertiser_3month_cnt_features().getAdClick()).getBytes());
-        advertiser_month3_cnt_features.put("conversion", String.valueOf(feature.getAdvertiser_3month_cnt_features().getAdConversion()).getBytes());
-        advertiser_month3_cnt_features.put("ctr", String.valueOf(feature.getAdvertiser_3month_cnt_features().getCtr()).getBytes());
-        advertiser_month3_cnt_features.put("cvr", String.valueOf(feature.getAdvertiser_3month_cnt_features().getCvr()).getBytes());
-
-
-
-
-
-    }
-
-}

+ 0 - 183
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdItemFeature.java

@@ -1,183 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.base;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-import javax.validation.constraints.NotNull;
-
-@Getter
-@NoArgsConstructor
-public class AdItemFeature {
-    @Setter
-    @NotNull
-    private String adId = "0";
-
-    @Setter
-    @NotNull
-    private String adCode = "0";
-
-    @Setter
-    @NotNull
-    private String advertiserId = "0";
-    @Setter
-    @NotNull
-    private String advertiserCode = "0";
-
-    @Setter
-    @NotNull
-    private String campaignId = "0";
-
-    @Setter
-    @NotNull
-    private String campaignCode = "0";
-
-    @Setter
-    @NotNull
-    private String creativeId = "0";
-
-    @Setter
-    @NotNull
-    private String creativeCode = "0";
-
-
-    // adid 计划维度统计信息
-    // 当天统计量信息
-    @Setter
-    @NotNull
-    private AdActionFeature day1_cnt_features = new AdActionFeature();
-    // 3天内统计量
-    @Setter
-    @NotNull
-    private AdActionFeature day3_cnt_features = new AdActionFeature();
-    // 7天内统计量
-    @Setter
-    @NotNull
-    private AdActionFeature day7_cnt_features = new AdActionFeature();
-    // 3个月统计量
-    @Setter
-    @NotNull
-    private AdActionFeature month3_cnt_features = new AdActionFeature();
-
-
-    // 创意维度统计信息
-    @Setter
-    @NotNull
-    private AdActionFeature creative_1day_cnt_features = new AdActionFeature();
-    @Setter
-    @NotNull
-    private AdActionFeature creative_3day_cnt_features = new AdActionFeature();
-    @Setter
-    @NotNull
-    private AdActionFeature creative_7day_cnt_features = new AdActionFeature();
-    @Setter
-    @NotNull
-    private AdActionFeature creative_3month_cnt_features = new AdActionFeature();
-
-    // 广告主维度统计信息
-    @Setter
-    @NotNull
-    private AdActionFeature advertiser_1day_cnt_features = new AdActionFeature();
-    @Setter
-    @NotNull
-    private AdActionFeature advertiser_3day_cnt_features = new AdActionFeature();
-    @Setter
-    @NotNull
-    private AdActionFeature advertiser_7day_cnt_features = new AdActionFeature();
-    @Setter
-    @NotNull
-    private AdActionFeature advertiser_3month_cnt_features = new AdActionFeature();
-
-
-    public void setAdId(String key) {
-        if (key == null) {
-            this.adId = "0";
-        } else {
-            this.adId = key;
-        }
-    }
-
-
-    public void setAdvertiserId(String key) {
-        if (key == null) {
-            this.advertiserId = "0";
-        } else {
-            this.advertiserId = key;
-        }
-    }
-
-    public void setCampaignId(String key) {
-        if (key == null) {
-            this.campaignId = "0";
-        } else {
-            this.campaignId = key;
-        }
-    }
-
-
-    public void setCreativeId(String key) {
-        if (key == null) {
-            this.creativeId = "0";
-        } else {
-            this.creativeId = key;
-        }
-    }
-
-
-    //creative
-    public void setCreative_1day_cnt_features(AdActionFeature feature) {
-        this.creative_1day_cnt_features = feature;
-    }
-
-
-    public void setCreative_3day_cnt_features(AdActionFeature feature) {
-        this.creative_3day_cnt_features = feature;
-
-    }
-
-    public void setCreative_7day_cnt_features(AdActionFeature feature) {
-        this.creative_7day_cnt_features = feature;
-
-    }
-
-    public void setCreative_3month_cnt_features(AdActionFeature feature) {
-        this.creative_3month_cnt_features = feature;
-
-    }
-
-
-    // advertiser 维度
-    public void setAdvertiser_1day_cnt_features(AdActionFeature feature) {
-        this.advertiser_1day_cnt_features = feature;
-    }
-
-
-    public void setAdvertiser_3day_cnt_features(AdActionFeature feature) {
-        this.advertiser_3day_cnt_features = feature;
-
-    }
-
-    public void setAdvertiser_7day_cnt_features(AdActionFeature feature) {
-        this.advertiser_7day_cnt_features = feature;
-
-    }
-
-    public void setAdvertiser_3month_cnt_features(AdActionFeature feature) {
-        this.advertiser_3month_cnt_features = feature;
-
-    }
-
-
-    public String getKey() {
-        return this.creativeId;
-    }
-
-    public String getValue() {
-        Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
-        return gson.toJson(this);
-    }
-
-
-}

+ 0 - 40
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdRankItem.java

@@ -1,40 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.base;
-
-import lombok.Data;
-
-import java.util.HashMap;
-import java.util.Map;
-
-
-@Data
-public class AdRankItem implements Comparable<AdRankItem> {
-    public long adId;
-    private double score; // 记录最终的score
-
-    // 记录Item侧用到的特征
-    private AdItemFeature itemFeature;
-
-    public AdRankItem() {
-        //TODO
-    }
-
-    private Map<String, Double> rankerScore = new HashMap<>();
-    private Map<String, Integer> rankerIndex = new HashMap<>();
-
-
-    @Override
-    public int compareTo(AdRankItem o) {
-        if (o == null) {
-            return -1;
-        }
-        if (score > o.score) {
-            return -1;
-        } else if (score < o.score) {
-            return 1;
-        } else {
-            return 0;
-        }
-    }
-
-
-}

+ 0 - 98
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdRequestContext.java

@@ -1,98 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.base;
-
-
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Getter
-@NoArgsConstructor
-public class AdRequestContext {
-
-    // 机型等信息
-    private String apptype="-1";
-    private String machineinfoBrand="-1";
-    private String machineinfoModel="-1";
-    private String machineinfoSdkversion="-1";
-    private String machineinfoWechatversion="-1";
-
-    // 时间等信息
-    private String day="-1";
-    private String week="-1";
-    private String hour="-1";
-    private String region="-1";
-    private String city="-1";
-
-    // position 信息
-    private String ownAdPositionId;
-
-
-
-    public void setApptype(String apptype) {
-        this.apptype = apptype;
-        if (apptype == null)
-            this.apptype = "-1";
-    }
-
-    public void setMachineinfoBrand(String machineinfoBrand) {
-        this.machineinfoBrand = machineinfoBrand;
-        if (machineinfoBrand == null)
-            this.machineinfoBrand = "-1";
-    }
-
-    public void setMachineinfoModel(String machineinfoModel) {
-        this.machineinfoModel = machineinfoModel;
-        if (machineinfoModel == null)
-            this.machineinfoModel = "-1";
-    }
-
-
-    public void setMachineinfoWchatversion(String machineinfo_wechatversion) {
-        this.machineinfoWechatversion = machineinfo_wechatversion;
-        if (machineinfo_wechatversion == null)
-            this.machineinfoWechatversion = "-1";
-    }
-
-
-    public void setMachineinfoSdkversion(String machineinfo_sdkversion) {
-        this.machineinfoSdkversion = machineinfo_sdkversion;
-        if (machineinfoSdkversion == null)
-            this.machineinfoSdkversion = "-1";
-    }
-
-
-
-    public void setHour(String hour) {
-        this.hour = hour;
-        if (hour == null)
-            this.hour = "-1";
-    }
-
-
-    public void setDay(String day) {
-        this.day = day;
-        if (day == null)
-            this.day = "-1";
-    }
-
-    public void setWeek(String week) {
-        this.week = week;
-        if (week == null)
-            this.week = "-1";
-    }
-
-
-    public void setRegion(String region) {
-        this.region = region;
-        if (region == null)
-            this.region = "-1";
-    }
-
-
-    public void setCity(String city) {
-        this.city = city;
-        if (city == null)
-            this.city = "-1";
-    }
-
-
-}

+ 0 - 41
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdRequestContextBytesFeature.java

@@ -1,41 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.base;
-
-
-import lombok.Data;
-
-@Data
-public class AdRequestContextBytesFeature {
-    private final byte[] apptype;
-    private final byte[] machineinfo_brand;
-    private final byte[] machineinfo_model;
-    private final byte[] machineinfo_sdkversion;
-    private final byte[] machineinfo_wechatversion;
-
-    // 时间等信息
-    private final byte[] day;
-    private final byte[] week;
-    private final byte[] hour;
-    private final byte[] region;
-    private final byte[] city;
-
-
-    public AdRequestContextBytesFeature(AdRequestContext requestContext) {
-        apptype = requestContext.getApptype().getBytes();
-        machineinfo_brand = requestContext.getMachineinfoBrand().getBytes();
-        machineinfo_model = requestContext.getMachineinfoModel().getBytes();
-        machineinfo_sdkversion = requestContext.getMachineinfoSdkversion().getBytes();
-        machineinfo_wechatversion = requestContext.getMachineinfoWechatversion().getBytes();
-
-        day = requestContext.getDay().getBytes();
-        week = requestContext.getWeek().getBytes();
-        hour = requestContext.getHour().getBytes();
-        region = requestContext.getRegion().getBytes();
-        city = requestContext.getCity().getBytes();
-
-        // headVideoId = requestContext.getHeadVideoId().getBytes();
-        // pageSource = requestContext.getPageSource().getBytes();
-        // ownAdPositionId = requestContext.getOwnAdPositionId().getBytes();
-    }
-
-
-}

+ 0 - 64
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/UserAdBytesFeature.java

@@ -1,64 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.base;
-
-import lombok.Data;
-
-import java.util.HashMap;
-import java.util.Map;
-
-@Data
-public class UserAdBytesFeature {
-
-    private final byte[] mid;
-
-    // 当天统计量信息
-    private Map<String, byte[]> day1_cnt_features;
-    // 3天内统计量
-    private Map<String, byte[]> day3_cnt_features;
-    // 7天内统计量
-    private Map<String, byte[]> day7_cnt_features;
-    // 3个月统计量
-    private Map<String, byte[]> month3_cnt_features;
-
-
-    public UserAdBytesFeature(UserAdFeature feature) {
-        this.mid = feature.getMid().getBytes();
-
-
-        // 1 day statistic
-        day1_cnt_features = new HashMap<String, byte[]>();
-        day1_cnt_features.put("view", String.valueOf(feature.getDay1_cnt_features().getAdView()).getBytes());
-        day1_cnt_features.put("click", String.valueOf(feature.getDay1_cnt_features().getAdClick()).getBytes());
-        day1_cnt_features.put("conversion", String.valueOf(feature.getDay1_cnt_features().getAdConversion()).getBytes());
-        day1_cnt_features.put("ctr", String.valueOf(feature.getDay1_cnt_features().getCtr()).getBytes());
-        day1_cnt_features.put("cvr", String.valueOf(feature.getDay1_cnt_features().getCvr()).getBytes());
-
-
-
-        // 3 day statistic
-        day3_cnt_features = new HashMap<String, byte[]>();
-        day3_cnt_features.put("view", String.valueOf(feature.getDay3_cnt_features().getAdView()).getBytes());
-        day3_cnt_features.put("click", String.valueOf(feature.getDay3_cnt_features().getAdClick()).getBytes());
-        day3_cnt_features.put("conversion", String.valueOf(feature.getDay3_cnt_features().getAdConversion()).getBytes());
-        day3_cnt_features.put("ctr", String.valueOf(feature.getDay3_cnt_features().getCtr()).getBytes());
-        day3_cnt_features.put("cvr", String.valueOf(feature.getDay3_cnt_features().getCvr()).getBytes());
-
-
-        // 7 day statistic
-        day7_cnt_features = new HashMap<String, byte[]>();
-        day7_cnt_features.put("view", String.valueOf(feature.getDay7_cnt_features().getAdView()).getBytes());
-        day7_cnt_features.put("click", String.valueOf(feature.getDay7_cnt_features().getAdClick()).getBytes());
-        day7_cnt_features.put("conversion", String.valueOf(feature.getDay7_cnt_features().getAdConversion()).getBytes());
-        day7_cnt_features.put("ctr", String.valueOf(feature.getDay7_cnt_features().getCtr()).getBytes());
-        day7_cnt_features.put("cvr", String.valueOf(feature.getDay7_cnt_features().getCvr()).getBytes());
-
-
-        // 3 month statisic
-        month3_cnt_features = new HashMap<String, byte[]>();
-        month3_cnt_features.put("view", String.valueOf(feature.getMonth3_cnt_features().getAdView()).getBytes());
-        month3_cnt_features.put("click", String.valueOf(feature.getMonth3_cnt_features().getAdClick()).getBytes());
-        month3_cnt_features.put("conversion", String.valueOf(feature.getMonth3_cnt_features().getAdConversion()).getBytes());
-        month3_cnt_features.put("ctr", String.valueOf(feature.getMonth3_cnt_features().getCtr()).getBytes());
-        month3_cnt_features.put("cvr", String.valueOf(feature.getMonth3_cnt_features().getCvr()).getBytes());
-
-    }
-}

+ 0 - 64
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/UserAdFeature.java

@@ -1,64 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.base;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-import javax.validation.constraints.NotNull;
-
-@Getter
-@NoArgsConstructor
-@Setter
-@NotNull
-public class UserAdFeature {
-
-    private String mid = "0";
-
-
-    // 当天统计量信息
-    private AdActionFeature day1_cnt_features=new AdActionFeature();
-    // 3天内统计量
-    private AdActionFeature day3_cnt_features=new AdActionFeature();
-    // 7天内统计量
-    private AdActionFeature day7_cnt_features=new AdActionFeature();
-    // 3个月统计量
-    private AdActionFeature month3_cnt_features=new AdActionFeature();
-
-
-    public void setDay1_cnt_features(AdActionFeature key) {
-        this.day1_cnt_features = key;
-        if (key == null)
-            this.day1_cnt_features = new AdActionFeature();
-    }
-
-    public void setDay3_cnt_features(AdActionFeature key) {
-        this.day3_cnt_features = key;
-        if (key == null)
-            this.day3_cnt_features = new AdActionFeature();
-    }
-
-    public void setDay7_cnt_features(AdActionFeature key) {
-        this.day7_cnt_features = key;
-        if (key == null)
-            this.day7_cnt_features = new AdActionFeature();
-    }
-
-    public void setMonth3_cnt_features(AdActionFeature key) {
-        this.month3_cnt_features = key;
-        if (key == null)
-            this.month3_cnt_features = new AdActionFeature();
-    }
-
-
-    public String getKey() {
-        return this.mid;
-    }
-
-    public String getValue() {
-        Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
-        return gson.toJson(this);
-    }
-
-}

+ 0 - 108
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/UserVideoActionFeature.java

@@ -1,108 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.base;
-
-import lombok.Data;
-
-@Data
-public class UserVideoActionFeature {
-    private double exp_cnt;
-    private double click_cnt;
-    private double share_cnt;
-    private double return_cnt;
-
-    private double ctr;
-    private double str;
-    private double rov;
-    private double ros;
-
-    private double ceilLog(Double key) {
-        return Math.ceil(Math.log(key));
-    }
-
-    private double bucketRatioFeature(Double key) {
-        long bucket = Math.round(Math.log(key * 100));
-        if( bucket > 100)
-            bucket = 100;
-        return (double) bucket;
-    }
-
-
-    public void setExp_cnt(Object key){
-        if(key == null ) {
-            this.exp_cnt = 0.0;
-        } else {
-            String formateKey = key.toString().replace("\\N", "-1");
-            this.exp_cnt = ceilLog(Double.valueOf(formateKey));
-        }
-    }
-
-    public void setClick_cnt(Object key){
-        if(key == null ){
-            this.click_cnt = 0.0 ;
-        } else {
-            String formateKey = key.toString().replace("\\N", "-1");
-            this.click_cnt = ceilLog(Double.valueOf(formateKey));
-        }
-    }
-    public void setShare_cnt(Object key){
-        if(key == null ){
-            this.share_cnt = 0.0 ;
-        } else {
-            String formateKey = key.toString().replace("\\N", "-1");
-            this.share_cnt = ceilLog(Double.valueOf(formateKey));
-        }
-    }
-    public void setReturn_cnt(Object key){
-        if(key == null ){
-            this.return_cnt = 0.0 ;
-        } else {
-            String formateKey = key.toString().replace("\\N", "-1");
-            this.return_cnt = ceilLog(Double.valueOf(formateKey));
-        }
-    }
-
-    public void setCtr(Object key){
-        if(key == null ){
-            this.ctr = 0.0 ;
-        } else {
-            String formateKey = key.toString().replace("\\N", "-1");
-            this.ctr = bucketRatioFeature(Double.valueOf(formateKey));
-        }
-    }
-
-    public void setStr(Object key){
-        if(key == null ){
-            this.str = 0.0 ;
-        } else {
-            String formateKey = key.toString().replace("\\N", "-1");
-            this.str = bucketRatioFeature(Double.valueOf(formateKey));
-        }
-    }
-
-    public void setRov(Object key){
-        if(key == null ){
-            this.rov = 0.0 ;
-        } else {
-            String formateKey = key.toString().replace("\\N", "-1");
-            this.rov = bucketRatioFeature(Double.valueOf(formateKey));
-        }
-    }
-
-    public void setRos(Object key){
-        if(key == null ){
-            this.ros = 0.0 ;
-        } else {
-            String formateKey = key.toString().replace("\\N", "-1");
-            this.ros = bucketRatioFeature(Double.valueOf(formateKey));
-        }
-    }
-
-
-
-
-
-
-
-
-
-
-}

+ 0 - 86
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/UserVideoFeature.java

@@ -1,86 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.base;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Getter
-@NoArgsConstructor
-public class UserVideoFeature {
-
-    private String uid;
-    // 当天统计量信息
-    private AdActionFeature day1_cnt_features;
-    // 3天内统计量
-    private AdActionFeature day3_cnt_features;
-    // 7天内统计量
-    private AdActionFeature day7_cnt_features;
-    // 3个月统计量
-    private AdActionFeature month3_cnt_features;
-    // 用户行为周期
-    private String user_cycle_bucket_7days;
-    private String user_cycle_bucket_30days;
-    private String user_share_bucket_30days;
-
-    public void setUid(String key){
-        this.uid = key;
-        if(key == null)
-            this.uid = "0";
-    }
-
-
-    public void setDay1_cnt_features(AdActionFeature key){
-        this.day1_cnt_features = key;
-        if(key == null)
-            this.day1_cnt_features = new AdActionFeature();
-    }
-
-    public void setDay3_cnt_features(AdActionFeature key){
-        this.day3_cnt_features = key;
-        if(key == null)
-            this.day3_cnt_features = new AdActionFeature();
-    }
-
-    public void setDay7_cnt_features(AdActionFeature key){
-        this.day7_cnt_features = key;
-        if(key == null)
-            this.day7_cnt_features = new AdActionFeature();
-    }
-
-    public void setMonth3_cnt_features(AdActionFeature key) {
-        this.month3_cnt_features = key;
-        if(key == null)
-            this.month3_cnt_features = new AdActionFeature();
-    }
-
-
-    public void setUser_cycle_bucket_7days(String key){
-        this.user_cycle_bucket_7days = key;
-        if(key == null)
-            this.user_cycle_bucket_7days = "0";
-    }
-
-    public void setUser_cycle_bucket_30days(String key){
-        this.user_cycle_bucket_30days = key;
-        if(key == null)
-            this.user_cycle_bucket_30days = "0";
-    }
-
-    public void setUser_share_bucket_30days(String key){
-        this.user_share_bucket_30days = key;
-        if(key == null)
-            this.user_share_bucket_30days = "0";
-    }
-
-
-    public String getKey() {
-        return this.uid;
-    }
-
-    public String getValue(){
-        Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
-        return gson.toJson(this);
-    }
-
-}

+ 3 - 3
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/AbstractScorer.java

@@ -1,11 +1,11 @@
 package com.tzld.piaoquan.ad.engine.commons.score;
 
 
-import com.tzld.piaoquan.ad.engine.commons.base.UserVideoFeature;
 import com.tzld.piaoquan.ad.engine.commons.score.model.Model;
 import com.tzld.piaoquan.ad.engine.commons.score.model.ModelManager;
-import com.tzld.piaoquan.ad.engine.commons.base.AdRankItem;
-import com.tzld.piaoquan.ad.engine.commons.base.UserAdFeature;
+
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.UserAdFeature;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

+ 1 - 1
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/ScoreParam.java

@@ -1,6 +1,6 @@
 package com.tzld.piaoquan.ad.engine.commons.score;
 
-import com.tzld.piaoquan.ad.engine.commons.base.AdRequestContext;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRequestContext;
 import lombok.Data;
 
 /**

+ 2 - 3
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/ScorerPipeline.java

@@ -1,8 +1,7 @@
 package com.tzld.piaoquan.ad.engine.commons.score;
 
-import com.tzld.piaoquan.ad.engine.commons.base.AdRankItem;
-import com.tzld.piaoquan.ad.engine.commons.base.UserAdFeature;
-import com.tzld.piaoquan.ad.engine.commons.base.UserVideoFeature;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.UserAdFeature;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang.exception.ExceptionUtils;

+ 0 - 35
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/BytesGroup.java

@@ -1,35 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.score.feature;
-
-
-public class BytesGroup {
-    private int id;
-    private String name;
-    private byte[] nameBytes;
-    private byte[] buffer;
-
-    public BytesGroup(int id, String name, byte[] nameBytes) {
-        this.id = id;
-        this.name = name;
-        this.nameBytes = nameBytes;
-    }
-
-    public int getId() {
-        return id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public byte[] getNameBytes() {
-        return nameBytes;
-    }
-
-    public byte[] getBuffer() {
-        return buffer;
-    }
-
-    public void setBuffer(byte[] buffer) {
-        this.buffer = buffer;
-    }
-}

+ 0 - 192
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/BytesUtils.java

@@ -1,192 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.score.feature;
-
-
-import com.tzld.piaoquan.recommend.server.gen.recommend.BaseFeature;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Extract features from user, item & context info. Returns 64-bit murmurhash of feature string as results.
- */
-public class BytesUtils {
-    private static final byte[] SEPARATOR = "_".getBytes();
-    private static final byte[] FEATURE_SEPARATOR = "#".getBytes();
-    private static final int MAX_FEATURE_BYTES_LENGTH = 512;
-    private static final long SEED = 11L;
-    private BytesGroup[] groups;
-
-    /**
-     * 一个种特殊的List,在尝试写入null的时候回默默地扔掉.
-     * @param <E> List的元素类型.
-     */
-    public static class NullRejectingArrayList<E> extends ArrayList<E> {
-        public NullRejectingArrayList(int capacity) {
-            super(capacity);
-        }
-
-        public NullRejectingArrayList() {
-            super();
-        }
-
-        @Override
-        public boolean add(E e) {
-            return e != null && super.add(e);
-        }
-    }
-
-    public BytesUtils(BytesGroup[] groups) {
-        this.groups = groups;
-        for (BytesGroup g : groups) {
-            byte[] buffer = prepareBuffer(g.getName(), g.getNameBytes());
-            groups[g.getId()].setBuffer(buffer);
-        }
-    }
-
-    public byte[] prepareBuffer(String name, byte[] nameBytes) {
-
-        byte[] buffer = new byte[MAX_FEATURE_BYTES_LENGTH];
-        System.arraycopy(nameBytes, 0, buffer, 0, nameBytes.length);
-        System.arraycopy(FEATURE_SEPARATOR, 0, buffer, nameBytes.length, 1);
-        return buffer;
-    }
-
-    public BaseFeature baseFea(byte[] buffer, int length) {
-        long hash = FeatureHash.MurmurHash64(buffer, 0, length, SEED);
-
-        // debug中查看 String fea = new String(buffer, 0, length);
-        // 初始化protobuf并赋值
-        BaseFeature.Builder tmp = BaseFeature.newBuilder();
-        tmp.setIdentifier(hash);
-        return tmp.build();
-    }
-
-    public BaseFeature makeFea(int id, byte[] value) {
-        byte[] buffer = groups[id].getBuffer();
-        if (buffer == null || value == null) {
-            return null;
-        }
-
-        final int nameLength = groups[id].getNameBytes().length + 1;
-        final int length = nameLength + value.length;
-        System.arraycopy(value, 0, buffer, nameLength, value.length);
-        return baseFea(buffer, length);
-    }
-
-    public BaseFeature makeFea(int id, final byte[] p1, final byte[] p2) {
-        byte[] buffer = groups[id].getBuffer();
-        if (buffer == null || p1 == null || p2 == null) {
-            return null;
-        }
-
-        final int nameLength = groups[id].getNameBytes().length + 1;
-        final int length = nameLength + p1.length + 1 + p2.length;
-
-        System.arraycopy(p1, 0, buffer, nameLength, p1.length);
-        System.arraycopy(SEPARATOR, 0, buffer, nameLength + p1.length, 1);
-        System.arraycopy(p2, 0, buffer, nameLength + p1.length + 1, p2.length);
-        return baseFea(buffer, length);
-    }
-
-    public BaseFeature makeFea(int id, final byte[] p1, final byte[] p2, final byte[] p3) {
-        byte[] buffer = groups[id].getBuffer();
-        if (buffer == null || p1 == null || p2 == null || p3 == null) {
-            return null;
-        }
-
-        final int nameLength = groups[id].getNameBytes().length + 1;
-        final int length = nameLength + p1.length + 1 + p2.length + 1 + p3.length;
-        System.arraycopy(p1, 0, buffer, nameLength, p1.length);
-        System.arraycopy(SEPARATOR, 0, buffer, nameLength + p1.length, 1);
-        System.arraycopy(p2, 0, buffer, nameLength + p1.length + 1, p2.length);
-        System.arraycopy(SEPARATOR, 0, buffer, nameLength + p1.length + 1 + p2.length, 1);
-        System.arraycopy(p3, 0, buffer, nameLength + p1.length + 1 + p2.length + 1, p3.length);
-
-        return baseFea(buffer, length);
-    }
-
-    public BaseFeature makeFea(int id, final byte[] p1, final byte[] p2, final byte[] p3, final byte[] p4) {
-        byte[] buffer = groups[id].getBuffer();
-        if (buffer == null || p1 == null || p2 == null || p3 == null || p4 == null) {
-            return null;
-        }
-
-        final int nameLength = groups[id].getNameBytes().length + 1;
-        final int length = nameLength + p1.length + 1 + p2.length + 1 + p3.length + 1 + p4.length;
-        System.arraycopy(p1, 0, buffer, nameLength, p1.length);
-        System.arraycopy(SEPARATOR, 0, buffer, nameLength + p1.length, 1);
-        System.arraycopy(p2, 0, buffer, nameLength + p1.length + 1, p2.length);
-        System.arraycopy(SEPARATOR, 0, buffer, nameLength + p1.length + 1 + p2.length, 1);
-        System.arraycopy(p3, 0, buffer, nameLength + p1.length + 1 + p2.length + 1, p3.length);
-        System.arraycopy(SEPARATOR, 0, buffer, nameLength + p1.length + 1 + p2.length + 1 + p3.length, 1);
-        System.arraycopy(p4, 0, buffer, nameLength + p1.length + 1 + p2.length + 1 + p3.length + 1, p4.length);
-
-        return baseFea(buffer, length);
-    }
-
-    public List<BaseFeature> makeFea(int id, byte[][] list) {
-        List<BaseFeature> result = new NullRejectingArrayList<BaseFeature>(list.length);
-        for (byte[] t: list) {
-            result.add(makeFea(id, t));
-        }
-        return result;
-    }
-
-    public List<BaseFeature> makeFea(int id, byte[][] left, byte[] right) {
-        List<BaseFeature> result = new NullRejectingArrayList<BaseFeature>(left.length);
-        for (byte[] l: left) {
-            result.add(makeFea(id, l, right));
-        }
-        return result;
-    }
-
-    public List<BaseFeature> makeFea(int id, byte[][] left, byte[] right1, byte[] right2) {
-        List<BaseFeature> result = new NullRejectingArrayList<BaseFeature>(left.length);
-        for (byte[] l: left) {
-            result.add(makeFea(id, l, right1, right2));
-        }
-        return result;
-    }
-
-    public List<BaseFeature> makeFea(int id, byte[][] left, byte[] right1, byte[] right2, byte[] right3) {
-        List<BaseFeature> result = new NullRejectingArrayList<BaseFeature>(left.length);
-        for (byte[] l: left) {
-            result.add(makeFea(id, l, right1, right2, right3));
-        }
-        return result;
-    }
-
-    public List<BaseFeature> makeFea(int id, byte[] left, byte[][] right) {
-        List<BaseFeature> result = new NullRejectingArrayList<BaseFeature>(right.length);
-        for (byte[] r : right) {
-            result.add(makeFea(id, left, r));
-        }
-        return result;
-    }
-
-    public List<BaseFeature> makeFea(int id, byte[] left1, byte[] left2, byte[][] right) {
-        List<BaseFeature> result = new NullRejectingArrayList<BaseFeature>(right.length);
-        for (byte[] r : right) {
-            result.add(makeFea(id, left1, left2, r));
-        }
-        return result;
-    }
-
-    public List<BaseFeature> makeFea(int id, byte[] left1, byte[] left2, byte[] left3, byte[][] right) {
-        List<BaseFeature> result = new NullRejectingArrayList<BaseFeature>(right.length);
-        for (byte[] r : right) {
-            result.add(makeFea(id, left1, left2, left3, r));
-        }
-        return result;
-    }
-
-    public List<BaseFeature> makeFea(int id, byte[][] left, byte[][] right) {
-        List<BaseFeature> result = new NullRejectingArrayList<BaseFeature>(left.length * right.length);
-        for (byte[] l: left) {
-            for (byte[] r: right) {
-                result.add(makeFea(id, l, r));
-            }
-        }
-        return result;
-    }
-}

+ 0 - 230
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/FeatureHash.java

@@ -1,230 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.score.feature;
-
-
-import java.math.BigInteger;
-import java.nio.ByteBuffer;
-import java.nio.charset.Charset;
-
-public class FeatureHash {
-    public static Charset CharSetUTF8 = Charset.forName("UTF-8");
-
-    public static long getUInt32(byte a, byte b, byte c, byte d) {
-        return (d << 24 | (c & 0xFF) << 16 | (b & 0xFF) << 8 | (a & 0xFF));
-    }
-
-    public static long hash64(byte[] data) {
-        return MurmurHash64A(ByteBuffer.wrap(data), 0, data.length, 11L);
-    }
-
-    public static long MurmurHash64A(ByteBuffer buffer, int from, int len, long seed) {
-        final long m = 0xc6a4a7935bd1e995L;
-        final int r = 47;
-
-        long h = (seed) ^ (len * m);
-        int longLength = len / 8;
-
-        for (int i = 0; i < longLength; ++i) {
-            final int bytePos = from + i * 8;
-            long k = buffer.getLong(bytePos);
-
-            k *= m;
-            k ^= k >> r;
-            k *= m;
-            h ^= k;
-            h *= m;
-        }
-
-        final int remainingPos = len & ~7;
-        switch (len % 8) {
-            case 7: h ^= (long)(buffer.get(remainingPos + 6) & 0xFF) << 48;
-            case 6: h ^= (long)(buffer.get(remainingPos + 5) & 0xFF) << 40;
-            case 5: h ^= (long)(buffer.get(remainingPos + 4) & 0xFF) << 32;
-            case 4: h ^= (long)(buffer.get(remainingPos + 3) & 0xFF) << 24;
-            case 3: h ^= (long)(buffer.get(remainingPos + 2) & 0xFF) << 16;
-            case 2: h ^= (long)(buffer.get(remainingPos + 1) & 0xFF) << 8;
-            case 1:
-                h ^= (long)(buffer.get(remainingPos) & 0xFF);
-                h *= m;
-        }
-
-        h ^= h >>> r;
-        h *= m;
-        h ^= h >>> r;
-        return h;
-    }
-
-    public static long MurmurHash32(byte data[], int len, long seed) {
-        long m = 0x5bd1e995L;
-        int r = 24;
-
-        long h = seed ^ len;
-
-        int offset = 0;
-        while (len >= 4) {
-            long k = getUInt32(data[offset], data[offset + 1], data[offset + 2], data[offset + 3]);
-
-            k *= m;
-            k &= 0xFFFFFFFFL;
-            k ^= k >> r;
-            k *= m;
-            k &= 0xFFFFFFFFL;
-
-            h *= m;
-            h &= 0xFFFFFFFFL;
-            h ^= k;
-
-            offset += 4;
-            len -= 4;
-        }
-
-        // Handle the last few bytes of the input array
-        switch (len) {
-            case 3: h ^= data[offset + 2] << 16;
-            case 2: h ^= data[offset + 1] << 8;
-            case 1: h ^= data[offset];
-                h *= m;
-                h &= 0xFFFFFFFFL;
-        } ;
-
-        // Do a few final mixes of the hash to ensure the last few
-        // bytes are well-incorporated.
-
-        h ^= h >> 13;
-        h *= m;
-        h &= 0xFFFFFFFFL;
-        h ^= h >> 15;
-
-        return h;
-    }
-
-    // 64-bit hash for 32-bit platforms
-    public static long MurmurHash64(byte[] buffer, int start, int len, long seed) {
-        final long m = 0x5bd1e995L;
-        final int r = 24;
-        final int original = len;
-
-        long h1 = (seed) ^ len;
-        long h2 = (seed >> 32);
-
-        int offset = start;
-        while (len >= 8) {
-            long k1 = getUInt32(buffer[offset], buffer[offset + 1], buffer[offset + 2], buffer[offset + 3]);
-            // long k1 = buffer.getInt(offset);
-
-            k1 *= m; k1 &= 0xFFFFFFFFL; k1 ^= k1 >> r; k1 *= m; k1 &= 0xFFFFFFFFL;
-            h1 *= m; h1 &= 0xFFFFFFFFL; h1 ^= k1;
-            offset += 4;
-
-            long k2 = getUInt32(buffer[offset], buffer[offset + 1], buffer[offset + 2], buffer[offset + 3]);
-            // long k2 = buffer.getInt(offset);
-            k2 *= m; k2 &= 0xFFFFFFFFL; k2 ^= k2 >> r; k2 *= m; k2 &= 0xFFFFFFFFL;
-            h2 *= m; h2 &= 0xFFFFFFFFL; h2 ^= k2;
-
-            offset += 4;
-            len -= 8;
-        }
-
-        if (len >= 4) {
-            long k1 = getUInt32(buffer[offset], buffer[offset + 1], buffer[offset + 2], buffer[offset + 3]);
-            // long k1 = buffer.getInt(offset);
-            k1 *= m; k1 &= 0xFFFFFFFFL; k1 ^= k1 >> r; k1 *= m; k1 &= 0xFFFFFFFFL;
-            h1 *= m; h1 &= 0xFFFFFFFFL; h1 ^= k1;
-            offset += 4;
-            len -= 4;
-        }
-
-        switch (len) {
-            case 3: h2 ^= (buffer[offset + 2] & 0xFF) << 16;
-            case 2: h2 ^= (buffer[offset + 1] & 0xFF) << 8;
-            case 1: h2 ^= (buffer[offset] & 0xFF);
-                h2 *= m;
-                h2 &= 0xFFFFFFFFL;
-        } ;
-
-        h1 ^= h2 >> 18;
-        h1 *= m; h1 &= 0xFFFFFFFFL;
-        h2 ^= h1 >> 22;
-        h2 *= m; h2 &= 0xFFFFFFFFL;
-        h1 ^= h2 >> 17;
-        h1 *= m; h1 &= 0xFFFFFFFFL;
-        h2 ^= h1 >> 19;
-        h2 *= m; h2 &= 0xFFFFFFFFL;
-
-        /*BigInteger ans = BigInteger.valueOf(h1).shiftLeft(32).or(BigInteger.valueOf(h2));
-        return ans.longValue();*/
-        //System.err.println("feature: " + new String(buffer, 0, original) + " length: " + original + " hash: " + (h1 << 32 | h2) + " daze");
-        return h1 << 32 | h2;
-    }
-
-    // 64-bit hash for 32-bit platforms
-    public static BigInteger MurmurHash64(byte data[], int len, long seed) {
-        long m = 0x5bd1e995L;
-        int r = 24;
-
-        long h1 = (seed) ^ len;
-        long h2 = (seed >> 32);
-
-        int offset = 0;
-        while (len >= 8) {
-            long k1 = getUInt32(data[offset], data[offset + 1], data[offset + 2], data[offset + 3]);
-            k1 *= m; k1 &= 0xFFFFFFFFL; k1 ^= k1 >> r; k1 *= m; k1 &= 0xFFFFFFFFL;
-            h1 *= m; h1 &= 0xFFFFFFFFL; h1 ^= k1;
-
-            long k2 = getUInt32(data[offset + 4], data[offset + 5], data[offset + 6], data[offset + 7]);
-            k2 *= m; k2 &= 0xFFFFFFFFL; k2 ^= k2 >> r; k2 *= m; k2 &= 0xFFFFFFFFL;
-            h2 *= m; h2 &= 0xFFFFFFFFL; h2 ^= k2;
-
-            offset += 8;
-            len -= 8;
-        }
-
-        if (len >= 4) {
-            long k1 = getUInt32(data[offset], data[offset + 1], data[offset + 2], data[offset + 3]);
-            k1 *= m; k1 &= 0xFFFFFFFFL; k1 ^= k1 >> r; k1 *= m; k1 &= 0xFFFFFFFFL;
-            h1 *= m; h1 &= 0xFFFFFFFFL; h1 ^= k1;
-            offset += 4;
-            len -= 4;
-        }
-
-        switch (len) {
-            case 3: h2 ^= (data[offset + 2] & 0xFF) << 16;
-            case 2: h2 ^= (data[offset + 1] & 0xFF) << 8;
-            case 1: h2 ^= (data[offset] & 0xFF);
-                h2 *= m;
-                h2 &= 0xFFFFFFFFL;
-        } ;
-
-        h1 ^= h2 >> 18;
-        h1 *= m; h1 &= 0xFFFFFFFFL;
-        h2 ^= h1 >> 22;
-        h2 *= m; h2 &= 0xFFFFFFFFL;
-        h1 ^= h2 >> 17;
-        h1 *= m; h1 &= 0xFFFFFFFFL;
-        h2 ^= h1 >> 19;
-        h2 *= m; h2 &= 0xFFFFFFFFL;
-
-        BigInteger ans = BigInteger.valueOf(h1).shiftLeft(32).or(BigInteger.valueOf(h2));
-        return ans;
-    }
-
-    public static String hash(String input) {
-        byte[] tt = input.getBytes(CharSetUTF8);
-        return MurmurHash64(tt, tt.length, 11L).toString();
-    }
-
-    public static Long hashToLong(String input) {
-        byte[] tt = input.getBytes(CharSetUTF8);
-        return MurmurHash64(tt, tt.length, 11L).longValue();
-    }
-
-    /** the constant 2^64 */
-    private static final BigInteger TWO_64 = BigInteger.ONE.shiftLeft(64);
-
-    public static String asUnsignedLongString(long l) {
-        BigInteger b = BigInteger.valueOf(l);
-        if (b.signum() < 0) {
-            b = b.add(TWO_64);
-        }
-        return b.toString();
-    }
-}

+ 0 - 43
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/FeatureUsage.java

@@ -1,43 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.score.feature;
-
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
-import com.typesafe.config.ConfigObject;
-import com.typesafe.config.ConfigValue;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.Serializable;
-import java.util.HashSet;
-import java.util.Set;
-
-public class FeatureUsage implements Serializable {
-    private final Logger LOGGER = LoggerFactory.getLogger(FeatureUsage.class);
-    private Set<String> hash;
-
-    public FeatureUsage() {
-        hash = new HashSet<String>();
-    }
-
-    public FeatureUsage(String confName) {
-        // note that these fields are NOT lazy, because if we're going to get any exceptions, we want to get them on startup.
-        Config config = ConfigFactory.load(confName);
-        config.checkValid(config, "features");
-        ConfigObject conf = config.getConfig("features").root();
-        LOGGER.info("create_feature_usage: " + confName);
-        hash = new HashSet<String>();
-        for (ConfigObject.Entry<String, ConfigValue> it : conf.entrySet()) {
-            String key = it.getKey();
-            Config cf = ((ConfigObject) it.getValue()).toConfig();
-            LOGGER.info("key: " + key + ", value: " + cf.toString());
-            boolean disable = cf.getBoolean("disable");
-            if (disable) {
-                hash.add(key);
-            }
-        }
-    }
-
-    public boolean disable(String fea) {
-        return hash.contains(fea);
-    }
-}

+ 0 - 76
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/LRBytesFeatureExtractorBase.java

@@ -1,76 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.score.feature;
-
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.ListMultimap;
-import com.tzld.piaoquan.ad.engine.commons.base.AdItemBytesFeature;
-import com.tzld.piaoquan.ad.engine.commons.base.AdRequestContextBytesFeature;
-import com.tzld.piaoquan.ad.engine.commons.base.UserAdBytesFeature;
-import com.tzld.piaoquan.ad.engine.commons.enums.VlogAdFeatureGroup;
-import com.tzld.piaoquan.recommend.server.gen.recommend.BaseFeature;
-import com.tzld.piaoquan.recommend.server.gen.recommend.FeatureGroup;
-import com.tzld.piaoquan.recommend.server.gen.recommend.LRSamples;
-
-import java.util.List;
-
-
-public abstract class LRBytesFeatureExtractorBase {
-    private static final double DEFAULT_USER_CTR_GROUP = 10.0;
-    private static final double DEFAULT_ARTICLE_CTR_GROUP = 100.0;
-
-
-    private BytesUtils utils;
-    //Feature Group & Features
-    ListMultimap<FeatureGroup, BaseFeature> features = ArrayListMultimap.create();
-    int groupCount;
-
-
-    LRBytesFeatureExtractorBase() {
-        groupCount = VlogAdFeatureGroup.values().length;
-        BytesGroup[] groups = new BytesGroup[groupCount];
-        for (VlogAdFeatureGroup g: VlogAdFeatureGroup.values()) {
-            groups[g.ordinal()] = new BytesGroup(g.ordinal(),
-                    g.getGroupName(), g.getGroupNameBytes());
-        }
-        utils = new BytesUtils(groups);
-    }
-
-    private FeatureGroup makeGroup(VlogAdFeatureGroup group){
-        FeatureGroup.Builder g = FeatureGroup.newBuilder();
-        g.setType("1");
-        g.setName(group.getGroupName());
-        g.setId(group.ordinal());
-        return g.build();
-    };
-
-
-    void makeFea(VlogAdFeatureGroup group, byte[] value) {
-        FeatureGroup featureGroup = makeGroup(group);
-        BaseFeature feature = utils.makeFea(group.ordinal(), value);
-        features.put(featureGroup, feature);
-    }
-
-    void makeFea(VlogAdFeatureGroup group, byte[][] list) {
-        FeatureGroup g = makeGroup(group);
-        List<BaseFeature> featureList = utils.makeFea(group.ordinal(), list);
-        features.putAll(g, featureList);
-    }
-
-    // 增加交叉特征的方法
-    void makeFea(VlogAdFeatureGroup group, final byte[] left, final byte[] right) {
-        FeatureGroup g = makeGroup(group);
-        BaseFeature feature = utils.makeFea(group.ordinal(), left, right);
-        features.put(g, feature);
-    }
-
-
-
-    public ListMultimap<FeatureGroup, BaseFeature> getFeatures() {
-        return features;
-    }
-
-    public abstract LRSamples single(UserAdBytesFeature userBytesFeature,
-                                     AdItemBytesFeature videoBytesFeature,
-                                     AdRequestContextBytesFeature requestContextBytesFeature);
-
-
-}

+ 0 - 216
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/VlogAdCtrLRFeatureExtractor.java

@@ -1,216 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.score.feature;
-
-import com.tzld.piaoquan.ad.engine.commons.base.AdItemBytesFeature;
-import com.tzld.piaoquan.ad.engine.commons.base.AdRequestContextBytesFeature;
-import com.tzld.piaoquan.ad.engine.commons.base.UserAdBytesFeature;
-import com.tzld.piaoquan.ad.engine.commons.enums.VlogAdFeatureGroup;
-import com.tzld.piaoquan.recommend.server.gen.recommend.FeatureGroup;
-import com.tzld.piaoquan.recommend.server.gen.recommend.GroupedFeature;
-import com.tzld.piaoquan.recommend.server.gen.recommend.LRSamples;
-import com.tzld.piaoquan.recommend.server.gen.recommend.BaseFeature;
-
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class VlogAdCtrLRFeatureExtractor extends LRBytesFeatureExtractorBase {
-
-    public VlogAdCtrLRFeatureExtractor() {
-        super();
-    }
-
-    // TODO
-    // 补充待抽取的context feature
-    public void getContextFeatures(AdRequestContextBytesFeature requestContextBytes) {
-
-        makeFea(VlogAdFeatureGroup.MACHINEINFO_BRAND, requestContextBytes.getMachineinfo_brand());
-        makeFea(VlogAdFeatureGroup.MACHINEINFO_MODEL, requestContextBytes.getMachineinfo_model());
-        makeFea(VlogAdFeatureGroup.MACHINEINFO_SDKVERSION, requestContextBytes.getMachineinfo_sdkversion());
-        makeFea(VlogAdFeatureGroup.MACHINEINFO_WECHATVERSION, requestContextBytes.getMachineinfo_wechatversion());
-
-
-        makeFea(VlogAdFeatureGroup.DAY, requestContextBytes.getWeek());
-        makeFea(VlogAdFeatureGroup.WEEK, requestContextBytes.getWeek());
-        makeFea(VlogAdFeatureGroup.HOUR, requestContextBytes.getHour());
-        makeFea(VlogAdFeatureGroup.REGION, requestContextBytes.getRegion());
-        makeFea(VlogAdFeatureGroup.CITY, requestContextBytes.getCity());
-    }
-
-    //TODO
-    public void getUserFeatures(UserAdBytesFeature userAdBytesFeature) {
-
-        // 1day features
-        makeFea(VlogAdFeatureGroup.USER_1DAY_EXP, userAdBytesFeature.getDay1_cnt_features().get("view"));
-        makeFea(VlogAdFeatureGroup.USER_1DAY_CLICK, userAdBytesFeature.getDay1_cnt_features().get("click"));
-        makeFea(VlogAdFeatureGroup.USER_1DAY_CTR, userAdBytesFeature.getDay1_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.USER_1DAY_CVR, userAdBytesFeature.getDay1_cnt_features().get("cvr"));
-
-        // 3day features
-        makeFea(VlogAdFeatureGroup.USER_3DAY_EXP, userAdBytesFeature.getDay3_cnt_features().get("view"));
-        makeFea(VlogAdFeatureGroup.USER_3DAY_CLICK, userAdBytesFeature.getDay3_cnt_features().get("click"));
-        makeFea(VlogAdFeatureGroup.USER_3DAY_CTR, userAdBytesFeature.getDay3_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.USER_3DAY_CVR, userAdBytesFeature.getDay3_cnt_features().get("cvr"));
-
-        // 7day features
-        makeFea(VlogAdFeatureGroup.USER_7DAY_EXP, userAdBytesFeature.getDay7_cnt_features().get("view"));
-        makeFea(VlogAdFeatureGroup.USER_7DAY_CLICK, userAdBytesFeature.getDay7_cnt_features().get("click"));
-        makeFea(VlogAdFeatureGroup.USER_7DAY_CTR, userAdBytesFeature.getDay7_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.USER_7DAY_CVR, userAdBytesFeature.getDay7_cnt_features().get("cvr"));
-
-        // 3month features
-        makeFea(VlogAdFeatureGroup.USER_3MONTH_EXP, userAdBytesFeature.getMonth3_cnt_features().get("view"));
-        makeFea(VlogAdFeatureGroup.USER_3MONTH_CLICK, userAdBytesFeature.getMonth3_cnt_features().get("click"));
-        makeFea(VlogAdFeatureGroup.USER_3MONTH_CTR, userAdBytesFeature.getMonth3_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.USER_3MONTH_CVR, userAdBytesFeature.getMonth3_cnt_features().get("cvr"));
-
-
-    }
-
-    public void getItemFeature(AdItemBytesFeature item) {
-
-        // Vdieo
-        makeFea(VlogAdFeatureGroup.ADID, item.getAdId());
-        makeFea(VlogAdFeatureGroup.CREATIVE, item.getCreative());
-        makeFea(VlogAdFeatureGroup.CAMPAIGIN, item.getCampaignId());
-        makeFea(VlogAdFeatureGroup.ADVERID, item.getAdvertiserId());
-
-        // 1day features
-        makeFea(VlogAdFeatureGroup.ITEM_1DAY_EXP, item.getDay1_cnt_features().get("view"));
-        makeFea(VlogAdFeatureGroup.ITEM_1DAY_CLICK, item.getDay1_cnt_features().get("click"));
-        makeFea(VlogAdFeatureGroup.ITEM_1DAY_CTR, item.getDay1_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.ITEM_1DAY_CVR, item.getDay1_cnt_features().get("cvr"));
-
-        // 3day features
-        makeFea(VlogAdFeatureGroup.ITEM_3DAY_EXP, item.getDay1_cnt_features().get("view"));
-        makeFea(VlogAdFeatureGroup.ITEM_3DAY_CLICK, item.getDay1_cnt_features().get("click"));
-        makeFea(VlogAdFeatureGroup.ITEM_3DAY_CTR, item.getDay1_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.ITEM_3DAY_CVR, item.getDay1_cnt_features().get("cvr"));
-
-
-        // 7day features
-        makeFea(VlogAdFeatureGroup.ITEM_7DAY_EXP, item.getDay1_cnt_features().get("view"));
-        makeFea(VlogAdFeatureGroup.ITEM_7DAY_CLICK, item.getDay1_cnt_features().get("click"));
-        makeFea(VlogAdFeatureGroup.ITEM_7DAY_CTR, item.getDay1_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.ITEM_7DAY_CVR, item.getDay1_cnt_features().get("cvr"));
-
-
-        // 3month features
-        makeFea(VlogAdFeatureGroup.ITEM_3MONTH_EXP, item.getMonth3_cnt_features().get("view"));
-        makeFea(VlogAdFeatureGroup.ITEM_3MONTH_CLICK, item.getMonth3_cnt_features().get("click"));
-        makeFea(VlogAdFeatureGroup.ITEM_3MONTH_CTR, item.getMonth3_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.ITEM_3MONTH_CVR, item.getMonth3_cnt_features().get("cvr"));
-
-
-        // creativeid 维度
-        // 1day features
-        makeFea(VlogAdFeatureGroup.CREATIVE_1DAY_CTR, item.getCreative_day1_cnt_features().get("view"));
-        makeFea(VlogAdFeatureGroup.CREATIVE_1DAY_CLICK, item.getCreative_day1_cnt_features().get("click"));
-        makeFea(VlogAdFeatureGroup.CREATIVE_1DAY_CTR, item.getCreative_day1_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.CREATIVE_1DAY_CVR, item.getCreative_day1_cnt_features().get("cvr"));
-
-        // 3day features
-        makeFea(VlogAdFeatureGroup.CREATIVE_3DAY_EXP, item.getCreative_day3_cnt_features().get("view"));
-        makeFea(VlogAdFeatureGroup.CREATIVE_3DAY_CLICK, item.getCreative_day3_cnt_features().get("click"));
-        makeFea(VlogAdFeatureGroup.CREATIVE_3DAY_CTR, item.getCreative_day3_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.CREATIVE_3DAY_CVR, item.getCreative_day3_cnt_features().get("cvr"));
-
-        // 7day features
-        makeFea(VlogAdFeatureGroup.CREATIVE_7DAY_EXP, item.getCreative_day7_cnt_features().get("view"));
-        makeFea(VlogAdFeatureGroup.CREATIVE_7DAY_CLICK, item.getCreative_day7_cnt_features().get("click"));
-        makeFea(VlogAdFeatureGroup.CREATIVE_7DAY_CTR, item.getCreative_day7_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.CREATIVE_7DAY_CVR, item.getCreative_day7_cnt_features().get("cvr"));
-
-        // 3month features
-        makeFea(VlogAdFeatureGroup.CREATIVE_3MONTH_EXP, item.getCreative_month3_cnt_features().get("view"));
-        makeFea(VlogAdFeatureGroup.CREATIVE_3MONTH_CLICK, item.getCreative_month3_cnt_features().get("click"));
-        makeFea(VlogAdFeatureGroup.CREATIVE_3MONTH_CTR, item.getCreative_month3_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.CREATIVE_3MONTH_CVR, item.getCreative_month3_cnt_features().get("cvr"));
-
-
-        // advertiserid 维度
-        // 1day features
-        makeFea(VlogAdFeatureGroup.ADVERID_1DAY_EXP, item.getAdvertiser_day1_cnt_features().get("view"));
-        makeFea(VlogAdFeatureGroup.ADVERID_1DAY_CLICK, item.getAdvertiser_day1_cnt_features().get("click"));
-        makeFea(VlogAdFeatureGroup.ADVERID_1DAY_CTR, item.getAdvertiser_day1_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.ADVERID_1DAY_CVR, item.getAdvertiser_day1_cnt_features().get("cvr"));
-
-        // 3day features
-        makeFea(VlogAdFeatureGroup.ADVERID_3DAY_EXP, item.getAdvertiser_day3_cnt_features().get("view"));
-        makeFea(VlogAdFeatureGroup.ADVERID_3DAY_CLICK, item.getAdvertiser_day3_cnt_features().get("click"));
-        makeFea(VlogAdFeatureGroup.ADVERID_3DAY_CTR, item.getAdvertiser_day3_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.ADVERID_3DAY_CVR, item.getAdvertiser_day3_cnt_features().get("cvr"));
-
-        // 7day features
-        makeFea(VlogAdFeatureGroup.ADVERID_7DAY_EXP, item.getAdvertiser_day7_cnt_features().get("view"));
-        makeFea(VlogAdFeatureGroup.ADVERID_7DAY_CLICK, item.getAdvertiser_day7_cnt_features().get("click"));
-        makeFea(VlogAdFeatureGroup.ADVERID_7DAY_CTR, item.getAdvertiser_day7_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.ADVERID_7DAY_CVR, item.getAdvertiser_day7_cnt_features().get("cvr"));
-
-        // 3month features
-        makeFea(VlogAdFeatureGroup.ADVERID_3MONTH_EXP, item.getAdvertiser_month3_cnt_features().get("view"));
-        makeFea(VlogAdFeatureGroup.ADVERID_3MONTH_CLICK, item.getAdvertiser_month3_cnt_features().get("click"));
-        makeFea(VlogAdFeatureGroup.ADVERID_3MONTH_CTR, item.getAdvertiser_month3_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.ADVERID_3MONTH_CVR, item.getAdvertiser_month3_cnt_features().get("cvr"));
-
-
-    }
-
-    // 增加广告交叉特征
-    public void getCrossFeature(AdItemBytesFeature itemBytesFeature, AdRequestContextBytesFeature requestContextByte, UserAdBytesFeature userAdBytesFeature) {
-        // creative and hour
-        makeFea(VlogAdFeatureGroup.CREATIVE_AND_HOUR, itemBytesFeature.getCreative(), requestContextByte.getHour());
-        makeFea(VlogAdFeatureGroup.ADVERID_AND_HOUR, itemBytesFeature.getAdvertiserId(), requestContextByte.getHour());
-        makeFea(VlogAdFeatureGroup.CREATIVE_AND_REGION, itemBytesFeature.getCreative(), requestContextByte.getRegion());
-        makeFea(VlogAdFeatureGroup.ADVERID_AND_REGION, itemBytesFeature.getAdvertiserId(), requestContextByte.getRegion());
-
-        //add city feature
-        makeFea(VlogAdFeatureGroup.CREATIVE_AND_CITY, itemBytesFeature.getCreative(), requestContextByte.getCity());
-        makeFea(VlogAdFeatureGroup.ADVERID_AND_CITY, itemBytesFeature.getAdvertiserId(), requestContextByte.getCity());
-
-        makeFea(VlogAdFeatureGroup.CREATIVE_AND_MACHINEINFO_MODEL, itemBytesFeature.getCreative(), requestContextByte.getMachineinfo_model());
-        makeFea(VlogAdFeatureGroup.ADVERID_AND_MACHINEINFO_MODEL, itemBytesFeature.getAdvertiserId(), requestContextByte.getMachineinfo_model());
-        makeFea(VlogAdFeatureGroup.CREATIVE_AND_MACHINEINFO_BRAND, itemBytesFeature.getCreative(), requestContextByte.getMachineinfo_brand());
-        makeFea(VlogAdFeatureGroup.ADVERID_AND_MACHINEINFO_BRAND, itemBytesFeature.getAdvertiserId(), requestContextByte.getMachineinfo_brand());
-
-        makeFea(VlogAdFeatureGroup.CREATIVE_AND_MACHINEINFO_SDK, itemBytesFeature.getCreative(), requestContextByte.getMachineinfo_sdkversion());
-        makeFea(VlogAdFeatureGroup.ADVERID_AND_MACHINEINFO_SDK, itemBytesFeature.getAdvertiserId(), requestContextByte.getMachineinfo_sdkversion());
-        makeFea(VlogAdFeatureGroup.CREATIVE_AND_USER_3MONTH_CTR, itemBytesFeature.getCreative(), userAdBytesFeature.getMonth3_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.ADVERID_AND_USER_3MONTH_CTR, itemBytesFeature.getAdvertiserId(), userAdBytesFeature.getMonth3_cnt_features().get("ctr"));
-
-        makeFea(VlogAdFeatureGroup.USER_3MONTH_CTR_AND_ITEM_7DAY_CTR, userAdBytesFeature.getMonth3_cnt_features().get("ctr"), itemBytesFeature.getCreative_day7_cnt_features().get("ctr"));
-        makeFea(VlogAdFeatureGroup.USER_3MONTH_CTR_AND_ITEM_3DAY_CTR, userAdBytesFeature.getMonth3_cnt_features().get("ctr"), itemBytesFeature.getCreative_day3_cnt_features().get("ctr"));
-
-
-    }
-
-
-    @Override
-    public synchronized LRSamples single(UserAdBytesFeature userAdBytesFeature,
-                                         AdItemBytesFeature videoBytesFeature,
-                                         AdRequestContextBytesFeature requestContextBytesFeature) {
-        features.clear();
-        // extract features
-        getUserFeatures(userAdBytesFeature);
-        getContextFeatures(requestContextBytesFeature);
-        getItemFeature(videoBytesFeature);
-        getCrossFeature(videoBytesFeature, requestContextBytesFeature, userAdBytesFeature);
-
-        LRSamples.Builder lr = com.tzld.piaoquan.recommend.server.gen.recommend.LRSamples.newBuilder();
-        lr.setGroupNum(groupCount);
-        List<FeatureGroup> keys = new ArrayList<>(features.keySet());
-        int count = 0;
-        for (FeatureGroup group : keys) {
-            List<BaseFeature> fea = features.get(group);
-            GroupedFeature.Builder gf = GroupedFeature.newBuilder();
-            gf.setGroup(group);
-            gf.setCount(fea.size());
-            gf.addAllFeatures(fea);
-            count += fea.size();
-            lr.addFeatures(gf);
-        }
-        lr.setCount(count);
-        return lr.build();
-    }
-
-
-}

+ 3 - 3
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/model/LRModel.java

@@ -1,8 +1,8 @@
 package com.tzld.piaoquan.ad.engine.commons.score.model;
 
-import com.tzld.piaoquan.recommend.server.gen.recommend.BaseFeature;
-import com.tzld.piaoquan.recommend.server.gen.recommend.GroupedFeature;
-import com.tzld.piaoquan.recommend.server.gen.recommend.LRSamples;
+import com.tzld.piaoquan.recommend.feature.model.sample.BaseFeature;
+import com.tzld.piaoquan.recommend.feature.model.sample.GroupedFeature;
+import com.tzld.piaoquan.recommend.feature.model.sample.LRSamples;
 import it.unimi.dsi.fastutil.longs.Long2FloatMap;
 import it.unimi.dsi.fastutil.longs.Long2FloatOpenHashMap;
 import org.slf4j.Logger;

+ 2 - 2
ad-engine-service/pom.xml

@@ -21,13 +21,13 @@
         <dependency>
             <groupId>com.tzld.piaoquan</groupId>
             <artifactId>ad-engine-commons</artifactId>
-            <version>1.0.1</version>
+            <version>1.0.2</version>
         </dependency>
 
         <dependency>
             <groupId>com.tzld.piaoquan</groupId>
             <artifactId>recommend-feature-client</artifactId>
-            <version>1.0.1</version>
+            <version>1.0.2</version>
         </dependency>
 
     </dependencies>

+ 3 - 3
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/FeatureRemoteService.java

@@ -1,8 +1,8 @@
 package com.tzld.piaoquan.ad.engine.service.score;
 
-import com.tzld.piaoquan.ad.engine.commons.base.AdActionFeature;
-import com.tzld.piaoquan.ad.engine.commons.base.AdRankItem;
-import com.tzld.piaoquan.ad.engine.commons.base.UserAdFeature;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdActionFeature;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.UserAdFeature;
 import com.tzld.piaoquan.ad.engine.commons.util.CommonCollectionUtils;
 import com.tzld.piaoquan.ad.engine.service.score.convert.FeatureConvert;
 import com.tzld.piaoquan.recommend.feature.client.FeatureClient;

+ 5 - 3
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/VlogAdCtrLRScorer.java

@@ -1,13 +1,15 @@
 package com.tzld.piaoquan.ad.engine.service.score;
 
 
-import com.tzld.piaoquan.ad.engine.commons.base.*;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.*;
+import com.tzld.piaoquan.recommend.feature.domain.ad.feature.VlogAdCtrLRFeatureExtractor;
+import com.tzld.piaoquan.recommend.feature.model.sample.LRSamples;
 import com.tzld.piaoquan.ad.engine.commons.score.BaseLRModelScorer;
 import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
 import com.tzld.piaoquan.ad.engine.commons.score.ScorerConfigInfo;
-import com.tzld.piaoquan.ad.engine.commons.score.feature.VlogAdCtrLRFeatureExtractor;
 import com.tzld.piaoquan.ad.engine.commons.score.model.LRModel;
-import com.tzld.piaoquan.recommend.server.gen.recommend.LRSamples;
+
+
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang.exception.ExceptionUtils;
 import org.slf4j.Logger;

+ 3 - 3
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/convert/FeatureConvert.java

@@ -1,8 +1,8 @@
 package com.tzld.piaoquan.ad.engine.service.score.convert;
 
-import com.tzld.piaoquan.ad.engine.commons.base.AdActionFeature;
-import com.tzld.piaoquan.ad.engine.commons.base.AdItemFeature;
-import com.tzld.piaoquan.ad.engine.commons.base.UserAdFeature;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdActionFeature;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdItemFeature;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.UserAdFeature;
 import com.tzld.piaoquan.recommend.feature.model.feature.*;
 
 /**

+ 1 - 1
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/convert/RequestConvert.java

@@ -1,6 +1,6 @@
 package com.tzld.piaoquan.ad.engine.service.score.convert;
 
-import com.tzld.piaoquan.ad.engine.commons.base.AdRequestContext;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRequestContext;
 import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
 import com.tzld.piaoquan.ad.engine.service.score.param.RankRecommendRequestParam;
 

+ 3 - 3
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/impl/RankServiceImpl.java

@@ -1,8 +1,8 @@
 package com.tzld.piaoquan.ad.engine.service.score.impl;
 
-import com.tzld.piaoquan.ad.engine.commons.base.AdItemFeature;
-import com.tzld.piaoquan.ad.engine.commons.base.AdRankItem;
-import com.tzld.piaoquan.ad.engine.commons.base.UserAdFeature;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdItemFeature;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.UserAdFeature;
 import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
 import com.tzld.piaoquan.ad.engine.commons.score.ScorerUtils;
 import com.tzld.piaoquan.ad.engine.commons.util.CommonCollectionUtils;