Authored by hugufei

新增新品维度的排序

package com.yoho.search.service.recall.beans.builder;
import com.yoho.search.service.recall.strategy.StrategyEnum;
import com.yoho.search.service.recall.config.RecallConfigService;
import com.yoho.search.service.recall.models.req.RecallRequest;
import com.yoho.search.service.recall.models.req.UserRecallRequest;
import com.yoho.search.service.recall.strategy.StrategyEnum;
import com.yoho.search.service.recall.strategy.impls.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
... ... @@ -38,12 +38,13 @@ public class CommonRecallRequestBuilder {
requests.add(this.buildNewShopRequest(userRecallRequest));
//1.5) 流量补偿的召回
requests.add(this.buildAddFlowRequest(userRecallRequest));
//1.6) 页面的兜底召回
//1.6) 新品的召回
requests.add(this.buildNewProductRequest(userRecallRequest));
//1.7) 页面的兜底召回
requests.add(this.buildCommonHeatValueStrategy(userRecallRequest, pageSize));
return requests;
}
/**
* 构造【按FIRST_SKN召回】的请求参数
*
... ... @@ -63,7 +64,7 @@ public class CommonRecallRequestBuilder {
* @return
*/
private RecallRequest buildDirectTrainRequest(UserRecallRequest userRecallRequest) {
int size = recallConfigService.queryStrategyConfigSize(userRecallRequest, StrategyEnum.DIRECT_TRAIN,60);
int size = recallConfigService.queryStrategyConfigSize(userRecallRequest, StrategyEnum.DIRECT_TRAIN, 0);
CommonDirectTrainStrategy strategy = new CommonDirectTrainStrategy(size);
return new RecallRequest(userRecallRequest.getParamQueryFilter(), strategy);
}
... ... @@ -75,7 +76,7 @@ public class CommonRecallRequestBuilder {
* @return
*/
private RecallRequest buildUfoDirectTrainRequest(UserRecallRequest userRecallRequest) {
int size = recallConfigService.queryStrategyConfigSize(userRecallRequest, StrategyEnum.DIRECT_TRAIN_UFO,40);
int size = recallConfigService.queryStrategyConfigSize(userRecallRequest, StrategyEnum.DIRECT_TRAIN_UFO, 0);
CommonDirectTrainUfoStrategy strategy = new CommonDirectTrainUfoStrategy(size);
return new RecallRequest(userRecallRequest.getParamQueryFilter(), strategy);
}
... ... @@ -87,7 +88,7 @@ public class CommonRecallRequestBuilder {
* @return
*/
private RecallRequest buildNewShopRequest(UserRecallRequest userRecallRequest) {
int size = recallConfigService.queryStrategyConfigSize(userRecallRequest, StrategyEnum.NEW_SHOP,10);
int size = recallConfigService.queryStrategyConfigSize(userRecallRequest, StrategyEnum.NEW_SHOP, 0);
CommonNewShopStrategy strategy = new CommonNewShopStrategy(size);
return new RecallRequest(userRecallRequest.getParamQueryFilter(), strategy);
}
... ... @@ -99,19 +100,32 @@ public class CommonRecallRequestBuilder {
* @return
*/
private RecallRequest buildAddFlowRequest(UserRecallRequest userRecallRequest) {
int size = recallConfigService.queryStrategyConfigSize(userRecallRequest, StrategyEnum.ADD_FLOW,10);
int size = recallConfigService.queryStrategyConfigSize(userRecallRequest, StrategyEnum.ADD_FLOW, 0);
CommonAddFlowStrategy strategy = new CommonAddFlowStrategy(size);
return new RecallRequest(userRecallRequest.getParamQueryFilter(), strategy);
}
/**
* 构建【新品召回】的请求参数
*
* @param userRecallRequest
* @return
*/
private RecallRequest buildNewProductRequest(UserRecallRequest userRecallRequest) {
int size = recallConfigService.queryStrategyConfigSize(userRecallRequest, StrategyEnum.NEW_PRODUCT, 0);
NewProductStrategy strategy = new NewProductStrategy(size);
return new RecallRequest(userRecallRequest.getParamQueryFilter(), strategy);
}
/**
* 构建【按兜底召回】的请求参数
*
* @param userRecallRequest
* @param size
* @param defaultSize
* @return
*/
private RecallRequest buildCommonHeatValueStrategy(UserRecallRequest userRecallRequest, int size) {
private RecallRequest buildCommonHeatValueStrategy(UserRecallRequest userRecallRequest, int defaultSize) {
int size = recallConfigService.queryStrategyConfigSize(userRecallRequest, StrategyEnum.COMMON_HEAT_VALUE, defaultSize);
CommonHeatValueStrategy strategy = new CommonHeatValueStrategy(size);
return new RecallRequest(userRecallRequest.getParamQueryFilter(), strategy);
}
... ...
... ... @@ -3,10 +3,10 @@ package com.yoho.search.service.recall.config;
import com.alibaba.fastjson.JSON;
import com.yoho.search.core.personalized.models.SortBrand;
import com.yoho.search.service.recall.helper.StrategyHelper;
import com.yoho.search.service.recall.strategy.SortBrandType;
import com.yoho.search.service.recall.strategy.StrategyEnum;
import com.yoho.search.service.recall.models.personal.PagePersonalFactor;
import com.yoho.search.service.recall.models.req.UserRecallRequest;
import com.yoho.search.service.recall.strategy.SortBrandType;
import com.yoho.search.service.recall.strategy.StrategyEnum;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -40,12 +40,12 @@ public class RecallConfigService {
* @param strategyEnum
* @return
*/
public int queryStrategyConfigSize(UserRecallRequest userRecallRequest, StrategyEnum strategyEnum,int defaultSize) {
public int queryStrategyConfigSize(UserRecallRequest userRecallRequest, StrategyEnum strategyEnum, int defaultSize) {
String configKey = StrategyHelper.getStrategyConfigKey(strategyEnum);
int size = recallConfigCommonService.queryConfigSize(userRecallRequest.getPageId(), configKey, defaultSize);
size = this.legallValue(size, 0, 100);
size = this.legallValue(size, 0, 200);
if (userRecallRequest.openDetailLog()) {
RECALL_LOGGER.info("queryStrategyConfigSize,pageId is [{}],strategyEnum is [{}],size is[{}]", userRecallRequest.getPageId(), strategyEnum.name(), size);
RECALL_LOGGER.info("queryStrategyConfigSize,pageId is [{}],searchRecType is [{}], strategyEnum is [{}],size is[{}]", userRecallRequest.getPageId(), userRecallRequest.getSearchRecType(), strategyEnum.name(), size);
}
return size;
}
... ... @@ -57,12 +57,12 @@ public class RecallConfigService {
* @param strategyEnum
* @return
*/
public int queryStrategyConfigInterval(UserRecallRequest userRecallRequest, StrategyEnum strategyEnum,int defaultInterval) {
public int queryStrategyConfigInterval(UserRecallRequest userRecallRequest, StrategyEnum strategyEnum, int defaultInterval) {
String configKey = StrategyHelper.getStrategyConfigKey(strategyEnum);
int interval = recallConfigCommonService.queryConfigInterval(userRecallRequest.getPageId(), configKey, 10);
int interval = recallConfigCommonService.queryConfigInterval(userRecallRequest.getPageId(), configKey, defaultInterval);
interval = this.legallValue(interval, 2, 40);
if (userRecallRequest.openDetailLog()) {
RECALL_LOGGER.info("queryStrategyConfigInterval,pageId is [{}],strategyEnum is [{}],interval is[{}]", userRecallRequest.getPageId(), strategyEnum.name(), interval);
RECALL_LOGGER.info("queryStrategyConfigInterval,pageId is [{}],searchRecType is [{}],strategyEnum is [{}],interval is[{}]", userRecallRequest.getPageId(), strategyEnum.name(), interval);
}
return interval;
}
... ...