Authored by hugufei

默认排序 使用 uv分值 和 相关性 做a/b测试

... ... @@ -5,6 +5,9 @@ import org.apache.commons.lang.StringUtils;
public class ABUserPartitionUtils {
public static boolean isAUser(int uid) {
if(uid == 9848327){
return true;
}
int tail = uid % 1024;
return tail < 512 ? true : false;
}
... ... @@ -14,15 +17,24 @@ public class ABUserPartitionUtils {
return false;
}
int tail = Math.abs(udid.hashCode() % 1024);
System.out.println(tail);
return tail < 512 ? true : false;
}
public static boolean isAUserComplete(int uid,String udid) {
if(uid>0){
return isAUser(uid);
}else{
return isAUser(udid);
}
// if(uid>0){
// return isAUser(uid);
// }else{
// return isAUser(udid);
// }
return isAUser(udid);
}
public static void main(String[] args) {
System.out.println("0227d385f4942cb81a8d5dcdb174808f".hashCode());
System.out.println("02e90ef7a196dc4d183d61c6428bd083".hashCode());
System.out.println(isAUser("0227d385f4942cb81a8d5dcdb174808f"));
System.out.println(isAUser("02e90ef7a196dc4d183d61c6428bd083"));
}
}
... ...
... ... @@ -3,6 +3,8 @@ package com.yoho.search.service.recall.beans.result;
import com.alibaba.fastjson.JSON;
import com.yoho.search.base.utils.SearchCollectionUtils;
import com.yoho.search.base.utils.Transfer;
import com.yoho.search.common.SearchDynamicConfigService;
import com.yoho.search.common.utils.ABUserPartitionUtils;
import com.yoho.search.core.personalized.models.PersonalizedSearch;
import com.yoho.search.core.personalized.models.SortPriceAreas;
import com.yoho.search.models.recall.*;
... ... @@ -38,6 +40,8 @@ public class UserRecallResponseResultBuilder {
private RecallConfigService recallConfigService;
@Autowired
private ProductListSortHelper productListSortHelper;
@Autowired
private SearchDynamicConfigService searchDynamicConfigService;
/**
* 构造真实的UserRecallResponse
... ... @@ -201,9 +205,23 @@ public class UserRecallResponseResultBuilder {
continue;
}
// 3) 默认排序使用uvScore,关注排序使用向量关系
if(userRecallRequest.isDefaultOrder()){
score = sknResult.getUvScore();
}else{
if (userRecallRequest.isDefaultOrder()) {
int uid = userRecallRequest.getUid();
String udid = userRecallRequest.getUdid();
if (ABUserPartitionUtils.isAUserComplete(uid,udid)){
if (searchDynamicConfigService.isAStrategyOpen()) {
score = sknResult.getUvScore();
} else {
score = W2vFeatureCalculator.calProductFeatureFactor(userFeatureFactor, sknResult.getFactor());
}
} else {
if (searchDynamicConfigService.isBStrategyOpen()) {
score = W2vFeatureCalculator.calProductFeatureFactor(userFeatureFactor, sknResult.getFactor());
} else {
score = sknResult.getUvScore();
}
}
} else {
score = W2vFeatureCalculator.calProductFeatureFactor(userFeatureFactor, sknResult.getFactor());
}
// 4)如果当前skn不是兜底召回的,则加分【将兜底和非兜底的拆分】
... ... @@ -312,7 +330,7 @@ public class UserRecallResponseResultBuilder {
}
//8、灾备
if(CollectionUtils.isNotEmpty(sknResultList)){
if (CollectionUtils.isNotEmpty(sknResultList)) {
results.addAll(sknResultList);
}
... ...