Authored by hugufei

列表相关代码拆包

Showing 32 changed files with 271 additions and 455 deletions
@@ -2,26 +2,19 @@ package com.yoho.search.recall.common; @@ -2,26 +2,19 @@ package com.yoho.search.recall.common;
2 2
3 import com.alibaba.fastjson.JSONObject; 3 import com.alibaba.fastjson.JSONObject;
4 import com.yoho.search.base.utils.CollectionUtils; 4 import com.yoho.search.base.utils.CollectionUtils;
5 -import com.yoho.search.base.utils.ISearchConstants;  
6 import com.yoho.search.base.utils.ProductIndexEsField; 5 import com.yoho.search.base.utils.ProductIndexEsField;
7 -import com.yoho.search.common.cache.CacheType;  
8 -import com.yoho.search.common.cache.aop.SearchCacheAble;  
9 -import com.yoho.search.core.es.model.SearchParam;  
10 -import com.yoho.search.core.es.model.SearchResult;  
11 import com.yoho.search.core.personalized.PersonalizedSearch; 6 import com.yoho.search.core.personalized.PersonalizedSearch;
12 import com.yoho.search.models.SearchApiResult; 7 import com.yoho.search.models.SearchApiResult;
  8 +import com.yoho.search.recall.common.beans.ProductFeatureFactorHepler;
13 import com.yoho.search.recall.common.cacheable.CacheAbleServiceHelper; 9 import com.yoho.search.recall.common.cacheable.CacheAbleServiceHelper;
14 import com.yoho.search.recall.common.cacheable.CommonPageRecallService; 10 import com.yoho.search.recall.common.cacheable.CommonPageRecallService;
15 import com.yoho.search.recall.common.model.CommonRecallParam; 11 import com.yoho.search.recall.common.model.CommonRecallParam;
16 import com.yoho.search.recall.common.model.CommonRecallResult; 12 import com.yoho.search.recall.common.model.CommonRecallResult;
17 import com.yoho.search.recall.common.model.CommonRecallSkn; 13 import com.yoho.search.recall.common.model.CommonRecallSkn;
  14 +import com.yoho.search.recall.common.model.UserFeatureFactor;
18 import com.yoho.search.service.base.ProductListSortKey; 15 import com.yoho.search.service.base.ProductListSortKey;
19 import com.yoho.search.service.base.ProductListSortService; 16 import com.yoho.search.service.base.ProductListSortService;
20 -import com.yoho.search.service.base.SearchCommonService;  
21 import com.yoho.search.service.base.SearchRequestParams; 17 import com.yoho.search.service.base.SearchRequestParams;
22 -import com.yoho.search.service.base.index.ProductIndexBaseService;  
23 -import com.yoho.search.service.helper.SearchParamHelper;  
24 -import com.yoho.search.service.helper.SearchSortHelper;  
25 import com.yoho.search.service.scorer.personal.PersonalVectorFeatureSearch; 18 import com.yoho.search.service.scorer.personal.PersonalVectorFeatureSearch;
26 import org.apache.commons.collections.MapUtils; 19 import org.apache.commons.collections.MapUtils;
27 import org.apache.commons.lang.StringUtils; 20 import org.apache.commons.lang.StringUtils;
@@ -33,42 +26,34 @@ import org.elasticsearch.search.sort.SortOrder; @@ -33,42 +26,34 @@ import org.elasticsearch.search.sort.SortOrder;
33 import org.slf4j.Logger; 26 import org.slf4j.Logger;
34 import org.slf4j.LoggerFactory; 27 import org.slf4j.LoggerFactory;
35 import org.springframework.beans.factory.annotation.Autowired; 28 import org.springframework.beans.factory.annotation.Autowired;
36 -import org.springframework.stereotype.Service; 29 +import org.springframework.stereotype.Component;
37 30
38 import java.util.*; 31 import java.util.*;
39 32
40 -@Service  
41 -public class ProductListServiceHelper { 33 +@Component
  34 +public class CommonRecallProductListService {
42 35
43 - private static final Logger logger = LoggerFactory.getLogger(ProductListServiceHelper.class); 36 + private static final Logger logger = LoggerFactory.getLogger(CommonRecallProductListService.class);
44 37
45 @Autowired 38 @Autowired
46 private CommonPageRecallService commonRecallSceneService; 39 private CommonPageRecallService commonRecallSceneService;
47 @Autowired 40 @Autowired
48 - private ProductListSortService productListSortService;  
49 - @Autowired  
50 - private SearchParamHelper searchParamHelper;  
51 - @Autowired  
52 - private SearchSortHelper searchSortHelper;  
53 - @Autowired  
54 - private ProductIndexBaseService productIndexBaseService;  
55 - @Autowired  
56 - private SearchCommonService searchCommonService;  
57 - @Autowired  
58 private PersonalVectorFeatureSearch personalVectorFeatureSearch; 41 private PersonalVectorFeatureSearch personalVectorFeatureSearch;
59 @Autowired 42 @Autowired
60 private ProductFeatureFactorHepler productFeatureFactorHepler; 43 private ProductFeatureFactorHepler productFeatureFactorHepler;
61 @Autowired 44 @Autowired
62 private CacheAbleServiceHelper cacheAbleServiceHelper; 45 private CacheAbleServiceHelper cacheAbleServiceHelper;
  46 + @Autowired
  47 + private ProductListSortService productListSortService;
63 48
64 /** 49 /**
65 - * 个性化的列表接口 50 + * 高性能的个性化的列表接口
66 * 51 *
67 * @order为空并且有uid 52 * @order为空并且有uid
68 * @param paramMap 53 * @param paramMap
69 * @return 54 * @return
70 */ 55 */
71 - public SearchApiResult productListForNewPersional(Map<String, String> paramMap) { 56 + public SearchApiResult productList(Map<String, String> paramMap) {
72 // 1、召回整数页个skn[需要new一个对象出来,不然原有数据的顺序会变] 57 // 1、召回整数页个skn[需要new一个对象出来,不然原有数据的顺序会变]
73 CommonRecallResult cacheObject = commonRecallSceneService.doCommonPageRecallBatch(paramMap); 58 CommonRecallResult cacheObject = commonRecallSceneService.doCommonPageRecallBatch(paramMap);
74 CommonRecallResult commonRecallResult = new CommonRecallResult(cacheObject); 59 CommonRecallResult commonRecallResult = new CommonRecallResult(cacheObject);
@@ -202,64 +187,4 @@ public class ProductListServiceHelper { @@ -202,64 +187,4 @@ public class ProductListServiceHelper {
202 return commonRecallResult; 187 return commonRecallResult;
203 } 188 }
204 189
205 - /**  
206 - * 非个性化的列表接口-去除uid缓存  
207 - *  
208 - * @order不为空,或者无uid  
209 - * @param paramMap  
210 - * @return  
211 - */  
212 - @SearchCacheAble(cacheName = "PRODUCT_LIST_NOT_PERSIONAL", cacheType = CacheType.SEARCH_REDIS, cacheInMinute = 10, excludeParams = { "uid", "firstProductSkn" })  
213 - public SearchApiResult productListNotPersional(Map<String, String> paramMap) {  
214 - return this.productList(paramMap);  
215 - }  
216 -  
217 - /**  
218 - * 个性化的列表接口-基于向量的个性化缓存-估计命中率会很低  
219 - *  
220 - * @param paramMap  
221 - * @return  
222 - */  
223 - @SearchCacheAble(cacheName = "PRODUCT_LIST_DEFAULT_PERSIONAL", cacheType = CacheType.SEARCH_REDIS, cacheInMinute = 10)  
224 - public SearchApiResult productListForDefaultPersional(Map<String, String> paramMap) {  
225 - return this.productList(paramMap);  
226 - }  
227 -  
228 - private SearchApiResult productList(Map<String, String> paramMap){  
229 - try {  
230 - // 1)验证查询条数  
231 - int pageSize = StringUtils.isBlank(paramMap.get("viewNum")) ? 10 : Integer.parseInt(paramMap.get("viewNum"));  
232 - int page = StringUtils.isBlank(paramMap.get("page")) ? 1 : Integer.parseInt(paramMap.get("page"));  
233 - if (page < 1 || pageSize < 0 || page * pageSize > 1000000) {  
234 - return new SearchApiResult().setCode(400).setMessage("分页参数不合法");  
235 - }  
236 - if (pageSize > 100) {  
237 - pageSize = 100;  
238 - }  
239 - // 2)构建基本查询参数  
240 - SearchParam searchParam = searchParamHelper.buildWithPersional(paramMap, true);// 这个必须用buildWithPersional构造,有些特殊的逻辑-如firstSkn在里面  
241 - searchParam.setAggregationBuilders(null);  
242 - searchParam.setOffset((page - 1) * pageSize);  
243 - searchParam.setSize(pageSize);  
244 - // 3)设置排序字段  
245 - searchParam.setSortBuilders(searchSortHelper.buildSortList(paramMap));  
246 - // 4)设置返回的参数【节省带宽】  
247 - List<String> includeFields = productIndexBaseService.getProductIndexIncludeFields();  
248 - searchParam.setIncludeFields(includeFields);  
249 - SearchResult searchResult = searchCommonService.doSearch(ISearchConstants.INDEX_NAME_PRODUCT_INDEX, searchParam);  
250 - // 5)构造返回结果  
251 - JSONObject dataMap = new JSONObject();  
252 - dataMap.put("total", searchResult.getTotal());  
253 - dataMap.put("page", searchResult.getPage());  
254 - dataMap.put("page_size", searchParam.getSize());  
255 - dataMap.put("page_total", searchResult.getTotalPage());  
256 - List<Map<String, Object>> product_list = productIndexBaseService.getProductListWithPricePlan(searchResult.getResultList());  
257 - dataMap.put("product_list", productListSortService.sortProductList(product_list));// 处理一下商品的顺序;  
258 - return new SearchApiResult().setData(dataMap);  
259 - } catch (Exception e) {  
260 - logger.error(e.getMessage(), e);  
261 - return new SearchApiResult().setData(null).setCode(500);  
262 - }  
263 - }  
264 -  
265 } 190 }
1 -package com.yoho.search.recall.common; 1 +package com.yoho.search.recall.common.beans;
2 2
3 import java.util.ArrayList; 3 import java.util.ArrayList;
4 import java.util.Arrays; 4 import java.util.Arrays;
1 -package com.yoho.search.recall.common; 1 +package com.yoho.search.recall.common.beans;
2 2
  3 +import com.yoho.search.recall.common.model.UserFeatureFactor;
3 import org.apache.commons.lang.StringUtils; 4 import org.apache.commons.lang.StringUtils;
4 import org.slf4j.Logger; 5 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory; 6 import org.slf4j.LoggerFactory;
6 import org.springframework.stereotype.Component; 7 import org.springframework.stereotype.Component;
7 8
8 -import com.yoho.search.core.personalized.PersonalizedSearch;  
9 -  
10 @Component 9 @Component
11 public class ProductFeatureFactorHepler { 10 public class ProductFeatureFactorHepler {
12 11
@@ -15,7 +14,7 @@ public class ProductFeatureFactorHepler { @@ -15,7 +14,7 @@ public class ProductFeatureFactorHepler {
15 private static double baseConstant = 1; 14 private static double baseConstant = 1;
16 private static double factorConstant = 1; 15 private static double factorConstant = 1;
17 16
18 - public double calProductFeatureFactor(UserFeatureFactor userFeatureFactor,String productFeatureFactor){ 17 + public double calProductFeatureFactor(UserFeatureFactor userFeatureFactor, String productFeatureFactor){
19 try { 18 try {
20 //用户向量不存在,则直接随机 19 //用户向量不存在,则直接随机
21 if(userFeatureFactor==null || StringUtils.isBlank(userFeatureFactor.vectorFeatureVersion)){ 20 if(userFeatureFactor==null || StringUtils.isBlank(userFeatureFactor.vectorFeatureVersion)){
1 package com.yoho.search.recall.common.cacheable; 1 package com.yoho.search.recall.common.cacheable;
2 2
3 -import java.util.ArrayList;  
4 -import java.util.List;  
5 -import java.util.Map;  
6 - 3 +import com.yoho.search.base.utils.CollectionUtils;
  4 +import com.yoho.search.base.utils.ISearchConstants;
  5 +import com.yoho.search.base.utils.ProductIndexEsField;
  6 +import com.yoho.search.common.cache.CacheType;
  7 +import com.yoho.search.common.cache.aop.SearchCacheAble;
  8 +import com.yoho.search.core.es.model.SearchParam;
  9 +import com.yoho.search.core.es.model.SearchResult;
  10 +import com.yoho.search.recall.common.beans.BaseRecallService;
  11 +import com.yoho.search.recall.common.model.CommonRecallResult;
  12 +import com.yoho.search.recall.common.model.CommonRecallSkn;
  13 +import com.yoho.search.service.base.SearchRequestParams;
7 import org.apache.commons.collections.MapUtils; 14 import org.apache.commons.collections.MapUtils;
8 import org.apache.commons.lang.StringUtils; 15 import org.apache.commons.lang.StringUtils;
9 import org.elasticsearch.index.query.BoolQueryBuilder; 16 import org.elasticsearch.index.query.BoolQueryBuilder;
@@ -15,23 +22,11 @@ import org.elasticsearch.search.sort.SortBuilders; @@ -15,23 +22,11 @@ import org.elasticsearch.search.sort.SortBuilders;
15 import org.elasticsearch.search.sort.SortOrder; 22 import org.elasticsearch.search.sort.SortOrder;
16 import org.slf4j.Logger; 23 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory; 24 import org.slf4j.LoggerFactory;
18 -import org.springframework.beans.factory.annotation.Autowired;  
19 import org.springframework.stereotype.Component; 25 import org.springframework.stereotype.Component;
20 26
21 -import com.yoho.search.base.utils.CollectionUtils;  
22 -import com.yoho.search.base.utils.ISearchConstants;  
23 -import com.yoho.search.base.utils.ProductIndexEsField;  
24 -import com.yoho.search.common.cache.CacheType;  
25 -import com.yoho.search.common.cache.aop.SearchCacheAble;  
26 -import com.yoho.search.core.es.model.SearchParam;  
27 -import com.yoho.search.core.es.model.SearchResult;  
28 -import com.yoho.search.service.base.ProductListSortService;  
29 -import com.yoho.search.service.base.SearchRequestParams;  
30 -import com.yoho.search.service.base.index.ProductIndexBaseService;  
31 -import com.yoho.search.service.helper.SearchSortHelper;  
32 -import com.yoho.search.recall.common.BaseRecallService;  
33 -import com.yoho.search.recall.common.model.CommonRecallResult;  
34 -import com.yoho.search.recall.common.model.CommonRecallSkn; 27 +import java.util.ArrayList;
  28 +import java.util.List;
  29 +import java.util.Map;
35 30
36 @Component 31 @Component
37 public class CommonPageRecallService extends BaseRecallService { 32 public class CommonPageRecallService extends BaseRecallService {
1 -package com.yoho.search.recall.common; 1 +package com.yoho.search.recall.common.model;
2 2
3 import com.yoho.search.core.personalized.PersonalizedSearch; 3 import com.yoho.search.core.personalized.PersonalizedSearch;
4 4
@@ -30,9 +30,9 @@ import java.util.List; @@ -30,9 +30,9 @@ import java.util.List;
30 import java.util.Map; 30 import java.util.Map;
31 31
32 @Component 32 @Component
33 -public class NewSceneRecallService { 33 +public class SceneRecallProductListService {
34 34
35 - private static final Logger logger = LoggerFactory.getLogger(NewSceneRecallService.class); 35 + private static final Logger logger = LoggerFactory.getLogger(SceneRecallProductListService.class);
36 36
37 @Autowired 37 @Autowired
38 private RecallParamsBuilder recallParamsBuilder; 38 private RecallParamsBuilder recallParamsBuilder;
@@ -45,7 +45,7 @@ public class NewSceneRecallService { @@ -45,7 +45,7 @@ public class NewSceneRecallService {
45 @Autowired 45 @Autowired
46 private QueryProductInfoCacheBean queryProductInfoCacheBean; 46 private QueryProductInfoCacheBean queryProductInfoCacheBean;
47 47
48 - public SearchApiResult sceneRecall(Map<String, String> paramMap) { 48 + public SearchApiResult productList(Map<String, String> paramMap) {
49 try { 49 try {
50 //1、分页参数验证 50 //1、分页参数验证
51 int page = MapUtils.getIntValue(paramMap, "page", 1); 51 int page = MapUtils.getIntValue(paramMap, "page", 1);
@@ -21,7 +21,7 @@ import org.springframework.stereotype.Service; @@ -21,7 +21,7 @@ import org.springframework.stereotype.Service;
21 import java.util.*; 21 import java.util.*;
22 22
23 @Service 23 @Service
24 -public class SortRecallSceneService extends AbstractRecallService { 24 +public class SortRecallProductListService extends AbstractRecallService {
25 25
26 @Autowired 26 @Autowired
27 private ProductListSortService productListSortService; 27 private ProductListSortService productListSortService;
1 -package com.yoho.search.restapi;  
2 -  
3 -import org.springframework.beans.factory.annotation.Autowired;  
4 -import org.springframework.stereotype.Controller;  
5 -import org.springframework.web.bind.annotation.RequestMapping;  
6 -import org.springframework.web.bind.annotation.RequestMethod;  
7 -import org.springframework.web.bind.annotation.ResponseBody;  
8 -  
9 -import com.yoho.search.models.SearchApiResult;  
10 -import com.yoho.search.service.press.PressTestService;  
11 -  
12 -@Controller  
13 -public class PressTestController {  
14 -  
15 - @Autowired  
16 - private PressTestService pressTestService;  
17 -  
18 - @RequestMapping(method = RequestMethod.GET, value = "/pressProductIndex")  
19 - @ResponseBody  
20 - public SearchApiResult pressProductIndex(String brandIds, String smallSortIds, int size, String order, boolean withRange) {  
21 - return pressTestService.pressProductIndex(brandIds, smallSortIds, size, order, withRange);  
22 - }  
23 -  
24 - @RequestMapping(method = RequestMethod.GET, value = "/pressProductBaseIndex")  
25 - @ResponseBody  
26 - public SearchApiResult pressProductBaseIndex(String brandIds, String smallSortIds, int size, String order, boolean withRange) {  
27 - return pressTestService.pressProductBaseIndex(brandIds, smallSortIds, size, order, withRange);  
28 - }  
29 -  
30 -}  
@@ -16,7 +16,7 @@ import com.alibaba.fastjson.JSONObject; @@ -16,7 +16,7 @@ import com.alibaba.fastjson.JSONObject;
16 import com.yoho.search.common.downgrade.persional.PersionalRateLimit; 16 import com.yoho.search.common.downgrade.persional.PersionalRateLimit;
17 import com.yoho.search.common.utils.HttpServletRequestUtils; 17 import com.yoho.search.common.utils.HttpServletRequestUtils;
18 import com.yoho.search.models.SearchApiResult; 18 import com.yoho.search.models.SearchApiResult;
19 -import com.yoho.search.service.scene.common.CommonSceneProductListService; 19 +import com.yoho.search.service.list.ProductListSwitchService;
20 import com.yoho.search.service.service.IProductListService; 20 import com.yoho.search.service.service.IProductListService;
21 21
22 @Controller 22 @Controller
@@ -25,7 +25,7 @@ public class ProductListController { @@ -25,7 +25,7 @@ public class ProductListController {
25 @Autowired 25 @Autowired
26 private IProductListService productListService; 26 private IProductListService productListService;
27 @Autowired 27 @Autowired
28 - private CommonSceneProductListService commonSceneProductListService; 28 + private ProductListSwitchService productListSwitchService;
29 29
30 /** 30 /**
31 * 获取商品列表-支持个性化降级 31 * 获取商品列表-支持个性化降级
@@ -37,7 +37,7 @@ public class ProductListController { @@ -37,7 +37,7 @@ public class ProductListController {
37 @ResponseBody 37 @ResponseBody
38 public SearchApiResult productList(HttpServletRequest request) { 38 public SearchApiResult productList(HttpServletRequest request) {
39 Map<String, String> paramMap = HttpServletRequestUtils.transParamType(request); 39 Map<String, String> paramMap = HttpServletRequestUtils.transParamType(request);
40 - return commonSceneProductListService.productList(paramMap); 40 + return productListSwitchService.productList(paramMap);
41 } 41 }
42 42
43 /** 43 /**
@@ -50,7 +50,7 @@ public class ProductListController { @@ -50,7 +50,7 @@ public class ProductListController {
50 public SearchApiResult productListByPost(@RequestBody JSONObject param) { 50 public SearchApiResult productListByPost(@RequestBody JSONObject param) {
51 Map<String, String> paramMap = this.getParamMap(param); 51 Map<String, String> paramMap = this.getParamMap(param);
52 paramMap.remove("uid"); 52 paramMap.remove("uid");
53 - return commonSceneProductListService.productList(paramMap); 53 + return productListSwitchService.productList(paramMap);
54 } 54 }
55 55
56 /** 56 /**
1 -package com.yoho.search.restapi;  
2 -  
3 -import com.yoho.search.common.utils.HttpServletRequestUtils;  
4 -import com.yoho.search.models.SearchApiResult;  
5 -import com.yoho.search.recall.scene.NewSceneRecallService;  
6 -import org.springframework.beans.factory.annotation.Autowired;  
7 -import org.springframework.stereotype.Controller;  
8 -import org.springframework.web.bind.annotation.RequestMapping;  
9 -import org.springframework.web.bind.annotation.RequestMethod;  
10 -import org.springframework.web.bind.annotation.ResponseBody;  
11 -  
12 -import javax.servlet.http.HttpServletRequest;  
13 -import java.util.Map;  
14 -  
15 -@Controller  
16 -public class SceneRecallTestController {  
17 -  
18 - @Autowired  
19 - private NewSceneRecallService newSceneRecallService;  
20 -  
21 - /**  
22 - * 获取品牌列表[不包含全球购]  
23 - *  
24 - * @param request  
25 - * @return  
26 - */  
27 - @RequestMapping(method = RequestMethod.GET, value = "/sceneRecall")  
28 - @ResponseBody  
29 - public SearchApiResult sceneRecall(HttpServletRequest request) {  
30 - Map<String, String> paramMap = HttpServletRequestUtils.transParamType(request);  
31 - return newSceneRecallService.sceneRecall(paramMap);  
32 - }  
33 -}  
1 package com.yoho.search.restapi.scene; 1 package com.yoho.search.restapi.scene;
2 2
3 -import java.util.HashMap;  
4 -import java.util.Map;  
5 - 3 +import com.alibaba.fastjson.JSON;
  4 +import com.alibaba.fastjson.JSONObject;
  5 +import com.yoho.search.common.downgrade.persional.PersionalRateLimit;
  6 +import com.yoho.search.models.PromotionConditions;
  7 +import com.yoho.search.models.SearchApiResult;
  8 +import com.yoho.search.service.scene.promotion.PromotionSceneService;
6 import org.slf4j.Logger; 9 import org.slf4j.Logger;
7 import org.slf4j.LoggerFactory; 10 import org.slf4j.LoggerFactory;
8 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
@@ -12,12 +15,8 @@ import org.springframework.web.bind.annotation.RequestMapping; @@ -12,12 +15,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
12 import org.springframework.web.bind.annotation.RequestMethod; 15 import org.springframework.web.bind.annotation.RequestMethod;
13 import org.springframework.web.bind.annotation.ResponseBody; 16 import org.springframework.web.bind.annotation.ResponseBody;
14 17
15 -import com.alibaba.fastjson.JSON;  
16 -import com.alibaba.fastjson.JSONObject;  
17 -import com.yoho.search.common.downgrade.persional.PersionalRateLimit;  
18 -import com.yoho.search.models.PromotionConditions;  
19 -import com.yoho.search.models.SearchApiResult;  
20 -import com.yoho.search.service.scene.promotion.PromotionSceneService; 18 +import java.util.HashMap;
  19 +import java.util.Map;
21 20
22 /** 21 /**
23 * 商品详情页的促销列表接口 22 * 商品详情页的促销列表接口
@@ -36,9 +35,6 @@ public class PromotionSceneController { @@ -36,9 +35,6 @@ public class PromotionSceneController {
36 35
37 /** 36 /**
38 * 促销列表接口[新] 37 * 促销列表接口[新]
39 - *  
40 - * @param request  
41 - * @return  
42 */ 38 */
43 @PersionalRateLimit(isOrderUseable = true) 39 @PersionalRateLimit(isOrderUseable = true)
44 @RequestMapping(method = RequestMethod.POST, value = "/promotion/productList") 40 @RequestMapping(method = RequestMethod.POST, value = "/promotion/productList")
@@ -57,9 +53,6 @@ public class PromotionSceneController { @@ -57,9 +53,6 @@ public class PromotionSceneController {
57 53
58 /** 54 /**
59 * 促销列表接口[旧] 55 * 促销列表接口[旧]
60 - *  
61 - * @param request  
62 - * @return  
63 */ 56 */
64 @PersionalRateLimit(isOrderUseable = true, name = "/promotion/productList") 57 @PersionalRateLimit(isOrderUseable = true, name = "/promotion/productList")
65 @RequestMapping(method = RequestMethod.POST, value = "/promotion/list") 58 @RequestMapping(method = RequestMethod.POST, value = "/promotion/list")
@@ -78,9 +71,6 @@ public class PromotionSceneController { @@ -78,9 +71,6 @@ public class PromotionSceneController {
78 71
79 /** 72 /**
80 * 促销列表接口[新] 73 * 促销列表接口[新]
81 - *  
82 - * @param request  
83 - * @return  
84 */ 74 */
85 @PersionalRateLimit(isOrderUseable = false) 75 @PersionalRateLimit(isOrderUseable = false)
86 @RequestMapping(method = RequestMethod.POST, value = "/promotion/aggregations") 76 @RequestMapping(method = RequestMethod.POST, value = "/promotion/aggregations")
@@ -99,9 +89,6 @@ public class PromotionSceneController { @@ -99,9 +89,6 @@ public class PromotionSceneController {
99 89
100 /** 90 /**
101 * 促销聚合接口[for app] 91 * 促销聚合接口[for app]
102 - *  
103 - * @param request  
104 - * @return  
105 */ 92 */
106 @RequestMapping(method = RequestMethod.POST, value = "/promotion/selectionsForApp") 93 @RequestMapping(method = RequestMethod.POST, value = "/promotion/selectionsForApp")
107 @ResponseBody 94 @ResponseBody
@@ -119,9 +106,6 @@ public class PromotionSceneController { @@ -119,9 +106,6 @@ public class PromotionSceneController {
119 106
120 /** 107 /**
121 * 促销聚合接口[for pc] 108 * 促销聚合接口[for pc]
122 - *  
123 - * @param request  
124 - * @return  
125 */ 109 */
126 @RequestMapping(method = RequestMethod.POST, value = "/promotion/selectionsForPc") 110 @RequestMapping(method = RequestMethod.POST, value = "/promotion/selectionsForPc")
127 @ResponseBody 111 @ResponseBody
@@ -139,8 +123,6 @@ public class PromotionSceneController { @@ -139,8 +123,6 @@ public class PromotionSceneController {
139 123
140 /** 124 /**
141 * 促销聚合品牌的接口 125 * 促销聚合品牌的接口
142 - *  
143 - * @param request  
144 * @return 126 * @return
145 */ 127 */
146 @RequestMapping(method = RequestMethod.POST, value = "/promotion/aggBrands") 128 @RequestMapping(method = RequestMethod.POST, value = "/promotion/aggBrands")
@@ -20,14 +20,11 @@ import com.alibaba.fastjson.JSON; @@ -20,14 +20,11 @@ import com.alibaba.fastjson.JSON;
20 import com.alibaba.fastjson.JSONObject; 20 import com.alibaba.fastjson.JSONObject;
21 import com.yoho.search.core.es.model.SearchParam; 21 import com.yoho.search.core.es.model.SearchParam;
22 import com.yoho.search.core.es.utils.SearchParamUtils; 22 import com.yoho.search.core.es.utils.SearchParamUtils;
23 -import com.yoho.search.recall.sort.SortRecallSceneService; 23 +import com.yoho.search.recall.sort.SortRecallProductListService;
24 24
25 @Controller 25 @Controller
26 public class TestDslController { 26 public class TestDslController {
27 27
28 - @Autowired  
29 - private SortRecallSceneService sortRecallSceneService;  
30 -  
31 @RequestMapping(method = RequestMethod.GET, value = "/testDsl") 28 @RequestMapping(method = RequestMethod.GET, value = "/testDsl")
32 @ResponseBody 29 @ResponseBody
33 public JSONObject testDsl() { 30 public JSONObject testDsl() {
@@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.ResponseBody; @@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
15 import com.alibaba.fastjson.JSONObject; 15 import com.alibaba.fastjson.JSONObject;
16 import com.yoho.search.common.cache.impls.EhCache; 16 import com.yoho.search.common.cache.impls.EhCache;
17 import com.yoho.search.common.cache.model.CacheObject; 17 import com.yoho.search.common.cache.model.CacheObject;
18 -import com.yoho.search.service.scene.common.CommonSceneProductListService; 18 +import com.yoho.search.service.list.ProductListSwitchService;
19 19
20 @Controller 20 @Controller
21 public class TestEhcacheController { 21 public class TestEhcacheController {
@@ -25,7 +25,7 @@ public class TestEhcacheController { @@ -25,7 +25,7 @@ public class TestEhcacheController {
25 @Autowired 25 @Autowired
26 private EhCache ehCache; 26 private EhCache ehCache;
27 @Autowired 27 @Autowired
28 - private CommonSceneProductListService commonSceneProductListService; 28 + private ProductListSwitchService productListSwitchService;
29 29
30 30
31 @RequestMapping(value = "/testEhcache/put") 31 @RequestMapping(value = "/testEhcache/put")
@@ -33,7 +33,7 @@ public class TestEhcacheController { @@ -33,7 +33,7 @@ public class TestEhcacheController {
33 public Map<String, Object> testPut(int count,int viewNum) { 33 public Map<String, Object> testPut(int count,int viewNum) {
34 Map<String,String> paramMap = new HashMap<String, String>(); 34 Map<String,String> paramMap = new HashMap<String, String>();
35 paramMap.put("viewNum", ""+viewNum); 35 paramMap.put("viewNum", ""+viewNum);
36 - JSONObject productList = (JSONObject)commonSceneProductListService.productList(paramMap).getData(); 36 + JSONObject productList = (JSONObject) productListSwitchService.productList(paramMap).getData();
37 for (int i=1;i<=count;i++) { 37 for (int i=1;i<=count;i++) {
38 ehCache.addOrUpdate("Key"+i, new CacheObject(productList), 1); 38 ehCache.addOrUpdate("Key"+i, new CacheObject(productList), 1);
39 } 39 }
@@ -187,7 +187,7 @@ public class SearchDynamicConfigService { @@ -187,7 +187,7 @@ public class SearchDynamicConfigService {
187 } 187 }
188 188
189 /** 189 /**
190 - * 使用性能高的召回场景【双11打开】 190 + * 使用新的的召回策略
191 * 191 *
192 * @return 192 * @return
193 */ 193 */
@@ -196,6 +196,15 @@ public class SearchDynamicConfigService { @@ -196,6 +196,15 @@ public class SearchDynamicConfigService {
196 } 196 }
197 197
198 /** 198 /**
  199 + * 使用性能高的召回场景【双11打开】
  200 + *
  201 + * @return
  202 + */
  203 + public boolean searchPersionalPerfamanceStrategyOpen() {
  204 + return configReader.getBoolean("search.persional.performancestrategy.open", false);
  205 + }
  206 +
  207 + /**
199 * 品类页使用新的召回机制-【双11关闭】 208 * 品类页使用新的召回机制-【双11关闭】
200 */ 209 */
201 public boolean isSortPageRecallOpen() { 210 public boolean isSortPageRecallOpen() {
  1 +package com.yoho.search.service.list;
  2 +
  3 +import com.alibaba.fastjson.JSONObject;
  4 +import com.yoho.search.base.utils.ISearchConstants;
  5 +import com.yoho.search.common.cache.CacheType;
  6 +import com.yoho.search.common.cache.aop.SearchCacheAble;
  7 +import com.yoho.search.core.es.model.SearchParam;
  8 +import com.yoho.search.core.es.model.SearchResult;
  9 +import com.yoho.search.models.SearchApiResult;
  10 +import com.yoho.search.service.base.ProductListSortService;
  11 +import com.yoho.search.service.base.SearchCommonService;
  12 +import com.yoho.search.service.base.index.ProductIndexBaseService;
  13 +import com.yoho.search.service.helper.SearchParamHelper;
  14 +import com.yoho.search.service.helper.SearchSortHelper;
  15 +import org.apache.commons.lang.StringUtils;
  16 +import org.slf4j.Logger;
  17 +import org.slf4j.LoggerFactory;
  18 +import org.springframework.beans.factory.annotation.Autowired;
  19 +import org.springframework.stereotype.Service;
  20 +
  21 +import java.util.*;
  22 +
  23 +@Service
  24 +public class DefaultProductListService {
  25 +
  26 + private static final Logger logger = LoggerFactory.getLogger(DefaultProductListService.class);
  27 +
  28 + @Autowired
  29 + private ProductListSortService productListSortService;
  30 + @Autowired
  31 + private SearchParamHelper searchParamHelper;
  32 + @Autowired
  33 + private SearchSortHelper searchSortHelper;
  34 + @Autowired
  35 + private ProductIndexBaseService productIndexBaseService;
  36 + @Autowired
  37 + private SearchCommonService searchCommonService;
  38 +
  39 + /**
  40 + * 个性化的列表接口-基于向量的个性化缓存-估计命中率会很低
  41 + *
  42 + * @param paramMap
  43 + * @return
  44 + */
  45 + @SearchCacheAble(cacheName = "PRODUCT_LIST_DEFAULT_PERSIONAL", cacheType = CacheType.SEARCH_REDIS, cacheInMinute = 10)
  46 + public SearchApiResult productListForDefaultPersional(Map<String, String> paramMap) {
  47 + return this.productList(paramMap);
  48 + }
  49 +
  50 + /**
  51 + * 非个性化的列表接口-去除uid缓存
  52 + *
  53 + * @order不为空,或者无uid
  54 + * @param paramMap
  55 + * @return
  56 + */
  57 + @SearchCacheAble(cacheName = "PRODUCT_LIST_NOT_PERSIONAL", cacheType = CacheType.SEARCH_REDIS, cacheInMinute = 10, excludeParams = { "uid", "firstProductSkn" })
  58 + public SearchApiResult productListNotPersional(Map<String, String> paramMap) {
  59 + return this.productList(paramMap);
  60 + }
  61 +
  62 + private SearchApiResult productList(Map<String, String> paramMap){
  63 + try {
  64 + // 1)验证查询条数
  65 + int pageSize = StringUtils.isBlank(paramMap.get("viewNum")) ? 10 : Integer.parseInt(paramMap.get("viewNum"));
  66 + int page = StringUtils.isBlank(paramMap.get("page")) ? 1 : Integer.parseInt(paramMap.get("page"));
  67 + if (page < 1 || pageSize < 0 || page * pageSize > 1000000) {
  68 + return new SearchApiResult().setCode(400).setMessage("分页参数不合法");
  69 + }
  70 + if (pageSize > 100) {
  71 + pageSize = 100;
  72 + }
  73 + // 2)构建基本查询参数
  74 + SearchParam searchParam = searchParamHelper.buildWithPersional(paramMap, true);// 这个必须用buildWithPersional构造,有些特殊的逻辑-如firstSkn在里面
  75 + searchParam.setAggregationBuilders(null);
  76 + searchParam.setOffset((page - 1) * pageSize);
  77 + searchParam.setSize(pageSize);
  78 + // 3)设置排序字段
  79 + searchParam.setSortBuilders(searchSortHelper.buildSortList(paramMap));
  80 + // 4)设置返回的参数【节省带宽】
  81 + List<String> includeFields = productIndexBaseService.getProductIndexIncludeFields();
  82 + searchParam.setIncludeFields(includeFields);
  83 + SearchResult searchResult = searchCommonService.doSearch(ISearchConstants.INDEX_NAME_PRODUCT_INDEX, searchParam);
  84 + // 5)构造返回结果
  85 + JSONObject dataMap = new JSONObject();
  86 + dataMap.put("total", searchResult.getTotal());
  87 + dataMap.put("page", searchResult.getPage());
  88 + dataMap.put("page_size", searchParam.getSize());
  89 + dataMap.put("page_total", searchResult.getTotalPage());
  90 + List<Map<String, Object>> product_list = productIndexBaseService.getProductListWithPricePlan(searchResult.getResultList());
  91 + dataMap.put("product_list", productListSortService.sortProductList(product_list));// 处理一下商品的顺序;
  92 + return new SearchApiResult().setData(dataMap);
  93 + } catch (Exception e) {
  94 + logger.error(e.getMessage(), e);
  95 + return new SearchApiResult().setData(null).setCode(500);
  96 + }
  97 + }
  98 +
  99 +}
1 -package com.yoho.search.service.scene.common; 1 +package com.yoho.search.service.list;
2 2
3 import java.util.List; 3 import java.util.List;
4 import java.util.Map; 4 import java.util.Map;
5 5
  6 +import com.yoho.search.service.list.ProductListSwitchService;
  7 +import com.yoho.search.service.scene.common.AbstractCacheAbleService;
6 import org.apache.commons.lang.StringUtils; 8 import org.apache.commons.lang.StringUtils;
7 import org.slf4j.Logger; 9 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory; 10 import org.slf4j.LoggerFactory;
@@ -24,7 +26,7 @@ import com.yoho.search.service.helper.SearchSortHelper; @@ -24,7 +26,7 @@ import com.yoho.search.service.helper.SearchSortHelper;
24 26
25 @Service 27 @Service
26 public class FuzzySceneProductListService extends AbstractCacheAbleService { 28 public class FuzzySceneProductListService extends AbstractCacheAbleService {
27 - private static final Logger logger = LoggerFactory.getLogger(CommonSceneProductListService.class); 29 + private static final Logger logger = LoggerFactory.getLogger(ProductListSwitchService.class);
28 30
29 @Autowired 31 @Autowired
30 private SearchCommonService searchCommonService; 32 private SearchCommonService searchCommonService;
1 -package com.yoho.search.service.scene.common; 1 +package com.yoho.search.service.list;
2 2
3 -import java.util.Map;  
4 -  
5 -import com.yoho.search.recall.scene.NewSceneRecallService; 3 +import com.yoho.search.models.SearchApiResult;
  4 +import com.yoho.search.recall.common.CommonRecallProductListService;
  5 +import com.yoho.search.recall.scene.SceneRecallProductListService;
  6 +import com.yoho.search.recall.sort.SortRecallProductListService;
  7 +import com.yoho.search.service.base.SearchDynamicConfigService;
  8 +import com.yoho.search.service.helper.SearchCommonHelper;
6 import org.apache.commons.collections.MapUtils; 9 import org.apache.commons.collections.MapUtils;
7 import org.apache.commons.lang.StringUtils; 10 import org.apache.commons.lang.StringUtils;
8 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
10 13
11 -import com.yoho.search.models.SearchApiResult;  
12 -import com.yoho.search.service.base.SearchDynamicConfigService;  
13 -import com.yoho.search.recall.common.ProductListServiceHelper; 14 +import java.util.Map;
14 15
15 @Service 16 @Service
16 -public class CommonSceneProductListService { 17 +public class ProductListSwitchService {
17 18
18 @Autowired 19 @Autowired
19 private SearchDynamicConfigService searchDynamicConfigService; 20 private SearchDynamicConfigService searchDynamicConfigService;
20 @Autowired 21 @Autowired
21 - private ProductListServiceHelper productListServiceHelper; 22 + private DefaultProductListService defaultProductListService;
22 @Autowired 23 @Autowired
23 - private NewSceneRecallService newSceneRecallService; 24 + private CommonRecallProductListService commonRecallProductListService;
  25 + @Autowired
  26 + private SceneRecallProductListService sceneRecallProductListService;
  27 + @Autowired
  28 + private SortRecallProductListService sortRecallProductListService;
  29 + @Autowired
  30 + private SearchCommonHelper searchCommonHelper;
24 31
25 /** 32 /**
26 * 各商品列表的入口 33 * 各商品列表的入口
@@ -31,15 +38,25 @@ public class CommonSceneProductListService { @@ -31,15 +38,25 @@ public class CommonSceneProductListService {
31 public SearchApiResult productList(Map<String, String> paramMap) { 38 public SearchApiResult productList(Map<String, String> paramMap) {
32 // 1、不是个性化,则直接走费个性化接口 39 // 1、不是个性化,则直接走费个性化接口
33 if (!this.isPersionalScene(paramMap)) { 40 if (!this.isPersionalScene(paramMap)) {
34 - return productListServiceHelper.productListNotPersional(paramMap); 41 + return defaultProductListService.productListNotPersional(paramMap);
35 } 42 }
36 - // 2、个性化时根据开关,决定是否使用高性能的场景 43 + // 2、个性化时根据开关,决定是否使用高性能的场景-双11专用
  44 + boolean perfamanceStrategyOpen = searchDynamicConfigService.searchPersionalPerfamanceStrategyOpen();
  45 + if(perfamanceStrategyOpen){
  46 + return commonRecallProductListService.productList(paramMap);
  47 + }
  48 + // 3、品类页使用单独的召回页
  49 + boolean sortPageRecallOpen = searchDynamicConfigService.isSortPageRecallOpen();
  50 + if(sortPageRecallOpen && searchCommonHelper.isSortPageDefault(paramMap)){
  51 + return sortRecallProductListService.recallProductList(paramMap);
  52 + }
  53 + // 4、全部使用新的召回策略
37 boolean searchPersionalNewStrategyOpen = searchDynamicConfigService.searchPersionalNewStrategyOpen(); 54 boolean searchPersionalNewStrategyOpen = searchDynamicConfigService.searchPersionalNewStrategyOpen();
38 if (searchPersionalNewStrategyOpen) { 55 if (searchPersionalNewStrategyOpen) {
39 - return productListServiceHelper.productListForNewPersional(paramMap);  
40 - } else {  
41 - return productListServiceHelper.productListForDefaultPersional(paramMap); 56 + return sceneRecallProductListService.productList(paramMap);
42 } 57 }
  58 + // 4、使用向量版本的个性化方案
  59 + return defaultProductListService.productListForDefaultPersional(paramMap);
43 } 60 }
44 61
45 private boolean isPersionalScene(Map<String, String> paramMap) { 62 private boolean isPersionalScene(Map<String, String> paramMap) {
@@ -54,4 +71,5 @@ public class CommonSceneProductListService { @@ -54,4 +71,5 @@ public class CommonSceneProductListService {
54 return false; 71 return false;
55 } 72 }
56 73
  74 +
57 } 75 }
1 -package com.yoho.search.service.press;  
2 -  
3 -import com.alibaba.fastjson.JSONObject;  
4 -import com.yoho.search.base.utils.DateUtil;  
5 -import com.yoho.search.base.utils.ISearchConstants;  
6 -import com.yoho.search.base.utils.ProductIndexEsField;  
7 -import com.yoho.search.core.es.model.SearchParam;  
8 -import com.yoho.search.core.es.model.SearchResult;  
9 -import com.yoho.search.models.SearchApiResult;  
10 -import com.yoho.search.service.base.SearchCommonService;  
11 -import org.apache.commons.lang.StringUtils;  
12 -import org.elasticsearch.index.query.BoolQueryBuilder;  
13 -import org.elasticsearch.index.query.QueryBuilders;  
14 -import org.elasticsearch.script.Script;  
15 -import org.elasticsearch.search.sort.ScriptSortBuilder.ScriptSortType;  
16 -import org.elasticsearch.search.sort.SortBuilder;  
17 -import org.elasticsearch.search.sort.SortBuilders;  
18 -import org.elasticsearch.search.sort.SortOrder;  
19 -import org.springframework.beans.factory.annotation.Autowired;  
20 -import org.springframework.stereotype.Service;  
21 -  
22 -import java.util.ArrayList;  
23 -import java.util.Arrays;  
24 -import java.util.Date;  
25 -import java.util.List;  
26 -  
27 -@Service  
28 -public class PressTestService {  
29 -  
30 - @Autowired  
31 - private SearchCommonService searchCommonService;  
32 -  
33 - private SearchParam buildSearchParam(String brandIds, String smallSortIds, int size, String orderField, boolean withRange) {  
34 - SearchParam searchParam = new SearchParam();  
35 - // 设置filter  
36 - BoolQueryBuilder filter = QueryBuilders.boolQuery();  
37 - if (!StringUtils.isBlank(brandIds)) {  
38 - filter.must(QueryBuilders.termsQuery(ProductIndexEsField.brandId, brandIds.split(",")));  
39 - }  
40 - if (!StringUtils.isBlank(smallSortIds)) {  
41 - filter.must(QueryBuilders.termsQuery(ProductIndexEsField.smallSortId, smallSortIds.split(",")));  
42 - }  
43 - filter.must(QueryBuilders.termQuery(ProductIndexEsField.status, "1"));  
44 - if (withRange) {  
45 - filter.must(QueryBuilders.rangeQuery(ProductIndexEsField.firstShelveTime).lt(DateUtil.getTimeSecondByDate(DateUtil.addDay(new Date(), -(int) (90 * Math.random())))));  
46 - }  
47 - searchParam.setFiter(filter);  
48 -  
49 - // 设置分页参数  
50 - searchParam.setOffset(0);  
51 - searchParam.setSize(size);  
52 -  
53 - // 设置order  
54 - searchParam.setSortBuilders(this.sortBuilders(orderField));  
55 -  
56 - // 设置返回字段  
57 - searchParam.setIncludeFields(Arrays.asList("productSkn", "productName"));  
58 - return searchParam;  
59 - }  
60 -  
61 - private List<SortBuilder<?>> sortBuilders(String orderField) {  
62 - List<SortBuilder<?>> sortBuilders = new ArrayList<SortBuilder<?>>();  
63 - if (StringUtils.isNotBlank(orderField)) {  
64 - if ("random".equals(orderField)) {  
65 - sortBuilders.add(SortBuilders.scriptSort(new Script("Math.random()"), ScriptSortType.NUMBER).order(SortOrder.ASC));  
66 - } else {  
67 - sortBuilders.add(SortBuilders.fieldSort(orderField).order(SortOrder.DESC));  
68 - }  
69 - }  
70 - sortBuilders.add(SortBuilders.fieldSort(ProductIndexEsField.id).order(SortOrder.DESC));  
71 - return sortBuilders;  
72 - }  
73 -  
74 - public SearchApiResult pressProductIndex(String brandIds, String smallSortIds, int size, String order, boolean withRange) {  
75 - // 设置order  
76 - SearchParam searchParam = this.buildSearchParam(brandIds, smallSortIds, size, order, withRange);  
77 - SearchResult searchResult = searchCommonService.doSearch(ISearchConstants.INDEX_NAME_PRODUCT_INDEX, searchParam);  
78 - JSONObject result = new JSONObject();  
79 - result.put("product_list", searchResult.getResultList());  
80 - result.put("total", searchResult.getTotal());  
81 - return new SearchApiResult().setData(result);  
82 - }  
83 -  
84 - public SearchApiResult pressProductBaseIndex(String brandIds, String smallSortIds, int size, String order, boolean withRange) {  
85 - // 设置order  
86 - SearchParam searchParam = this.buildSearchParam(brandIds, smallSortIds, size, order, withRange);  
87 - SearchResult searchResult = searchCommonService.doSearch(ISearchConstants.INDEX_NAME_PRODUCT_BASE_INDEX, searchParam);  
88 - JSONObject result = new JSONObject();  
89 - result.put("product_list", searchResult.getResultList());  
90 - result.put("total", searchResult.getTotal());  
91 - return new SearchApiResult().setData(result);  
92 - }  
93 -  
94 -}  
1 package com.yoho.search.service.scene; 1 package com.yoho.search.service.scene;
2 2
3 -import java.util.Map;  
4 -  
5 -import org.apache.commons.lang3.StringUtils;  
6 -import org.slf4j.Logger;  
7 -import org.slf4j.LoggerFactory;  
8 -import org.springframework.beans.factory.annotation.Autowired;  
9 -import org.springframework.stereotype.Service;  
10 -  
11 import com.yoho.search.base.utils.SearchPageIdDefine; 3 import com.yoho.search.base.utils.SearchPageIdDefine;
12 import com.yoho.search.common.utils.SearchApiResultUtils; 4 import com.yoho.search.common.utils.SearchApiResultUtils;
13 import com.yoho.search.models.SearchApiResult; 5 import com.yoho.search.models.SearchApiResult;
14 import com.yoho.search.service.base.SearchRequestParams; 6 import com.yoho.search.service.base.SearchRequestParams;
  7 +import com.yoho.search.service.list.ProductListSwitchService;
15 import com.yoho.search.service.scene.common.AbstractSceneService; 8 import com.yoho.search.service.scene.common.AbstractSceneService;
16 -import com.yoho.search.service.scene.common.CommonSceneProductListService;  
17 import com.yoho.search.service.scene.common.SceneSelectionsService; 9 import com.yoho.search.service.scene.common.SceneSelectionsService;
  10 +import org.apache.commons.lang3.StringUtils;
  11 +import org.slf4j.Logger;
  12 +import org.slf4j.LoggerFactory;
  13 +import org.springframework.beans.factory.annotation.Autowired;
  14 +import org.springframework.stereotype.Service;
  15 +
  16 +import java.util.Map;
18 17
19 @Service 18 @Service
20 public class BrandSceneService extends AbstractSceneService { 19 public class BrandSceneService extends AbstractSceneService {
@@ -22,7 +21,7 @@ public class BrandSceneService extends AbstractSceneService { @@ -22,7 +21,7 @@ public class BrandSceneService extends AbstractSceneService {
22 private static final Logger logger = LoggerFactory.getLogger(BrandSceneService.class); 21 private static final Logger logger = LoggerFactory.getLogger(BrandSceneService.class);
23 22
24 @Autowired 23 @Autowired
25 - private CommonSceneProductListService sceneProductListService; 24 + private ProductListSwitchService sceneProductListService;
26 @Autowired 25 @Autowired
27 private SceneSelectionsService sceneSelectionsService; 26 private SceneSelectionsService sceneSelectionsService;
28 27
1 package com.yoho.search.service.scene; 1 package com.yoho.search.service.scene;
2 2
3 -import java.util.ArrayList;  
4 -import java.util.Collection;  
5 -import java.util.Collections;  
6 -import java.util.Comparator;  
7 -import java.util.HashMap;  
8 -import java.util.HashSet;  
9 -import java.util.Iterator;  
10 -import java.util.List;  
11 -import java.util.Map;  
12 -import java.util.stream.Collectors;  
13 -  
14 -import org.elasticsearch.search.SearchHit;  
15 -import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;  
16 -import org.elasticsearch.search.aggregations.Aggregation;  
17 -import org.elasticsearch.search.aggregations.AggregationBuilders;  
18 -import org.elasticsearch.search.aggregations.Aggregations;  
19 -import org.elasticsearch.search.aggregations.bucket.MultiBucketsAggregation;  
20 -import org.elasticsearch.search.aggregations.bucket.MultiBucketsAggregation.Bucket;  
21 -import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;  
22 -import org.elasticsearch.search.aggregations.metrics.tophits.TopHits;  
23 -import org.slf4j.Logger;  
24 -import org.slf4j.LoggerFactory;  
25 -import org.springframework.beans.factory.annotation.Autowired;  
26 -import org.springframework.stereotype.Service;  
27 -  
28 import com.alibaba.fastjson.JSONObject; 3 import com.alibaba.fastjson.JSONObject;
29 import com.yoho.search.base.utils.ISearchConstants; 4 import com.yoho.search.base.utils.ISearchConstants;
30 import com.yoho.search.base.utils.ProductIndexEsField; 5 import com.yoho.search.base.utils.ProductIndexEsField;
@@ -40,11 +15,26 @@ import com.yoho.search.models.SortWithSizesVO; @@ -40,11 +15,26 @@ import com.yoho.search.models.SortWithSizesVO;
40 import com.yoho.search.service.base.SearchCommonService; 15 import com.yoho.search.service.base.SearchCommonService;
41 import com.yoho.search.service.base.SearchRequestParams; 16 import com.yoho.search.service.base.SearchRequestParams;
42 import com.yoho.search.service.base.index.SizeIndexBaseService; 17 import com.yoho.search.service.base.index.SizeIndexBaseService;
43 -import com.yoho.search.service.helper.SearchCommonHelper;  
44 import com.yoho.search.service.helper.SearchParamHelper; 18 import com.yoho.search.service.helper.SearchParamHelper;
  19 +import com.yoho.search.service.list.ProductListSwitchService;
45 import com.yoho.search.service.scene.common.AbstractSceneService; 20 import com.yoho.search.service.scene.common.AbstractSceneService;
46 -import com.yoho.search.service.scene.common.CommonSceneProductListService;  
47 import com.yoho.search.service.scene.common.SceneSelectionsService; 21 import com.yoho.search.service.scene.common.SceneSelectionsService;
  22 +import org.elasticsearch.search.SearchHit;
  23 +import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
  24 +import org.elasticsearch.search.aggregations.Aggregation;
  25 +import org.elasticsearch.search.aggregations.AggregationBuilders;
  26 +import org.elasticsearch.search.aggregations.Aggregations;
  27 +import org.elasticsearch.search.aggregations.bucket.MultiBucketsAggregation;
  28 +import org.elasticsearch.search.aggregations.bucket.MultiBucketsAggregation.Bucket;
  29 +import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
  30 +import org.elasticsearch.search.aggregations.metrics.tophits.TopHits;
  31 +import org.slf4j.Logger;
  32 +import org.slf4j.LoggerFactory;
  33 +import org.springframework.beans.factory.annotation.Autowired;
  34 +import org.springframework.stereotype.Service;
  35 +
  36 +import java.util.*;
  37 +import java.util.stream.Collectors;
48 38
49 @Service 39 @Service
50 public class BreakSizeSceneService extends AbstractSceneService { 40 public class BreakSizeSceneService extends AbstractSceneService {
@@ -56,11 +46,9 @@ public class BreakSizeSceneService extends AbstractSceneService { @@ -56,11 +46,9 @@ public class BreakSizeSceneService extends AbstractSceneService {
56 @Autowired 46 @Autowired
57 private SizeIndexBaseService sizeIndexBaseService; 47 private SizeIndexBaseService sizeIndexBaseService;
58 @Autowired 48 @Autowired
59 - private SearchCommonHelper searchCommonHelper;  
60 - @Autowired  
61 private SearchParamHelper searchParamHelper; 49 private SearchParamHelper searchParamHelper;
62 @Autowired 50 @Autowired
63 - private CommonSceneProductListService sceneProductListService; 51 + private ProductListSwitchService sceneProductListService;
64 @Autowired 52 @Autowired
65 private SceneSelectionsService sceneSelectionsService; 53 private SceneSelectionsService sceneSelectionsService;
66 54
1 package com.yoho.search.service.scene; 1 package com.yoho.search.service.scene;
2 2
3 -import java.util.Map;  
4 -  
5 -import org.slf4j.Logger;  
6 -import org.slf4j.LoggerFactory;  
7 -import org.springframework.beans.factory.annotation.Autowired;  
8 -import org.springframework.stereotype.Service;  
9 -  
10 import com.yoho.search.base.utils.SearchPageIdDefine; 3 import com.yoho.search.base.utils.SearchPageIdDefine;
11 import com.yoho.search.common.utils.SearchApiResultUtils; 4 import com.yoho.search.common.utils.SearchApiResultUtils;
12 import com.yoho.search.models.SearchApiResult; 5 import com.yoho.search.models.SearchApiResult;
  6 +import com.yoho.search.service.list.ProductListSwitchService;
13 import com.yoho.search.service.scene.common.AbstractSceneService; 7 import com.yoho.search.service.scene.common.AbstractSceneService;
14 -import com.yoho.search.service.scene.common.CommonSceneProductListService;  
15 import com.yoho.search.service.scene.common.SceneSelectionsService; 8 import com.yoho.search.service.scene.common.SceneSelectionsService;
  9 +import org.slf4j.Logger;
  10 +import org.slf4j.LoggerFactory;
  11 +import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.stereotype.Service;
  13 +
  14 +import java.util.Map;
16 15
17 @Service 16 @Service
18 public class CommonSceneService extends AbstractSceneService { 17 public class CommonSceneService extends AbstractSceneService {
@@ -20,7 +19,7 @@ public class CommonSceneService extends AbstractSceneService { @@ -20,7 +19,7 @@ public class CommonSceneService extends AbstractSceneService {
20 private static final Logger logger = LoggerFactory.getLogger(CouponSceneService.class); 19 private static final Logger logger = LoggerFactory.getLogger(CouponSceneService.class);
21 20
22 @Autowired 21 @Autowired
23 - private CommonSceneProductListService sceneProductListService; 22 + private ProductListSwitchService sceneProductListService;
24 @Autowired 23 @Autowired
25 private SceneSelectionsService sceneSelectionsService; 24 private SceneSelectionsService sceneSelectionsService;
26 25
1 package com.yoho.search.service.scene; 1 package com.yoho.search.service.scene;
2 2
3 -import java.util.Map;  
4 -  
5 -import org.slf4j.Logger;  
6 -import org.slf4j.LoggerFactory;  
7 -import org.springframework.beans.factory.annotation.Autowired;  
8 -import org.springframework.stereotype.Service;  
9 -  
10 import com.yoho.search.base.utils.SearchPageIdDefine; 3 import com.yoho.search.base.utils.SearchPageIdDefine;
11 import com.yoho.search.common.utils.SearchApiResultUtils; 4 import com.yoho.search.common.utils.SearchApiResultUtils;
12 import com.yoho.search.models.SearchApiResult; 5 import com.yoho.search.models.SearchApiResult;
13 import com.yoho.search.service.base.SearchRequestParams; 6 import com.yoho.search.service.base.SearchRequestParams;
  7 +import com.yoho.search.service.list.ProductListSwitchService;
14 import com.yoho.search.service.scene.common.AbstractSceneService; 8 import com.yoho.search.service.scene.common.AbstractSceneService;
15 -import com.yoho.search.service.scene.common.CommonSceneProductListService;  
16 import com.yoho.search.service.scene.common.SceneSelectionsService; 9 import com.yoho.search.service.scene.common.SceneSelectionsService;
  10 +import org.slf4j.Logger;
  11 +import org.slf4j.LoggerFactory;
  12 +import org.springframework.beans.factory.annotation.Autowired;
  13 +import org.springframework.stereotype.Service;
  14 +
  15 +import java.util.Map;
17 16
18 @Service 17 @Service
19 public class CouponSceneService extends AbstractSceneService { 18 public class CouponSceneService extends AbstractSceneService {
@@ -21,7 +20,7 @@ public class CouponSceneService extends AbstractSceneService { @@ -21,7 +20,7 @@ public class CouponSceneService extends AbstractSceneService {
21 private static final Logger logger = LoggerFactory.getLogger(CouponSceneService.class); 20 private static final Logger logger = LoggerFactory.getLogger(CouponSceneService.class);
22 21
23 @Autowired 22 @Autowired
24 - private CommonSceneProductListService sceneProductListService; 23 + private ProductListSwitchService sceneProductListService;
25 @Autowired 24 @Autowired
26 private SceneSelectionsService sceneSelectionsService; 25 private SceneSelectionsService sceneSelectionsService;
27 26
@@ -5,7 +5,7 @@ import com.yoho.search.common.utils.SearchApiResultUtils; @@ -5,7 +5,7 @@ import com.yoho.search.common.utils.SearchApiResultUtils;
5 import com.yoho.search.models.SearchApiResult; 5 import com.yoho.search.models.SearchApiResult;
6 import com.yoho.search.service.base.SearchRequestParams; 6 import com.yoho.search.service.base.SearchRequestParams;
7 import com.yoho.search.service.scene.common.AbstractSceneService; 7 import com.yoho.search.service.scene.common.AbstractSceneService;
8 -import com.yoho.search.service.scene.common.CommonSceneProductListService; 8 +import com.yoho.search.service.list.ProductListSwitchService;
9 import org.slf4j.Logger; 9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory; 10 import org.slf4j.LoggerFactory;
11 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,7 +22,7 @@ public class FreeShippingOrderSceneService extends AbstractSceneService { @@ -22,7 +22,7 @@ public class FreeShippingOrderSceneService extends AbstractSceneService {
22 private final Logger logger = LoggerFactory.getLogger(this.getClass()); 22 private final Logger logger = LoggerFactory.getLogger(this.getClass());
23 23
24 @Autowired 24 @Autowired
25 - private CommonSceneProductListService sceneProductListService; 25 + private ProductListSwitchService sceneProductListService;
26 26
27 @Override 27 @Override
28 public void addParamsToParamMap(Map<String, String> paramMap) { 28 public void addParamsToParamMap(Map<String, String> paramMap) {
@@ -5,6 +5,7 @@ import java.util.concurrent.CompletableFuture; @@ -5,6 +5,7 @@ import java.util.concurrent.CompletableFuture;
5 import java.util.concurrent.ExecutorService; 5 import java.util.concurrent.ExecutorService;
6 import java.util.concurrent.Executors; 6 import java.util.concurrent.Executors;
7 7
  8 +import com.yoho.search.service.list.FuzzySceneProductListService;
8 import org.apache.commons.lang.StringUtils; 9 import org.apache.commons.lang.StringUtils;
9 import org.slf4j.Logger; 10 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory; 11 import org.slf4j.LoggerFactory;
@@ -21,10 +22,7 @@ import com.yoho.search.service.helper.SearchCommonHelper; @@ -21,10 +22,7 @@ import com.yoho.search.service.helper.SearchCommonHelper;
21 import com.yoho.search.service.helper.SearchKeyWordHelper; 22 import com.yoho.search.service.helper.SearchKeyWordHelper;
22 import com.yoho.search.service.scene.aggregations.SceneAggregationsHelper; 23 import com.yoho.search.service.scene.aggregations.SceneAggregationsHelper;
23 import com.yoho.search.service.scene.common.AbstractSceneService; 24 import com.yoho.search.service.scene.common.AbstractSceneService;
24 -import com.yoho.search.service.scene.common.FuzzySceneProductListService;  
25 import com.yoho.search.service.scene.common.SceneSelectionsService; 25 import com.yoho.search.service.scene.common.SceneSelectionsService;
26 -import com.yoho.search.service.service.IAggRecommendService;  
27 -import com.yoho.search.service.service.IProductIndexService;  
28 import com.yoho.search.service.service.ISearchRecommendService; 26 import com.yoho.search.service.service.ISearchRecommendService;
29 27
30 @Service 28 @Service
@@ -16,7 +16,7 @@ import com.yoho.search.core.es.agg.IAggregation; @@ -16,7 +16,7 @@ import com.yoho.search.core.es.agg.IAggregation;
16 import com.yoho.search.models.SearchApiResult; 16 import com.yoho.search.models.SearchApiResult;
17 import com.yoho.search.service.base.SearchRequestParams; 17 import com.yoho.search.service.base.SearchRequestParams;
18 import com.yoho.search.service.scene.common.AbstractSceneService; 18 import com.yoho.search.service.scene.common.AbstractSceneService;
19 -import com.yoho.search.service.scene.common.CommonSceneProductListService; 19 +import com.yoho.search.service.list.ProductListSwitchService;
20 import com.yoho.search.service.scene.common.SceneSelectionsService; 20 import com.yoho.search.service.scene.common.SceneSelectionsService;
21 21
22 @Service 22 @Service
@@ -25,7 +25,7 @@ public class NewArrivalSceneService extends AbstractSceneService { @@ -25,7 +25,7 @@ public class NewArrivalSceneService extends AbstractSceneService {
25 private static final Logger logger = LoggerFactory.getLogger(NewArrivalSceneService.class); 25 private static final Logger logger = LoggerFactory.getLogger(NewArrivalSceneService.class);
26 26
27 @Autowired 27 @Autowired
28 - private CommonSceneProductListService sceneProductListService; 28 + private ProductListSwitchService sceneProductListService;
29 @Autowired 29 @Autowired
30 private SceneSelectionsService sceneSelectionsService; 30 private SceneSelectionsService sceneSelectionsService;
31 31
@@ -13,7 +13,7 @@ import com.yoho.search.common.utils.SearchApiResultUtils; @@ -13,7 +13,7 @@ import com.yoho.search.common.utils.SearchApiResultUtils;
13 import com.yoho.search.models.SearchApiResult; 13 import com.yoho.search.models.SearchApiResult;
14 import com.yoho.search.service.base.SearchRequestParams; 14 import com.yoho.search.service.base.SearchRequestParams;
15 import com.yoho.search.service.scene.common.AbstractSceneService; 15 import com.yoho.search.service.scene.common.AbstractSceneService;
16 -import com.yoho.search.service.scene.common.CommonSceneProductListService; 16 +import com.yoho.search.service.list.ProductListSwitchService;
17 import com.yoho.search.service.scene.common.SceneSelectionsService; 17 import com.yoho.search.service.scene.common.SceneSelectionsService;
18 18
19 @Service 19 @Service
@@ -22,7 +22,7 @@ public class ProductPoolSceneService extends AbstractSceneService { @@ -22,7 +22,7 @@ public class ProductPoolSceneService extends AbstractSceneService {
22 private static final Logger logger = LoggerFactory.getLogger(ProductPoolSceneService.class); 22 private static final Logger logger = LoggerFactory.getLogger(ProductPoolSceneService.class);
23 23
24 @Autowired 24 @Autowired
25 - private CommonSceneProductListService sceneProductListService; 25 + private ProductListSwitchService sceneProductListService;
26 @Autowired 26 @Autowired
27 private SceneSelectionsService sceneSelectionsService; 27 private SceneSelectionsService sceneSelectionsService;
28 28
@@ -16,7 +16,7 @@ import com.yoho.search.core.es.agg.IAggregation; @@ -16,7 +16,7 @@ import com.yoho.search.core.es.agg.IAggregation;
16 import com.yoho.search.models.SearchApiResult; 16 import com.yoho.search.models.SearchApiResult;
17 import com.yoho.search.service.base.SearchRequestParams; 17 import com.yoho.search.service.base.SearchRequestParams;
18 import com.yoho.search.service.scene.common.AbstractSceneService; 18 import com.yoho.search.service.scene.common.AbstractSceneService;
19 -import com.yoho.search.service.scene.common.CommonSceneProductListService; 19 +import com.yoho.search.service.list.ProductListSwitchService;
20 import com.yoho.search.service.scene.common.SceneSelectionsService; 20 import com.yoho.search.service.scene.common.SceneSelectionsService;
21 21
22 @Service 22 @Service
@@ -25,7 +25,7 @@ public class ReducePriceSceneService extends AbstractSceneService { @@ -25,7 +25,7 @@ public class ReducePriceSceneService extends AbstractSceneService {
25 private static final Logger logger = LoggerFactory.getLogger(ReducePriceSceneService.class); 25 private static final Logger logger = LoggerFactory.getLogger(ReducePriceSceneService.class);
26 26
27 @Autowired 27 @Autowired
28 - private CommonSceneProductListService sceneProductListService; 28 + private ProductListSwitchService sceneProductListService;
29 @Autowired 29 @Autowired
30 private SceneSelectionsService sceneSelectionsService; 30 private SceneSelectionsService sceneSelectionsService;
31 31
@@ -15,7 +15,7 @@ import com.yoho.search.core.es.agg.IAggregation; @@ -15,7 +15,7 @@ import com.yoho.search.core.es.agg.IAggregation;
15 import com.yoho.search.models.SearchApiResult; 15 import com.yoho.search.models.SearchApiResult;
16 import com.yoho.search.service.base.SearchRequestParams; 16 import com.yoho.search.service.base.SearchRequestParams;
17 import com.yoho.search.service.scene.common.AbstractSceneService; 17 import com.yoho.search.service.scene.common.AbstractSceneService;
18 -import com.yoho.search.service.scene.common.CommonSceneProductListService; 18 +import com.yoho.search.service.list.ProductListSwitchService;
19 import com.yoho.search.service.scene.common.SceneSelectionsService; 19 import com.yoho.search.service.scene.common.SceneSelectionsService;
20 20
21 @Service 21 @Service
@@ -24,7 +24,7 @@ public class ShopSceneService extends AbstractSceneService { @@ -24,7 +24,7 @@ public class ShopSceneService extends AbstractSceneService {
24 private static final Logger logger = LoggerFactory.getLogger(ShopSceneService.class); 24 private static final Logger logger = LoggerFactory.getLogger(ShopSceneService.class);
25 25
26 @Autowired 26 @Autowired
27 - private CommonSceneProductListService sceneProductListService; 27 + private ProductListSwitchService sceneProductListService;
28 @Autowired 28 @Autowired
29 private SceneSelectionsService sceneSelectionsService; 29 private SceneSelectionsService sceneSelectionsService;
30 30
@@ -3,14 +3,11 @@ package com.yoho.search.service.scene; @@ -3,14 +3,11 @@ package com.yoho.search.service.scene;
3 import com.alibaba.fastjson.JSONObject; 3 import com.alibaba.fastjson.JSONObject;
4 import com.yoho.search.base.utils.SearchPageIdDefine; 4 import com.yoho.search.base.utils.SearchPageIdDefine;
5 import com.yoho.search.models.SearchApiResult; 5 import com.yoho.search.models.SearchApiResult;
6 -import com.yoho.search.service.base.SearchDynamicConfigService;  
7 import com.yoho.search.service.base.SearchRequestParams; 6 import com.yoho.search.service.base.SearchRequestParams;
8 -import com.yoho.search.service.helper.SearchCommonHelper; 7 +import com.yoho.search.service.list.ProductListSwitchService;
9 import com.yoho.search.service.scene.aggregations.SceneAggregationsHelper; 8 import com.yoho.search.service.scene.aggregations.SceneAggregationsHelper;
10 import com.yoho.search.service.scene.common.AbstractSceneService; 9 import com.yoho.search.service.scene.common.AbstractSceneService;
11 -import com.yoho.search.service.scene.common.CommonSceneProductListService;  
12 import com.yoho.search.service.scene.common.SceneSelectionsService; 10 import com.yoho.search.service.scene.common.SceneSelectionsService;
13 -import com.yoho.search.recall.sort.SortRecallSceneService;  
14 import org.apache.commons.lang.StringUtils; 11 import org.apache.commons.lang.StringUtils;
15 import org.slf4j.Logger; 12 import org.slf4j.Logger;
16 import org.slf4j.LoggerFactory; 13 import org.slf4j.LoggerFactory;
@@ -28,16 +25,10 @@ public class SortSceneService extends AbstractSceneService { @@ -28,16 +25,10 @@ public class SortSceneService extends AbstractSceneService {
28 private static final Logger logger = LoggerFactory.getLogger(SortSceneService.class); 25 private static final Logger logger = LoggerFactory.getLogger(SortSceneService.class);
29 26
30 @Autowired 27 @Autowired
31 - private CommonSceneProductListService sceneProductListService; 28 + private ProductListSwitchService sceneProductListService;
32 @Autowired 29 @Autowired
33 private SceneSelectionsService sceneSelectionsService; 30 private SceneSelectionsService sceneSelectionsService;
34 @Autowired 31 @Autowired
35 - private SearchCommonHelper searchCommonHelper;  
36 - @Autowired  
37 - private SortRecallSceneService sortRecallSceneService;  
38 - @Autowired  
39 - private SearchDynamicConfigService searchDynamicConfigService;  
40 - @Autowired  
41 private SceneAggregationsHelper sceneAggregationsHelper; 32 private SceneAggregationsHelper sceneAggregationsHelper;
42 33
43 @Override 34 @Override
@@ -83,21 +74,15 @@ public class SortSceneService extends AbstractSceneService { @@ -83,21 +74,15 @@ public class SortSceneService extends AbstractSceneService {
83 } 74 }
84 // 1、添加默认参数 75 // 1、添加默认参数
85 this.addParamsToParamMap(paramMap); 76 this.addParamsToParamMap(paramMap);
86 - CompletableFuture<SearchApiResult> productListFuture = null;  
87 - // 2、获取商品列表-是否使用召回策略  
88 - if (goToRecall(paramMap)) {  
89 - productListFuture = CompletableFuture.supplyAsync(() -> sortRecallSceneService.recallProductList(this.newParamMap(paramMap)), executorService);  
90 - } else {  
91 - productListFuture = CompletableFuture.supplyAsync(() -> sceneProductListService.productList(this.newParamMap(paramMap)), executorService);  
92 - }  
93 - // 3、获取聚合结果 77 + CompletableFuture<SearchApiResult> productListFuture = CompletableFuture.supplyAsync(() -> sceneProductListService.productList(this.newParamMap(paramMap)), executorService);
  78 + // 2、获取聚合结果
94 CompletableFuture<SearchApiResult> standardsFuture = CompletableFuture.supplyAsync(() -> sceneAggregationsHelper.sceneAggStandard(this.newParamMap(paramMap)), 79 CompletableFuture<SearchApiResult> standardsFuture = CompletableFuture.supplyAsync(() -> sceneAggregationsHelper.sceneAggStandard(this.newParamMap(paramMap)),
95 executorService); 80 executorService);
96 CompletableFuture<SearchApiResult> customizeTagFuture = CompletableFuture.supplyAsync(() -> sceneAggregationsHelper.sceneAggCustomizeTag(this.newParamMap(paramMap)), 81 CompletableFuture<SearchApiResult> customizeTagFuture = CompletableFuture.supplyAsync(() -> sceneAggregationsHelper.sceneAggCustomizeTag(this.newParamMap(paramMap)),
97 executorService); 82 executorService);
98 CompletableFuture<SearchApiResult> promotionsFuture = CompletableFuture.supplyAsync(() -> sceneAggregationsHelper.sceneAggPromotion(this.newParamMap(paramMap)), 83 CompletableFuture<SearchApiResult> promotionsFuture = CompletableFuture.supplyAsync(() -> sceneAggregationsHelper.sceneAggPromotion(this.newParamMap(paramMap)),
99 executorService); 84 executorService);
100 - // 4、组合结果 85 + // 3、组合结果
101 SearchApiResult productList = productListFuture.get(); 86 SearchApiResult productList = productListFuture.get();
102 SearchApiResult standards = standardsFuture.get(); 87 SearchApiResult standards = standardsFuture.get();
103 SearchApiResult customizeTags = customizeTagFuture.get(); 88 SearchApiResult customizeTags = customizeTagFuture.get();
@@ -113,20 +98,6 @@ public class SortSceneService extends AbstractSceneService { @@ -113,20 +98,6 @@ public class SortSceneService extends AbstractSceneService {
113 } 98 }
114 } 99 }
115 100
116 - private boolean goToRecall(Map<String, String> paramMap) {  
117 - if (!searchDynamicConfigService.isSortPageRecallOpen()) {  
118 - return false;  
119 - }  
120 - if (!searchCommonHelper.isOrderEmpty(paramMap)) {  
121 - return false;  
122 - }  
123 - int uid = searchCommonHelper.getUid(paramMap);  
124 - if (uid <= 0) {  
125 - return false;  
126 - }  
127 - return true;  
128 - }  
129 -  
130 @Override 101 @Override
131 public SearchApiResult aggregations(Map<String, String> paramMap) { 102 public SearchApiResult aggregations(Map<String, String> paramMap) {
132 try { 103 try {
@@ -13,7 +13,7 @@ import com.yoho.search.common.utils.SearchApiResultUtils; @@ -13,7 +13,7 @@ import com.yoho.search.common.utils.SearchApiResultUtils;
13 import com.yoho.search.models.SearchApiResult; 13 import com.yoho.search.models.SearchApiResult;
14 import com.yoho.search.service.base.SearchRequestParams; 14 import com.yoho.search.service.base.SearchRequestParams;
15 import com.yoho.search.service.scene.common.AbstractSceneService; 15 import com.yoho.search.service.scene.common.AbstractSceneService;
16 -import com.yoho.search.service.scene.common.CommonSceneProductListService; 16 +import com.yoho.search.service.list.ProductListSwitchService;
17 import com.yoho.search.service.scene.common.SceneSelectionsService; 17 import com.yoho.search.service.scene.common.SceneSelectionsService;
18 18
19 @Service 19 @Service
@@ -22,7 +22,7 @@ public class ZqSceneService extends AbstractSceneService { @@ -22,7 +22,7 @@ public class ZqSceneService extends AbstractSceneService {
22 private static final Logger logger = LoggerFactory.getLogger(ZqSceneService.class); 22 private static final Logger logger = LoggerFactory.getLogger(ZqSceneService.class);
23 23
24 @Autowired 24 @Autowired
25 - private CommonSceneProductListService sceneProductListService; 25 + private ProductListSwitchService sceneProductListService;
26 @Autowired 26 @Autowired
27 private SceneSelectionsService sceneSelectionsService; 27 private SceneSelectionsService sceneSelectionsService;
28 28
@@ -7,7 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; @@ -7,7 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Service; 7 import org.springframework.stereotype.Service;
8 8
9 import com.yoho.search.models.SearchApiResult; 9 import com.yoho.search.models.SearchApiResult;
10 -import com.yoho.search.service.scene.common.CommonSceneProductListService; 10 +import com.yoho.search.service.list.ProductListSwitchService;
11 11
12 @Service 12 @Service
13 public class SearchProductsServiceNew { 13 public class SearchProductsServiceNew {
@@ -15,12 +15,12 @@ public class SearchProductsServiceNew { @@ -15,12 +15,12 @@ public class SearchProductsServiceNew {
15 @Autowired 15 @Autowired
16 private ISelectionsForPc selectionsForPc; 16 private ISelectionsForPc selectionsForPc;
17 @Autowired 17 @Autowired
18 - private CommonSceneProductListService commonSceneProductListService; 18 + private ProductListSwitchService productListSwitchService;
19 19
20 @SuppressWarnings("unchecked") 20 @SuppressWarnings("unchecked")
21 public SearchApiResult searchProductsNew(Map<String, String> paramMap) { 21 public SearchApiResult searchProductsNew(Map<String, String> paramMap) {
22 Map<String, Object> result = new HashMap<String, Object>(); 22 Map<String, Object> result = new HashMap<String, Object>();
23 - SearchApiResult productList = commonSceneProductListService.productList(paramMap); 23 + SearchApiResult productList = productListSwitchService.productList(paramMap);
24 if (productList != null) { 24 if (productList != null) {
25 result.putAll((Map<String, Object>) productList.getData()); 25 result.putAll((Map<String, Object>) productList.getData());
26 } 26 }
1 package com.yoho.search.service.service.impl; 1 package com.yoho.search.service.service.impl;
2 2
3 -import java.util.Arrays;  
4 -import java.util.HashMap;  
5 -import java.util.List;  
6 -import java.util.Map;  
7 -  
8 -import org.apache.commons.lang.StringUtils;  
9 -import org.elasticsearch.index.query.QueryBuilders;  
10 -import org.elasticsearch.search.builder.SearchSourceBuilder;  
11 -import org.slf4j.Logger;  
12 -import org.slf4j.LoggerFactory;  
13 -import org.springframework.beans.factory.annotation.Autowired;  
14 -import org.springframework.stereotype.Service;  
15 -  
16 import com.alibaba.fastjson.JSON; 3 import com.alibaba.fastjson.JSON;
17 import com.alibaba.fastjson.JSONObject; 4 import com.alibaba.fastjson.JSONObject;
18 import com.yoho.search.base.utils.ISearchConstants; 5 import com.yoho.search.base.utils.ISearchConstants;
@@ -25,12 +12,22 @@ import com.yoho.search.core.es.utils.SearchParamUtils; @@ -25,12 +12,22 @@ import com.yoho.search.core.es.utils.SearchParamUtils;
25 import com.yoho.search.models.SearchApiResult; 12 import com.yoho.search.models.SearchApiResult;
26 import com.yoho.search.service.base.ProductListSortService; 13 import com.yoho.search.service.base.ProductListSortService;
27 import com.yoho.search.service.base.SearchCommonService; 14 import com.yoho.search.service.base.SearchCommonService;
28 -import com.yoho.search.service.base.SearchDynamicConfigService;  
29 import com.yoho.search.service.base.index.ProductIndexBaseService; 15 import com.yoho.search.service.base.index.ProductIndexBaseService;
30 import com.yoho.search.service.helper.SearchParamHelper; 16 import com.yoho.search.service.helper.SearchParamHelper;
31 import com.yoho.search.service.helper.SearchSortHelper; 17 import com.yoho.search.service.helper.SearchSortHelper;
32 -import com.yoho.search.service.scene.common.CommonSceneProductListService;  
33 import com.yoho.search.service.service.IProductListService; 18 import com.yoho.search.service.service.IProductListService;
  19 +import org.apache.commons.lang.StringUtils;
  20 +import org.elasticsearch.index.query.QueryBuilders;
  21 +import org.elasticsearch.search.builder.SearchSourceBuilder;
  22 +import org.slf4j.Logger;
  23 +import org.slf4j.LoggerFactory;
  24 +import org.springframework.beans.factory.annotation.Autowired;
  25 +import org.springframework.stereotype.Service;
  26 +
  27 +import java.util.Arrays;
  28 +import java.util.HashMap;
  29 +import java.util.List;
  30 +import java.util.Map;
34 31
35 @Service 32 @Service
36 public class ProductListServiceImpl implements IProductListService { 33 public class ProductListServiceImpl implements IProductListService {
@@ -44,13 +41,9 @@ public class ProductListServiceImpl implements IProductListService { @@ -44,13 +41,9 @@ public class ProductListServiceImpl implements IProductListService {
44 @Autowired 41 @Autowired
45 private SearchCommonService searchCommonService; 42 private SearchCommonService searchCommonService;
46 @Autowired 43 @Autowired
47 - private SearchDynamicConfigService searchDynamicConfigService;  
48 - @Autowired  
49 private ProductIndexBaseService productIndexBaseService; 44 private ProductIndexBaseService productIndexBaseService;
50 @Autowired 45 @Autowired
51 private ProductListSortService productListSortService; 46 private ProductListSortService productListSortService;
52 - @Autowired  
53 - private CommonSceneProductListService commonSceneProductListService;  
54 47
55 48
56 @Override 49 @Override