Authored by Gino Zhang

品类页/模糊搜索页增加推荐词和店铺推荐的功能

package com.yoho.search.service.aggregations.impls;
import org.apache.commons.collections.CollectionUtils;
import org.elasticsearch.search.aggregations.Aggregation;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
public class KeywordAggregation extends AbstractSingleFieldAggregation {
private static final List<String> IGNORE_KEYWORDS = Arrays.asList("正常", "无", "中", "中国");
public KeywordAggregation(int count) {
super(count);
}
... ... @@ -15,4 +24,14 @@ public class KeywordAggregation extends AbstractSingleFieldAggregation {
protected String getField() {
return "productAttrField";
}
@Override
public Object getAggregationResponseMap(Map<String, Aggregation> aggMaps) {
List<String> valueList = (List<String>)super.getAggregationResponseMap(aggMaps);
if(CollectionUtils.isNotEmpty(valueList)){
valueList.removeAll(IGNORE_KEYWORDS);
}
return valueList;
}
}
... ...
... ... @@ -24,7 +24,7 @@ public class ShopAggregation extends AbstractSingleFieldAggregation {
@Override
public String aggName() {
return "shopIdAgg";
return "shopAgg";
}
@Override
... ... @@ -54,6 +54,6 @@ public class ShopAggregation extends AbstractSingleFieldAggregation {
JSONObject jsonObject = (JSONObject) searchApiResult.getData();
Map<String, Map<String, Object>> shopsInfo = (Map<String, Map<String, Object>>) jsonObject.get("shopInfo");
return shopsInfo == null || shopsInfo.isEmpty() ? new ArrayList<>() : shopsInfo.values();
return shopsInfo == null || shopsInfo.isEmpty() ? new ArrayList<>() : shopsInfo.values().stream().collect(Collectors.toList());
}
}
... ...
... ... @@ -282,7 +282,7 @@ public class ProductIndexServiceImpl implements IProductIndexService,Application
public Object getResult() throws Exception {
SearchParam searchParam = getSearchParamFromMap(paramMap);
JSONObject jsonObject = aggregationService.getShopAggregationResult(searchParam, paramMap, 30);
List<Map<String, Object>> shopList = (List<Map<String, Object>>) jsonObject.get("shopIdAgg");
List<Map<String, Object>> shopList = (List<Map<String, Object>>) jsonObject.get("shopAgg");
return CollectionUtils.memoryPaging(shopList, page, count);
}
});
... ...