Authored by Gino Zhang

智能搜索提示给keyword_ik增加权重

@@ -15,13 +15,10 @@ import com.yoho.search.service.utils.SearchRequestParams; @@ -15,13 +15,10 @@ import com.yoho.search.service.utils.SearchRequestParams;
15 import com.yoho.search.service.vo.SuggestApiResult; 15 import com.yoho.search.service.vo.SuggestApiResult;
16 import org.apache.commons.collections.CollectionUtils; 16 import org.apache.commons.collections.CollectionUtils;
17 import org.apache.commons.lang.StringUtils; 17 import org.apache.commons.lang.StringUtils;
18 -import org.elasticsearch.common.lucene.search.function.FieldValueFactorFunction;  
19 import org.elasticsearch.index.query.MatchQueryBuilder; 18 import org.elasticsearch.index.query.MatchQueryBuilder;
20 import org.elasticsearch.index.query.MultiMatchQueryBuilder; 19 import org.elasticsearch.index.query.MultiMatchQueryBuilder;
21 import org.elasticsearch.index.query.QueryBuilder; 20 import org.elasticsearch.index.query.QueryBuilder;
22 import org.elasticsearch.index.query.QueryBuilders; 21 import org.elasticsearch.index.query.QueryBuilders;
23 -import org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder;  
24 -import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders;  
25 import org.elasticsearch.search.sort.SortBuilder; 22 import org.elasticsearch.search.sort.SortBuilder;
26 import org.elasticsearch.search.sort.SortBuilders; 23 import org.elasticsearch.search.sort.SortBuilders;
27 import org.elasticsearch.search.sort.SortOrder; 24 import org.elasticsearch.search.sort.SortOrder;
@@ -330,15 +327,15 @@ public class SuggestServiceImpl implements ISuggestService, ApplicationEventPubl @@ -330,15 +327,15 @@ public class SuggestServiceImpl implements ISuggestService, ApplicationEventPubl
330 final String countField = getCountField(paramMap); 327 final String countField = getCountField(paramMap);
331 SearchParam searchParam = new SearchParam(); 328 SearchParam searchParam = new SearchParam();
332 MultiMatchQueryBuilder queryBuilder = QueryBuilders.multiMatchQuery(paramMap.get(SearchRequestParams.PARAM_SEARCH_KEYWORD)); 329 MultiMatchQueryBuilder queryBuilder = QueryBuilders.multiMatchQuery(paramMap.get(SearchRequestParams.PARAM_SEARCH_KEYWORD));
333 - queryBuilder.field("keyword").field("keyword.keyword_ik").field("keyword.keyword_pinyin").field("keyword.keyword_jianpin") 330 + queryBuilder.field("keyword").field("keyword.keyword_ik", 10F).field("keyword.keyword_pinyin").field("keyword.keyword_jianpin")
334 .analyzer("ik_smart") 331 .analyzer("ik_smart")
335 .type(MultiMatchQueryBuilder.Type.BEST_FIELDS) 332 .type(MultiMatchQueryBuilder.Type.BEST_FIELDS)
336 .operator(MatchQueryBuilder.Operator.OR) 333 .operator(MatchQueryBuilder.Operator.OR)
337 .minimumShouldMatch("20%"); 334 .minimumShouldMatch("20%");
338 335
339 // 根据关联的数量增加打分 _score = _score * 0.05 * log(count + 2) 336 // 根据关联的数量增加打分 _score = _score * 0.05 * log(count + 2)
340 - FunctionScoreQueryBuilder functionScoreQueryBuilder = new FunctionScoreQueryBuilder(queryBuilder);  
341 - functionScoreQueryBuilder.add(ScoreFunctionBuilders.fieldValueFactorFunction(countField).factor(0.05F).modifier(FieldValueFactorFunction.Modifier.LOG2P).missing(0)); 337 + // FunctionScoreQueryBuilder functionScoreQueryBuilder = new FunctionScoreQueryBuilder(queryBuilder);
  338 + // functionScoreQueryBuilder.add(ScoreFunctionBuilders.fieldValueFactorFunction(countField).factor(0.05F).modifier(FieldValueFactorFunction.Modifier.LOG2P).missing(0));
342 339
343 searchParam.setQuery(queryBuilder); 340 searchParam.setQuery(queryBuilder);
344 searchParam.setPage(1); 341 searchParam.setPage(1);