Showing
5 changed files
with
35 additions
and
86 deletions
@@ -74,7 +74,7 @@ public class ProductIndexBaseService { | @@ -74,7 +74,7 @@ public class ProductIndexBaseService { | ||
74 | productIndexIncludeFields.add(ProductIndexEsField.gender); | 74 | productIndexIncludeFields.add(ProductIndexEsField.gender); |
75 | productIndexIncludeFields.add(ProductIndexEsField.ageLevel); | 75 | productIndexIncludeFields.add(ProductIndexEsField.ageLevel); |
76 | //productIndexIncludeFields.add(ProductIndexEsField.salesPhrase); | 76 | //productIndexIncludeFields.add(ProductIndexEsField.salesPhrase); |
77 | - // productIndexIncludeFields.add(ProductIndexEsField.phrase); | 77 | + //productIndexIncludeFields.add(ProductIndexEsField.phrase); |
78 | productIndexIncludeFields.add(ProductIndexEsField.status); | 78 | productIndexIncludeFields.add(ProductIndexEsField.status); |
79 | productIndexIncludeFields.add(ProductIndexEsField.goodsList); | 79 | productIndexIncludeFields.add(ProductIndexEsField.goodsList); |
80 | 80 |
@@ -25,7 +25,6 @@ import com.yoho.search.base.utils.ProductIndexEsField; | @@ -25,7 +25,6 @@ import com.yoho.search.base.utils.ProductIndexEsField; | ||
25 | import com.yoho.search.core.es.model.SearchParam; | 25 | import com.yoho.search.core.es.model.SearchParam; |
26 | import com.yoho.search.core.es.model.SearchResult; | 26 | import com.yoho.search.core.es.model.SearchResult; |
27 | import com.yoho.search.models.SearchFieldBoost; | 27 | import com.yoho.search.models.SearchFieldBoost; |
28 | -import com.yoho.search.service.base.SearchCacheService; | ||
29 | import com.yoho.search.service.base.SearchCommonService; | 28 | import com.yoho.search.service.base.SearchCommonService; |
30 | import com.yoho.search.service.base.index.ProductIndexBaseService; | 29 | import com.yoho.search.service.base.index.ProductIndexBaseService; |
31 | import com.yoho.search.service.helper.FunctionScoreSearchHelper; | 30 | import com.yoho.search.service.helper.FunctionScoreSearchHelper; |
@@ -57,9 +56,6 @@ public class SearchLikeHelper { | @@ -57,9 +56,6 @@ public class SearchLikeHelper { | ||
57 | } | 56 | } |
58 | } | 57 | } |
59 | 58 | ||
60 | - @Autowired | ||
61 | - private SearchCacheService searchCacheService; | ||
62 | - | ||
63 | @PostConstruct | 59 | @PostConstruct |
64 | void init() { | 60 | void init() { |
65 | // 品类权重 | 61 | // 品类权重 |
@@ -101,7 +97,7 @@ public class SearchLikeHelper { | @@ -101,7 +97,7 @@ public class SearchLikeHelper { | ||
101 | * @param productSkn | 97 | * @param productSkn |
102 | * @return | 98 | * @return |
103 | */ | 99 | */ |
104 | - protected JSONObject getProductInfoInEs(String productSkn) { | 100 | + public JSONObject getProductInfoInEs(String productSkn) { |
105 | SearchParam searchParam = new SearchParam(); | 101 | SearchParam searchParam = new SearchParam(); |
106 | searchParam.setQuery(QueryBuilders.matchAllQuery()); | 102 | searchParam.setQuery(QueryBuilders.matchAllQuery()); |
107 | BoolQueryBuilder boolFilter = QueryBuilders.boolQuery(); | 103 | BoolQueryBuilder boolFilter = QueryBuilders.boolQuery(); |
@@ -109,7 +105,10 @@ public class SearchLikeHelper { | @@ -109,7 +105,10 @@ public class SearchLikeHelper { | ||
109 | searchParam.setFiter(boolFilter); | 105 | searchParam.setFiter(boolFilter); |
110 | searchParam.setAggregationBuilders(null); | 106 | searchParam.setAggregationBuilders(null); |
111 | searchParam.setSize(1); | 107 | searchParam.setSize(1); |
112 | - | 108 | + // 设置返回参数,节省带宽 |
109 | + List<String> includeFields = productIndexBaseService.getProductIndexIncludeFields(); | ||
110 | + searchParam.setIncludeFields(includeFields); | ||
111 | + | ||
113 | String productIndexName = ISearchConstants.INDEX_NAME_PRODUCT_INDEX; | 112 | String productIndexName = ISearchConstants.INDEX_NAME_PRODUCT_INDEX; |
114 | SearchResult searchResult = searchCommonService.doSearch(productIndexName, searchParam); | 113 | SearchResult searchResult = searchCommonService.doSearch(productIndexName, searchParam); |
115 | if (searchResult == null) { | 114 | if (searchResult == null) { |
@@ -151,12 +150,12 @@ public class SearchLikeHelper { | @@ -151,12 +150,12 @@ public class SearchLikeHelper { | ||
151 | boolFilter.mustNot(QueryBuilders.termsQuery(ProductIndexEsField.isSeckill, "Y")); | 150 | boolFilter.mustNot(QueryBuilders.termsQuery(ProductIndexEsField.isSeckill, "Y")); |
152 | boolFilter.mustNot(QueryBuilders.termQuery(ProductIndexEsField.isFobbiden, 1)); | 151 | boolFilter.mustNot(QueryBuilders.termQuery(ProductIndexEsField.isFobbiden, 1)); |
153 | boolFilter.mustNot(QueryBuilders.termQuery(ProductIndexEsField.attribute, 2)); | 152 | boolFilter.mustNot(QueryBuilders.termQuery(ProductIndexEsField.attribute, 2)); |
154 | - | 153 | + |
155 | boolFilter.must(QueryBuilders.termQuery(ProductIndexEsField.status, 1)); | 154 | boolFilter.must(QueryBuilders.termQuery(ProductIndexEsField.status, 1)); |
156 | boolFilter.must(QueryBuilders.rangeQuery(ProductIndexEsField.storageNum).gte(1)); | 155 | boolFilter.must(QueryBuilders.rangeQuery(ProductIndexEsField.storageNum).gte(1)); |
157 | - | 156 | + |
158 | boolFilter.must(QueryBuilders.termQuery(ProductIndexEsField.isOutlets, 2)); | 157 | boolFilter.must(QueryBuilders.termQuery(ProductIndexEsField.isOutlets, 2)); |
159 | - | 158 | + |
160 | if (notProductSkns != null && !notProductSkns.isEmpty()) { | 159 | if (notProductSkns != null && !notProductSkns.isEmpty()) { |
161 | boolFilter.mustNot(QueryBuilders.termsQuery("productSkn", notProductSkns)); | 160 | boolFilter.mustNot(QueryBuilders.termsQuery("productSkn", notProductSkns)); |
162 | } | 161 | } |
@@ -222,13 +221,13 @@ public class SearchLikeHelper { | @@ -222,13 +221,13 @@ public class SearchLikeHelper { | ||
222 | this.append(query, productInfoInEs.getString("pattern")); | 221 | this.append(query, productInfoInEs.getString("pattern")); |
223 | return query; | 222 | return query; |
224 | } | 223 | } |
225 | - | 224 | + |
226 | public String genYohoQueryStringWithBrandName(JSONObject productInfoInEs) { | 225 | public String genYohoQueryStringWithBrandName(JSONObject productInfoInEs) { |
227 | StringBuilder query = this.genYohoDefaultQueryString(productInfoInEs); | 226 | StringBuilder query = this.genYohoDefaultQueryString(productInfoInEs); |
228 | this.append(query, productInfoInEs.getString("brandName")); | 227 | this.append(query, productInfoInEs.getString("brandName")); |
229 | return query.toString(); | 228 | return query.toString(); |
230 | } | 229 | } |
231 | - | 230 | + |
232 | public String genYohoQueryStringWithOutBrandName(JSONObject productInfoInEs) { | 231 | public String genYohoQueryStringWithOutBrandName(JSONObject productInfoInEs) { |
233 | StringBuilder query = this.genYohoDefaultQueryString(productInfoInEs); | 232 | StringBuilder query = this.genYohoDefaultQueryString(productInfoInEs); |
234 | String queryString = query.toString(); | 233 | String queryString = query.toString(); |
@@ -248,11 +247,6 @@ public class SearchLikeHelper { | @@ -248,11 +247,6 @@ public class SearchLikeHelper { | ||
248 | return query.toString(); | 247 | return query.toString(); |
249 | } | 248 | } |
250 | 249 | ||
251 | - public List<Map<String, Object>> queryProductList(SearchParam searchParam) { | ||
252 | - SearchResult searchResult = searchCommonService.doSearch(ISearchConstants.INDEX_NAME_PRODUCT_INDEX, searchParam); | ||
253 | - return searchResult.getResultList(); | ||
254 | - } | ||
255 | - | ||
256 | public List<Map<String, Object>> queryProductList(List<SearchParam> searchParams) { | 250 | public List<Map<String, Object>> queryProductList(List<SearchParam> searchParams) { |
257 | List<SearchResult> searchResults = searchCommonService.doMutiSearch(ISearchConstants.INDEX_NAME_PRODUCT_INDEX, searchParams); | 251 | List<SearchResult> searchResults = searchCommonService.doMutiSearch(ISearchConstants.INDEX_NAME_PRODUCT_INDEX, searchParams); |
258 | List<Map<String, Object>> results = new ArrayList<Map<String, Object>>(); | 252 | List<Map<String, Object>> results = new ArrayList<Map<String, Object>>(); |
@@ -18,12 +18,11 @@ import org.springframework.beans.factory.annotation.Autowired; | @@ -18,12 +18,11 @@ import org.springframework.beans.factory.annotation.Autowired; | ||
18 | import org.springframework.stereotype.Service; | 18 | import org.springframework.stereotype.Service; |
19 | 19 | ||
20 | import com.alibaba.fastjson.JSONObject; | 20 | import com.alibaba.fastjson.JSONObject; |
21 | -import com.yoho.search.common.cache.model.SearchCache; | 21 | +import com.yoho.search.common.cache.aop.SearchCacheAble; |
22 | import com.yoho.search.core.es.model.SearchParam; | 22 | import com.yoho.search.core.es.model.SearchParam; |
23 | import com.yoho.search.models.SearchApiResult; | 23 | import com.yoho.search.models.SearchApiResult; |
24 | import com.yoho.search.service.base.SearchRequestParams; | 24 | import com.yoho.search.service.base.SearchRequestParams; |
25 | import com.yoho.search.service.base.index.ProductIndexBaseService; | 25 | import com.yoho.search.service.base.index.ProductIndexBaseService; |
26 | -import com.yoho.search.service.scene.common.AbstractCacheAbleService; | ||
27 | 26 | ||
28 | /** | 27 | /** |
29 | * 店铺内找相似 | 28 | * 店铺内找相似 |
@@ -31,7 +30,7 @@ import com.yoho.search.service.scene.common.AbstractCacheAbleService; | @@ -31,7 +30,7 @@ import com.yoho.search.service.scene.common.AbstractCacheAbleService; | ||
31 | * @author gufei.hu | 30 | * @author gufei.hu |
32 | */ | 31 | */ |
33 | @Service | 32 | @Service |
34 | -public class SearchLikeInShopService extends AbstractCacheAbleService { | 33 | +public class SearchLikeInShopService { |
35 | 34 | ||
36 | private static final Logger logger = LoggerFactory.getLogger(SearchLikeInShopService.class); | 35 | private static final Logger logger = LoggerFactory.getLogger(SearchLikeInShopService.class); |
37 | 36 | ||
@@ -39,18 +38,14 @@ public class SearchLikeInShopService extends AbstractCacheAbleService { | @@ -39,18 +38,14 @@ public class SearchLikeInShopService extends AbstractCacheAbleService { | ||
39 | private SearchLikeHelper searchLikeHelper; | 38 | private SearchLikeHelper searchLikeHelper; |
40 | @Autowired | 39 | @Autowired |
41 | private ProductIndexBaseService productIndexBaseService; | 40 | private ProductIndexBaseService productIndexBaseService; |
42 | - | ||
43 | - @Override | ||
44 | - public SearchCache getSearchCache() { | ||
45 | - return searchCacheFactory.getSearchLikeSearchCache(); | ||
46 | - } | ||
47 | - | 41 | + |
48 | /** | 42 | /** |
49 | * 店铺内推荐 | 43 | * 店铺内推荐 |
50 | * | 44 | * |
51 | * @param paramMap | 45 | * @param paramMap |
52 | * @return | 46 | * @return |
53 | */ | 47 | */ |
48 | + @SearchCacheAble(cacheInMinute = 600, cacheName = "SEARCH_LIKE_IN_SHOP", includeParams = { "product_skn", "viewNum" }) | ||
54 | public SearchApiResult searchLikeInShop(Map<String, String> paramMap) { | 49 | public SearchApiResult searchLikeInShop(Map<String, String> paramMap) { |
55 | try { | 50 | try { |
56 | // 1、获取参数 | 51 | // 1、获取参数 |
@@ -61,30 +56,23 @@ public class SearchLikeInShopService extends AbstractCacheAbleService { | @@ -61,30 +56,23 @@ public class SearchLikeInShopService extends AbstractCacheAbleService { | ||
61 | // 2、检测分页参数【默认30条,最多60条】 | 56 | // 2、检测分页参数【默认30条,最多60条】 |
62 | int pageSize = searchLikeHelper.getPageSize(paramMap); | 57 | int pageSize = searchLikeHelper.getPageSize(paramMap); |
63 | 58 | ||
64 | - // 3、从缓存中获取,找到则直接返回 | ||
65 | - String redisCacheKey = searchCacheKeyHelper.getSearchLikeInShopKeyCache(productSkn, pageSize); | ||
66 | - JSONObject cacheObject = searchCacheService.getJSONObjectFromCache(this.searchCache, redisCacheKey); | ||
67 | - if (cacheObject != null) { | ||
68 | - return new SearchApiResult().setData(cacheObject); | ||
69 | - } | ||
70 | - | ||
71 | - // 4、获取当前查询的SKN的基本信息 | 59 | + // 3、获取当前查询的SKN的基本信息 |
72 | JSONObject productInfoInEs = searchLikeHelper.getProductInfoInEs(productSkn); | 60 | JSONObject productInfoInEs = searchLikeHelper.getProductInfoInEs(productSkn); |
73 | if (productInfoInEs == null) { | 61 | if (productInfoInEs == null) { |
74 | return new SearchApiResult().setCode(400).setMessage("SKN不存在"); | 62 | return new SearchApiResult().setCode(400).setMessage("SKN不存在"); |
75 | } | 63 | } |
76 | 64 | ||
77 | - // 5、设置SearchParams | 65 | + // 4、设置SearchParams |
78 | List<SearchParam> searchParams = new ArrayList<SearchParam>(); | 66 | List<SearchParam> searchParams = new ArrayList<SearchParam>(); |
79 | searchParams.add(this.builderSearchParam(productInfoInEs, Arrays.asList(productSkn), pageSize)); | 67 | searchParams.add(this.builderSearchParam(productInfoInEs, Arrays.asList(productSkn), pageSize)); |
80 | 68 | ||
81 | - // 6、获取搜索结果[截取条数] | 69 | + // 5、获取搜索结果[截取条数] |
82 | List<Map<String, Object>> tempProductList = searchLikeHelper.queryProductList(searchParams); | 70 | List<Map<String, Object>> tempProductList = searchLikeHelper.queryProductList(searchParams); |
83 | if (tempProductList.size() > pageSize) { | 71 | if (tempProductList.size() > pageSize) { |
84 | tempProductList = tempProductList.subList(0, pageSize); | 72 | tempProductList = tempProductList.subList(0, pageSize); |
85 | } | 73 | } |
86 | 74 | ||
87 | - // 7、构造真实返回结果 | 75 | + // 6、构造真实返回结果 |
88 | List<Map<String, Object>> productListResults = new ArrayList<Map<String, Object>>(); | 76 | List<Map<String, Object>> productListResults = new ArrayList<Map<String, Object>>(); |
89 | if (!tempProductList.isEmpty()) { | 77 | if (!tempProductList.isEmpty()) { |
90 | productListResults = productIndexBaseService.getProductListWithPricePlan(tempProductList); | 78 | productListResults = productIndexBaseService.getProductListWithPricePlan(tempProductList); |
@@ -96,9 +84,6 @@ public class SearchLikeInShopService extends AbstractCacheAbleService { | @@ -96,9 +84,6 @@ public class SearchLikeInShopService extends AbstractCacheAbleService { | ||
96 | result.put("total", productListResults.size()); | 84 | result.put("total", productListResults.size()); |
97 | result.put("product_info", searchLikeHelper.genProductInfoResult(productInfoInEs)); | 85 | result.put("product_info", searchLikeHelper.genProductInfoResult(productInfoInEs)); |
98 | result.put("product_list", productListResults); | 86 | result.put("product_list", productListResults); |
99 | - | ||
100 | - // 8、结果加入缓存 | ||
101 | - searchCacheService.addJSONObjectToCache(this.searchCache, redisCacheKey, result); | ||
102 | return new SearchApiResult().setData(result); | 87 | return new SearchApiResult().setData(result); |
103 | } catch (Exception e) { | 88 | } catch (Exception e) { |
104 | logger.error(e.getMessage(), e); | 89 | logger.error(e.getMessage(), e); |
@@ -18,13 +18,12 @@ import org.springframework.beans.factory.annotation.Autowired; | @@ -18,13 +18,12 @@ import org.springframework.beans.factory.annotation.Autowired; | ||
18 | import org.springframework.stereotype.Service; | 18 | import org.springframework.stereotype.Service; |
19 | 19 | ||
20 | import com.alibaba.fastjson.JSONObject; | 20 | import com.alibaba.fastjson.JSONObject; |
21 | -import com.yoho.search.common.cache.model.SearchCache; | 21 | +import com.yoho.search.common.cache.aop.SearchCacheAble; |
22 | import com.yoho.search.core.es.model.SearchParam; | 22 | import com.yoho.search.core.es.model.SearchParam; |
23 | import com.yoho.search.models.SearchApiResult; | 23 | import com.yoho.search.models.SearchApiResult; |
24 | import com.yoho.search.service.base.SearchDynamicConfigService; | 24 | import com.yoho.search.service.base.SearchDynamicConfigService; |
25 | import com.yoho.search.service.base.SearchRequestParams; | 25 | import com.yoho.search.service.base.SearchRequestParams; |
26 | import com.yoho.search.service.base.index.ProductIndexBaseService; | 26 | import com.yoho.search.service.base.index.ProductIndexBaseService; |
27 | -import com.yoho.search.service.scene.common.AbstractCacheAbleService; | ||
28 | 27 | ||
29 | /** | 28 | /** |
30 | * 店铺外找相似 | 29 | * 店铺外找相似 |
@@ -33,7 +32,7 @@ import com.yoho.search.service.scene.common.AbstractCacheAbleService; | @@ -33,7 +32,7 @@ import com.yoho.search.service.scene.common.AbstractCacheAbleService; | ||
33 | * | 32 | * |
34 | */ | 33 | */ |
35 | @Service | 34 | @Service |
36 | -public class SearchLikeNotInShopService extends AbstractCacheAbleService { | 35 | +public class SearchLikeNotInShopService{ |
37 | 36 | ||
38 | private static final Logger logger = LoggerFactory.getLogger(SearchLikeNotInShopService.class); | 37 | private static final Logger logger = LoggerFactory.getLogger(SearchLikeNotInShopService.class); |
39 | 38 | ||
@@ -44,17 +43,13 @@ public class SearchLikeNotInShopService extends AbstractCacheAbleService { | @@ -44,17 +43,13 @@ public class SearchLikeNotInShopService extends AbstractCacheAbleService { | ||
44 | @Autowired | 43 | @Autowired |
45 | private SearchDynamicConfigService searchDynamicConfigService; | 44 | private SearchDynamicConfigService searchDynamicConfigService; |
46 | 45 | ||
47 | - @Override | ||
48 | - public SearchCache getSearchCache() { | ||
49 | - return searchCacheFactory.getSearchLikeSearchCache(); | ||
50 | - } | ||
51 | - | ||
52 | /** | 46 | /** |
53 | * 店铺外推荐 | 47 | * 店铺外推荐 |
54 | * | 48 | * |
55 | * @param paramMap | 49 | * @param paramMap |
56 | * @return | 50 | * @return |
57 | */ | 51 | */ |
52 | + @SearchCacheAble(cacheInMinute = 600, cacheName = "SEARCH_LIKE_NOT_IN_SHOP", includeParams = { "product_skn", "viewNum" }) | ||
58 | public SearchApiResult searchLikeNotInShop(Map<String, String> paramMap) { | 53 | public SearchApiResult searchLikeNotInShop(Map<String, String> paramMap) { |
59 | try { | 54 | try { |
60 | // 1、获取参数 | 55 | // 1、获取参数 |
@@ -65,32 +60,25 @@ public class SearchLikeNotInShopService extends AbstractCacheAbleService { | @@ -65,32 +60,25 @@ public class SearchLikeNotInShopService extends AbstractCacheAbleService { | ||
65 | // 2、检测分页参数【默认30条,最多60条】 | 60 | // 2、检测分页参数【默认30条,最多60条】 |
66 | int pageSize = searchLikeHelper.getPageSize(paramMap); | 61 | int pageSize = searchLikeHelper.getPageSize(paramMap); |
67 | 62 | ||
68 | - // 3、从缓存中获取,找到则直接返回 | ||
69 | - String redisCacheKey = searchCacheKeyHelper.getSearchLikeNotInShopKeyCache(productSkn, pageSize); | ||
70 | - JSONObject cacheObject = searchCacheService.getJSONObjectFromCache(this.searchCache, redisCacheKey); | ||
71 | - if (cacheObject != null) { | ||
72 | - return new SearchApiResult().setData(cacheObject); | ||
73 | - } | ||
74 | - | ||
75 | - // 4、获取当前查询的SKN的基本信息 | 63 | + // 2、获取当前查询的SKN的基本信息 |
76 | JSONObject productInfoInEs = searchLikeHelper.getProductInfoInEs(productSkn); | 64 | JSONObject productInfoInEs = searchLikeHelper.getProductInfoInEs(productSkn); |
77 | if (productInfoInEs == null) { | 65 | if (productInfoInEs == null) { |
78 | return new SearchApiResult().setCode(400).setMessage("SKN不存在"); | 66 | return new SearchApiResult().setCode(400).setMessage("SKN不存在"); |
79 | } | 67 | } |
80 | 68 | ||
81 | - // 5、设置SearchParams | 69 | + // 3、设置SearchParams |
82 | List<SearchParam> searchParams = new ArrayList<SearchParam>(); | 70 | List<SearchParam> searchParams = new ArrayList<SearchParam>(); |
83 | int sameSortCount = searchDynamicConfigService.getSearchLikeNotInShopSameSortPercent() * pageSize / 100; | 71 | int sameSortCount = searchDynamicConfigService.getSearchLikeNotInShopSameSortPercent() * pageSize / 100; |
84 | searchParams.add(this.builderSearchParam(productInfoInEs, Arrays.asList(productSkn), sameSortCount, true)); | 72 | searchParams.add(this.builderSearchParam(productInfoInEs, Arrays.asList(productSkn), sameSortCount, true)); |
85 | searchParams.add(this.builderSearchParam(productInfoInEs, Arrays.asList(productSkn), pageSize - sameSortCount, false)); | 73 | searchParams.add(this.builderSearchParam(productInfoInEs, Arrays.asList(productSkn), pageSize - sameSortCount, false)); |
86 | 74 | ||
87 | - // 6、获取搜索结果[截取条数] | 75 | + // 4、获取搜索结果[截取条数] |
88 | List<Map<String, Object>> tempProductList = searchLikeHelper.queryProductList(searchParams); | 76 | List<Map<String, Object>> tempProductList = searchLikeHelper.queryProductList(searchParams); |
89 | if (tempProductList.size() > pageSize) { | 77 | if (tempProductList.size() > pageSize) { |
90 | tempProductList = tempProductList.subList(0, pageSize); | 78 | tempProductList = tempProductList.subList(0, pageSize); |
91 | } | 79 | } |
92 | 80 | ||
93 | - // 7、构造真实返回结果 | 81 | + // 5、构造真实返回结果 |
94 | List<Map<String, Object>> productListResults = new ArrayList<Map<String, Object>>(); | 82 | List<Map<String, Object>> productListResults = new ArrayList<Map<String, Object>>(); |
95 | if (!tempProductList.isEmpty()) { | 83 | if (!tempProductList.isEmpty()) { |
96 | productListResults = productIndexBaseService.getProductListWithPricePlan(tempProductList); | 84 | productListResults = productIndexBaseService.getProductListWithPricePlan(tempProductList); |
@@ -102,17 +90,14 @@ public class SearchLikeNotInShopService extends AbstractCacheAbleService { | @@ -102,17 +90,14 @@ public class SearchLikeNotInShopService extends AbstractCacheAbleService { | ||
102 | result.put("total", productListResults.size()); | 90 | result.put("total", productListResults.size()); |
103 | result.put("product_info", searchLikeHelper.genProductInfoResult(productInfoInEs)); | 91 | result.put("product_info", searchLikeHelper.genProductInfoResult(productInfoInEs)); |
104 | result.put("product_list", productListResults); | 92 | result.put("product_list", productListResults); |
105 | - | ||
106 | // 8、结果加入缓存 | 93 | // 8、结果加入缓存 |
107 | - searchCacheService.addJSONObjectToCache(this.searchCache, redisCacheKey, result); | ||
108 | return new SearchApiResult().setData(result); | 94 | return new SearchApiResult().setData(result); |
109 | } catch (Exception e) { | 95 | } catch (Exception e) { |
110 | logger.error(e.getMessage(), e); | 96 | logger.error(e.getMessage(), e); |
111 | return new SearchApiResult().setData(null).setMessage("searchLikeNotInShop Exception").setCode(500); | 97 | return new SearchApiResult().setData(null).setMessage("searchLikeNotInShop Exception").setCode(500); |
112 | } | 98 | } |
113 | - | ||
114 | } | 99 | } |
115 | - | 100 | + |
116 | private SearchParam builderSearchParam(JSONObject productInfoInEs, List<String> productSkns, int pageSize, boolean inSameSort) { | 101 | private SearchParam builderSearchParam(JSONObject productInfoInEs, List<String> productSkns, int pageSize, boolean inSameSort) { |
117 | // 1、设置SearchParam | 102 | // 1、设置SearchParam |
118 | SearchParam searchParam = new SearchParam(); | 103 | SearchParam searchParam = new SearchParam(); |
@@ -19,12 +19,11 @@ import org.springframework.stereotype.Service; | @@ -19,12 +19,11 @@ import org.springframework.stereotype.Service; | ||
19 | 19 | ||
20 | import com.alibaba.fastjson.JSONObject; | 20 | import com.alibaba.fastjson.JSONObject; |
21 | import com.yoho.search.base.utils.ProductIndexEsField; | 21 | import com.yoho.search.base.utils.ProductIndexEsField; |
22 | -import com.yoho.search.common.cache.model.SearchCache; | 22 | +import com.yoho.search.common.cache.aop.SearchCacheAble; |
23 | import com.yoho.search.core.es.model.SearchParam; | 23 | import com.yoho.search.core.es.model.SearchParam; |
24 | import com.yoho.search.models.SearchApiResult; | 24 | import com.yoho.search.models.SearchApiResult; |
25 | import com.yoho.search.service.base.SearchRequestParams; | 25 | import com.yoho.search.service.base.SearchRequestParams; |
26 | import com.yoho.search.service.base.index.ProductIndexBaseService; | 26 | import com.yoho.search.service.base.index.ProductIndexBaseService; |
27 | -import com.yoho.search.service.scene.common.AbstractCacheAbleService; | ||
28 | 27 | ||
29 | /** | 28 | /** |
30 | * 全站找相似功能 | 29 | * 全站找相似功能 |
@@ -33,7 +32,7 @@ import com.yoho.search.service.scene.common.AbstractCacheAbleService; | @@ -33,7 +32,7 @@ import com.yoho.search.service.scene.common.AbstractCacheAbleService; | ||
33 | * | 32 | * |
34 | */ | 33 | */ |
35 | @Service | 34 | @Service |
36 | -public class SearchLikeSceneService extends AbstractCacheAbleService { | 35 | +public class SearchLikeSceneService { |
37 | 36 | ||
38 | private static final Logger logger = LoggerFactory.getLogger(SearchLikeSceneService.class); | 37 | private static final Logger logger = LoggerFactory.getLogger(SearchLikeSceneService.class); |
39 | 38 | ||
@@ -42,14 +41,10 @@ public class SearchLikeSceneService extends AbstractCacheAbleService { | @@ -42,14 +41,10 @@ public class SearchLikeSceneService extends AbstractCacheAbleService { | ||
42 | @Autowired | 41 | @Autowired |
43 | private ProductIndexBaseService productIndexBaseService; | 42 | private ProductIndexBaseService productIndexBaseService; |
44 | 43 | ||
45 | - @Override | ||
46 | - public SearchCache getSearchCache() { | ||
47 | - return searchCacheFactory.getSearchLikeSearchCache(); | ||
48 | - } | ||
49 | - | ||
50 | /** | 44 | /** |
51 | - * @找相似功能 | 45 | + * @全站找相似功能 |
52 | */ | 46 | */ |
47 | + @SearchCacheAble(cacheInMinute = 600, cacheName = "SEARCH_LIKE", includeParams = { "product_skn", "viewNum" }) | ||
53 | public SearchApiResult searchLike(Map<String, String> paramMap) { | 48 | public SearchApiResult searchLike(Map<String, String> paramMap) { |
54 | try { | 49 | try { |
55 | // 1、获取参数 | 50 | // 1、获取参数 |
@@ -60,33 +55,26 @@ public class SearchLikeSceneService extends AbstractCacheAbleService { | @@ -60,33 +55,26 @@ public class SearchLikeSceneService extends AbstractCacheAbleService { | ||
60 | // 2、检测分页参数【默认30条,最多60条】 | 55 | // 2、检测分页参数【默认30条,最多60条】 |
61 | int pageSize = searchLikeHelper.getPageSize(paramMap); | 56 | int pageSize = searchLikeHelper.getPageSize(paramMap); |
62 | 57 | ||
63 | - // 3、从缓存中获取,找到则直接返回 | ||
64 | - String redisCacheKey = searchCacheKeyHelper.getSearchLikeKeyCache(productSkn, pageSize); | ||
65 | - JSONObject cacheObject = searchCacheService.getJSONObjectFromCache(this.searchCache, redisCacheKey); | ||
66 | - if (cacheObject != null) { | ||
67 | - return new SearchApiResult().setData(cacheObject); | ||
68 | - } | ||
69 | - | ||
70 | - // 4、获取当前查询的SKN的基本信息 | 58 | + // 3、获取当前查询的SKN的基本信息 |
71 | JSONObject productInfoInEs = searchLikeHelper.getProductInfoInEs(productSkn); | 59 | JSONObject productInfoInEs = searchLikeHelper.getProductInfoInEs(productSkn); |
72 | if (productInfoInEs == null) { | 60 | if (productInfoInEs == null) { |
73 | return new SearchApiResult().setCode(400).setMessage("SKN不存在"); | 61 | return new SearchApiResult().setCode(400).setMessage("SKN不存在"); |
74 | } | 62 | } |
75 | 63 | ||
76 | - // 5、设置第一步SearchParam | 64 | + // 4、设置第一步SearchParam |
77 | String isGlobalInEs = productInfoInEs.getString("isGlobal"); | 65 | String isGlobalInEs = productInfoInEs.getString("isGlobal"); |
78 | boolean isGlobal = "Y".equalsIgnoreCase(isGlobalInEs); | 66 | boolean isGlobal = "Y".equalsIgnoreCase(isGlobalInEs); |
79 | List<SearchParam> searchParams = new ArrayList<SearchParam>(); | 67 | List<SearchParam> searchParams = new ArrayList<SearchParam>(); |
80 | searchParams.add(this.buildSearchParam(productInfoInEs, 5, true, isGlobal));// 固定取同品牌的5个商品 | 68 | searchParams.add(this.buildSearchParam(productInfoInEs, 5, true, isGlobal));// 固定取同品牌的5个商品 |
81 | searchParams.add(this.buildSearchParam(productInfoInEs, pageSize, false, isGlobal)); | 69 | searchParams.add(this.buildSearchParam(productInfoInEs, pageSize, false, isGlobal)); |
82 | 70 | ||
83 | - // 6、获取搜索结果[并截取条数] | 71 | + // 5、获取搜索结果[并截取条数] |
84 | List<Map<String, Object>> tempProductList = searchLikeHelper.queryProductList(searchParams); | 72 | List<Map<String, Object>> tempProductList = searchLikeHelper.queryProductList(searchParams); |
85 | if (tempProductList.size() > pageSize) { | 73 | if (tempProductList.size() > pageSize) { |
86 | tempProductList = tempProductList.subList(0, pageSize); | 74 | tempProductList = tempProductList.subList(0, pageSize); |
87 | } | 75 | } |
88 | 76 | ||
89 | - // 7、构造真实返回结果 | 77 | + // 6、构造真实返回结果 |
90 | List<Map<String, Object>> productListResults = new ArrayList<Map<String, Object>>(); | 78 | List<Map<String, Object>> productListResults = new ArrayList<Map<String, Object>>(); |
91 | if (!tempProductList.isEmpty()) { | 79 | if (!tempProductList.isEmpty()) { |
92 | productListResults = productIndexBaseService.getProductListWithPricePlan(tempProductList); | 80 | productListResults = productIndexBaseService.getProductListWithPricePlan(tempProductList); |
@@ -98,9 +86,6 @@ public class SearchLikeSceneService extends AbstractCacheAbleService { | @@ -98,9 +86,6 @@ public class SearchLikeSceneService extends AbstractCacheAbleService { | ||
98 | jsonObject.put("total", productListResults.size()); | 86 | jsonObject.put("total", productListResults.size()); |
99 | jsonObject.put("product_info", searchLikeHelper.genProductInfoResult(productInfoInEs)); | 87 | jsonObject.put("product_info", searchLikeHelper.genProductInfoResult(productInfoInEs)); |
100 | jsonObject.put("product_list", productListResults); | 88 | jsonObject.put("product_list", productListResults); |
101 | - | ||
102 | - // 8、结果加入缓存 | ||
103 | - searchCacheService.addJSONObjectToCache(this.searchCache, redisCacheKey, jsonObject); | ||
104 | return new SearchApiResult().setData(jsonObject); | 89 | return new SearchApiResult().setData(jsonObject); |
105 | } catch (Exception e) { | 90 | } catch (Exception e) { |
106 | logger.error(e.getMessage(), e); | 91 | logger.error(e.getMessage(), e); |
-
Please register or login to post a comment