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 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 { |
@@ -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 |
-
Please register or login to post a comment