Authored by hugufei

店铺内找相似接口优化

@@ -131,7 +131,7 @@ public class SearchLikeInShopService { @@ -131,7 +131,7 @@ public class SearchLikeInShopService {
131 // 1、设置SearchParam 131 // 1、设置SearchParam
132 SearchParam searchParam = new SearchParam(); 132 SearchParam searchParam = new SearchParam();
133 // 2)设置query和filter 133 // 2)设置query和filter
134 - searchParam.setFiter(this.builderSearchLikeFilter(productInfoInEs, productSkns)); 134 + searchParam.setFiter(this.builderSearchLikeInShopFilter(productInfoInEs, productSkns));
135 // 3、设置分页参数 135 // 3、设置分页参数
136 searchParam.setOffset(0); 136 searchParam.setOffset(0);
137 searchParam.setSize(productSkns.size()); 137 searchParam.setSize(productSkns.size());
@@ -141,32 +141,39 @@ public class SearchLikeInShopService { @@ -141,32 +141,39 @@ public class SearchLikeInShopService {
141 return searchParam; 141 return searchParam;
142 } 142 }
143 143
144 - private SearchParam buildCharactersSearchParam(JSONObject productInfoInEs, int viewNum) { 144 + /**
  145 + * 店铺内按文字找相似
  146 + *
  147 + * @param productInfoInEs
  148 + * @param pageSize
  149 + * @return
  150 + */
  151 + public SearchParam buildCharactersSearchParam(JSONObject productInfoInEs, int pageSize) {
145 // 1、设置SearchParam 152 // 1、设置SearchParam
146 SearchParam searchParam = new SearchParam(); 153 SearchParam searchParam = new SearchParam();
147 // 2)设置query和filter 154 // 2)设置query和filter
148 - searchParam.setQuery(this.buildCharactersQueryBuilder(productInfoInEs, "20%"));  
149 - searchParam.setFiter(this.builderSearchLikeFilter(productInfoInEs, null)); 155 + searchParam.setQuery(this.buildeCharactersQueryBuilder(productInfoInEs, "20%"));
  156 + searchParam.setFiter(this.builderSearchLikeInShopFilter(productInfoInEs, null));
150 // 3、设置排序规则[按打分排序] 157 // 3、设置排序规则[按打分排序]
151 - List<SortBuilder<?>> sortBuilders = new ArrayList<SortBuilder<?>>(); 158 + List<SortBuilder<?>> sortBuilders = new ArrayList<>();
152 sortBuilders.add(SortBuilders.scoreSort().order(SortOrder.DESC)); 159 sortBuilders.add(SortBuilders.scoreSort().order(SortOrder.DESC));
153 searchParam.setSortBuilders(sortBuilders); 160 searchParam.setSortBuilders(sortBuilders);
154 // 4、设置分页参数 161 // 4、设置分页参数
155 searchParam.setOffset(0); 162 searchParam.setOffset(0);
156 - searchParam.setSize(viewNum); 163 + searchParam.setSize(pageSize);
157 // 5)设置返回的参数【节省带宽】 164 // 5)设置返回的参数【节省带宽】
158 List<String> includeFields = productIndexBaseService.getProductIndexIncludeFields(); 165 List<String> includeFields = productIndexBaseService.getProductIndexIncludeFields();
159 searchParam.setIncludeFields(includeFields); 166 searchParam.setIncludeFields(includeFields);
160 return searchParam; 167 return searchParam;
161 } 168 }
162 169
163 - private QueryBuilder buildCharactersQueryBuilder(JSONObject productInfoInEs, String minimumShouldMatch) { 170 + private QueryBuilder buildeCharactersQueryBuilder(JSONObject productInfoInEs, String minimumShouldMatch) {
164 String queryString = searchLikeHelper.genYohoQueryStringWithBrandName(productInfoInEs); 171 String queryString = searchLikeHelper.genYohoQueryStringWithBrandName(productInfoInEs);
165 QueryBuilder queryBuilder = searchLikeHelper.buildCharsetQueryBuilder(queryString, minimumShouldMatch); 172 QueryBuilder queryBuilder = searchLikeHelper.buildCharsetQueryBuilder(queryString, minimumShouldMatch);
166 return queryBuilder; 173 return queryBuilder;
167 } 174 }
168 175
169 - private BoolQueryBuilder builderSearchLikeFilter(JSONObject productInfoInEs, List<String> inProductSkns) { 176 + private BoolQueryBuilder builderSearchLikeInShopFilter(JSONObject productInfoInEs, List<String> inProductSkns) {
170 //1) 默认参数 177 //1) 默认参数
171 String productSkn = productInfoInEs.getString(ProductIndexEsField.productSkn); 178 String productSkn = productInfoInEs.getString(ProductIndexEsField.productSkn);
172 String isGlobalInEs = productInfoInEs.getString(ProductIndexEsField.isGlobal); 179 String isGlobalInEs = productInfoInEs.getString(ProductIndexEsField.isGlobal);