Authored by hugufei

添加ufo商品的降分逻辑

1 package com.yoho.search.service.helper; 1 package com.yoho.search.service.helper;
2 2
3 -import java.util.ArrayList;  
4 -import java.util.Arrays;  
5 -import java.util.List;  
6 -import java.util.Map;  
7 -import java.util.stream.Collectors;  
8 -  
9 import com.yoho.search.base.utils.ConvertUtils; 3 import com.yoho.search.base.utils.ConvertUtils;
  4 +import com.yoho.search.base.utils.SearchPageIdDefine;
  5 +import com.yoho.search.common.SearchDynamicConfigService;
  6 +import com.yoho.search.common.SearchRequestParams;
  7 +import com.yoho.search.core.personalized.models.PersonalizedSearch;
  8 +import com.yoho.search.models.FirstShelveTimeScore;
10 import com.yoho.search.service.recall.config.SpecialShopConstants; 9 import com.yoho.search.service.recall.config.SpecialShopConstants;
  10 +import com.yoho.search.service.scene.general.ProductCountService;
  11 +import com.yoho.search.service.scorer.IScorer;
  12 +import com.yoho.search.service.scorer.SearchScorerFactory;
  13 +import com.yoho.search.service.scorer.YohoFilterFunctionBuilders;
  14 +import com.yoho.search.service.scorer.personal.PersonalVectorFeatureSearch;
11 import org.apache.commons.collections.CollectionUtils; 15 import org.apache.commons.collections.CollectionUtils;
12 import org.apache.commons.collections.MapUtils; 16 import org.apache.commons.collections.MapUtils;
13 import org.apache.commons.lang.StringUtils; 17 import org.apache.commons.lang.StringUtils;
@@ -22,16 +26,11 @@ import org.springframework.beans.factory.annotation.Autowired; @@ -22,16 +26,11 @@ import org.springframework.beans.factory.annotation.Autowired;
22 import org.springframework.stereotype.Component; 26 import org.springframework.stereotype.Component;
23 import org.springframework.util.Assert; 27 import org.springframework.util.Assert;
24 28
25 -import com.yoho.search.base.utils.SearchPageIdDefine;  
26 -import com.yoho.search.core.personalized.models.PersonalizedSearch;  
27 -import com.yoho.search.models.FirstShelveTimeScore;  
28 -import com.yoho.search.service.scorer.YohoFilterFunctionBuilders;  
29 -import com.yoho.search.common.SearchDynamicConfigService;  
30 -import com.yoho.search.common.SearchRequestParams;  
31 -import com.yoho.search.service.scorer.IScorer;  
32 -import com.yoho.search.service.scorer.SearchScorerFactory;  
33 -import com.yoho.search.service.scorer.personal.PersonalVectorFeatureSearch;  
34 -import com.yoho.search.service.scene.general.ProductCountService; 29 +import java.util.ArrayList;
  30 +import java.util.Arrays;
  31 +import java.util.List;
  32 +import java.util.Map;
  33 +import java.util.stream.Collectors;
35 34
36 @Component 35 @Component
37 public class FunctionScoreSearchHelper { 36 public class FunctionScoreSearchHelper {
@@ -193,8 +192,9 @@ public class FunctionScoreSearchHelper { @@ -193,8 +192,9 @@ public class FunctionScoreSearchHelper {
193 return new ArrayList<IScorer>(); 192 return new ArrayList<IScorer>();
194 } 193 }
195 List<IScorer> scorers = new ArrayList<IScorer>(); 194 List<IScorer> scorers = new ArrayList<IScorer>();
196 - // 2、全球购商品 195 + // 2、全球购和ufo商品
197 scorers.add(searchScorerFactory.getGlobalProductSearch(paramMap)); 196 scorers.add(searchScorerFactory.getGlobalProductSearch(paramMap));
  197 + scorers.add(searchScorerFactory.getUfoProductSearch(paramMap));
198 // 3、一高三低商品降分[非新品并且零交际的商品] 198 // 3、一高三低商品降分[非新品并且零交际的商品]
199 scorers.add(searchScorerFactory.getProblemProductScorer()); 199 scorers.add(searchScorerFactory.getProblemProductScorer());
200 // 4、first_product_skn 200 // 4、first_product_skn
@@ -50,10 +50,6 @@ public class SearchParamHelper { @@ -50,10 +50,6 @@ public class SearchParamHelper {
50 return searchParam; 50 return searchParam;
51 } 51 }
52 52
53 - public ParamQueryFilter buildParamQueryFilter(Map<String, String> paramMap) throws Exception {  
54 - return buildParamQueryFilter(paramMap,false,null,null);  
55 - }  
56 -  
57 public ParamQueryFilter buildParamQueryFilter(Map<String, String> paramMap, boolean needPersional, BoolQueryBuilder mustFilter,String filterParamName) throws Exception { 53 public ParamQueryFilter buildParamQueryFilter(Map<String, String> paramMap, boolean needPersional, BoolQueryBuilder mustFilter,String filterParamName) throws Exception {
58 // 1、构造filter 54 // 1、构造filter
59 BoolQueryBuilder filter = searchQueryHelper.constructFilterBuilder(paramMap, filterParamName); 55 BoolQueryBuilder filter = searchQueryHelper.constructFilterBuilder(paramMap, filterParamName);
@@ -37,6 +37,15 @@ public class SearchScorerFactory { @@ -37,6 +37,15 @@ public class SearchScorerFactory {
37 return new GlobalProductScorer(); 37 return new GlobalProductScorer();
38 } 38 }
39 39
  40 + // 获取【UFO商品】的打分器
  41 + public IScorer getUfoProductSearch(Map<String, String> paramMap) {
  42 + if (!searchCommonHelper.containUFO(paramMap)) {
  43 + return null;
  44 + }
  45 + return new UfoProductScorer();
  46 + }
  47 +
  48 +
40 // // 获取【断码商品】的打分器 49 // // 获取【断码商品】的打分器
41 // public IScorer getBreakSizeProductScorer(Map<String, String> paramMap) { 50 // public IScorer getBreakSizeProductScorer(Map<String, String> paramMap) {
42 // try { 51 // try {
  1 +package com.yoho.search.service.scorer.impl;
  2 +
  3 +import com.yoho.search.base.utils.ProductIndexEsField;
  4 +import com.yoho.search.service.scorer.IScorer;
  5 +import com.yoho.search.service.scorer.YohoFilterFunctionBuilders;
  6 +import org.elasticsearch.index.query.QueryBuilders;
  7 +import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders;
  8 +
  9 +public class UfoProductScorer implements IScorer {
  10 +
  11 + private static final float UFO_DEFUT_WEIGHT = 0.55f;// ufo得分
  12 +
  13 + @Override
  14 + public void addScorer(YohoFilterFunctionBuilders yohoFilterFunctionBuilders) {
  15 + yohoFilterFunctionBuilders.add(QueryBuilders.termQuery(ProductIndexEsField.isUfo, "Y"), ScoreFunctionBuilders.weightFactorFunction(UFO_DEFUT_WEIGHT));
  16 + }
  17 +
  18 +}