|
|
package com.yoho.search.service.index;
|
|
|
|
|
|
import com.yoho.search.base.utils.ISearchConstants;
|
|
|
import com.yoho.search.base.utils.ProductIndexEsField;
|
|
|
import com.yoho.search.common.SearchCommonService;
|
|
|
import com.yoho.search.core.es.model.SearchParam;
|
|
|
import com.yoho.search.core.es.model.SearchResult;
|
|
|
import com.yoho.search.dal.model.SimilarSkn;
|
|
|
import org.apache.commons.collections.MapUtils;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.elasticsearch.index.query.BoolQueryBuilder;
|
|
|
import org.elasticsearch.index.query.QueryBuilders;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* @author wangnan
|
|
|
* @version 2018/5/23
|
|
|
*/
|
|
|
@Service
|
|
|
public class BigDataSimilarSknImgAliIndexBaseService {
|
|
|
|
|
|
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
|
|
|
|
@Autowired
|
|
|
private SearchCommonService searchCommonService;
|
|
|
|
|
|
|
|
|
public SimilarSkn querySimilarSkn(String productSkn) {
|
|
|
try {
|
|
|
SearchParam searchParam = new SearchParam();
|
|
|
BoolQueryBuilder boolFilter = QueryBuilders.boolQuery();
|
|
|
boolFilter.must(QueryBuilders.termsQuery(ProductIndexEsField.productSkn, productSkn));
|
|
|
searchParam.setFiter(boolFilter);
|
|
|
searchParam.setAggregationBuilders(null);
|
|
|
searchParam.setSize(1);
|
|
|
String productIndexName = ISearchConstants.INDEX_NAME_BIGDATA_SIMILAR_SKN_IMG_ALI_INDEX;
|
|
|
SearchResult searchResult = searchCommonService.doSearch(productIndexName, searchParam);
|
|
|
if (searchResult == null) {
|
|
|
return null;
|
|
|
}
|
|
|
List<Map<String, Object>> similarSknResults = searchResult.getResultList();
|
|
|
if (CollectionUtils.isEmpty(similarSknResults) || similarSknResults.get(0) == null) {
|
|
|
return null;
|
|
|
}
|
|
|
Map<String, Object> result = similarSknResults.get(0);
|
|
|
SimilarSkn similarSkn = new SimilarSkn();
|
|
|
similarSkn.setDataId(MapUtils.getInteger(result, "dateId", 0));
|
|
|
similarSkn.setSameShopImgSimilarSkns(MapUtils.getString(result, "sameShopImgSimilarSkns", ""));
|
|
|
similarSkn.setDiffShopImgSimilarSkns(MapUtils.getString(result, "diffShopImgSimilarSkns", ""));
|
|
|
return similarSkn;
|
|
|
} catch (Exception e) {
|
|
|
logger.error(e.getMessage(), e);
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public List<String> getSimilarProductSknListInShop(String productSkn) {
|
|
|
try {
|
|
|
SimilarSkn similarSkn = this.querySimilarSkn(productSkn);
|
|
|
List<String> similarProductSknList = new ArrayList<>();
|
|
|
if (similarSkn != null && StringUtils.isNotBlank(similarSkn.getSameShopImgSimilarSkns())) {
|
|
|
String[] productSknArray = similarSkn.getSameShopImgSimilarSkns().split(",");
|
|
|
if (productSknArray.length > 0) {
|
|
|
similarProductSknList = Arrays.asList(productSknArray);
|
|
|
}
|
|
|
}
|
|
|
return similarProductSknList;
|
|
|
}catch (Exception e){
|
|
|
logger.error(e.getMessage(), e);
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
} |