Authored by Gino Zhang

service记录每天请求conversion的关键字

@@ -86,6 +86,10 @@ public class SearchKeyWordService { @@ -86,6 +86,10 @@ public class SearchKeyWordService {
86 } 86 }
87 } 87 }
88 88
  89 + public void recordSuggestTip(String queryWord){
  90 + recordKeyWord(RedisKeys.YOHO_SEARCH_KEYWORDS_TIPS, queryWord);
  91 + }
  92 +
89 // 异步的做法是防止redis报错影响搜索主流程 93 // 异步的做法是防止redis报错影响搜索主流程
90 private void recordKeyWord(String redisKeyTemplate, String queryWord) { 94 private void recordKeyWord(String redisKeyTemplate, String queryWord) {
91 service.submit(new Runnable() { 95 service.submit(new Runnable() {
@@ -10,6 +10,7 @@ import com.yoho.search.core.es.utils.IgnoreSomeException; @@ -10,6 +10,7 @@ import com.yoho.search.core.es.utils.IgnoreSomeException;
10 import com.yoho.search.service.service.SearchCacheService; 10 import com.yoho.search.service.service.SearchCacheService;
11 import com.yoho.search.service.service.SearchCommonService; 11 import com.yoho.search.service.service.SearchCommonService;
12 import com.yoho.search.service.service.SearchDynamicConfigService; 12 import com.yoho.search.service.service.SearchDynamicConfigService;
  13 +import com.yoho.search.service.service.SearchKeyWordService;
13 import com.yoho.search.service.servicenew.ISuggestService; 14 import com.yoho.search.service.servicenew.ISuggestService;
14 import com.yoho.search.service.utils.HttpServletRequestUtils; 15 import com.yoho.search.service.utils.HttpServletRequestUtils;
15 import com.yoho.search.service.utils.SearchRequestParams; 16 import com.yoho.search.service.utils.SearchRequestParams;
@@ -58,6 +59,8 @@ public class SuggestServiceImpl implements ISuggestService, ApplicationEventPubl @@ -58,6 +59,8 @@ public class SuggestServiceImpl implements ISuggestService, ApplicationEventPubl
58 private SearchCacheService searchCacheService; 59 private SearchCacheService searchCacheService;
59 @Autowired 60 @Autowired
60 private SearchDynamicConfigService searchDynamicConfigService; 61 private SearchDynamicConfigService searchDynamicConfigService;
  62 + @Autowired
  63 + private SearchKeyWordService searchKeyWordService;
61 64
62 private ApplicationEventPublisher publisher; 65 private ApplicationEventPublisher publisher;
63 66
@@ -290,6 +293,7 @@ public class SuggestServiceImpl implements ISuggestService, ApplicationEventPubl @@ -290,6 +293,7 @@ public class SuggestServiceImpl implements ISuggestService, ApplicationEventPubl
290 } 293 }
291 294
292 String queryWord = paramMap.get(SearchRequestParams.PARAM_SEARCH_KEYWORD).toLowerCase(); 295 String queryWord = paramMap.get(SearchRequestParams.PARAM_SEARCH_KEYWORD).toLowerCase();
  296 + searchKeyWordService.recordSuggestTip(queryWord);
293 String dest = getSuggestConversionDestBySource(queryWord); 297 String dest = getSuggestConversionDestBySource(queryWord);
294 if (StringUtils.isEmpty(dest)) { 298 if (StringUtils.isEmpty(dest)) {
295 return new ArrayList<>(); 299 return new ArrayList<>();
@@ -300,7 +304,7 @@ public class SuggestServiceImpl implements ISuggestService, ApplicationEventPubl @@ -300,7 +304,7 @@ public class SuggestServiceImpl implements ISuggestService, ApplicationEventPubl
300 List<String> keywordsInDest = Arrays.stream(dest.split(",")).map(String::toLowerCase).map(String::trim).collect(Collectors.toList()); 304 List<String> keywordsInDest = Arrays.stream(dest.split(",")).map(String::toLowerCase).map(String::trim).collect(Collectors.toList());
301 QueryBuilder queryBuilder = QueryBuilders.termsQuery("keyword.keyword_lowercase", keywordsInDest); 305 QueryBuilder queryBuilder = QueryBuilders.termsQuery("keyword.keyword_lowercase", keywordsInDest);
302 FunctionScoreQueryBuilder functionScoreQueryBuilder = new FunctionScoreQueryBuilder(queryBuilder); 306 FunctionScoreQueryBuilder functionScoreQueryBuilder = new FunctionScoreQueryBuilder(queryBuilder);
303 - functionScoreQueryBuilder.add(QueryBuilders.termQuery("type",2), ScoreFunctionBuilders.weightFactorFunction(keywordsInDest.size())); 307 + functionScoreQueryBuilder.add(QueryBuilders.termQuery("type", 2), ScoreFunctionBuilders.weightFactorFunction(keywordsInDest.size()));
304 for (int index = 0; index < keywordsInDest.size(); index++) { 308 for (int index = 0; index < keywordsInDest.size(); index++) {
305 // 根据顺序从高到低加分 309 // 根据顺序从高到低加分
306 functionScoreQueryBuilder.add(QueryBuilders.termQuery("keyword.keyword_lowercase", keywordsInDest.get(index)), 310 functionScoreQueryBuilder.add(QueryBuilders.termQuery("keyword.keyword_lowercase", keywordsInDest.get(index)),