|
|
@@ -1127,24 +1127,39 @@ public class SearchServiceImpl implements SearchService {
|
|
|
*/
|
|
|
private Query setGoodsBoost(String keyword) {
|
|
|
BooleanQuery booleanQuery = new BooleanQuery();
|
|
|
- BooleanQuery componentCodeQuery = SearchUtils.getBooleanQuery(SearchConstants.GOODS_CMP_CODE_FIELD, keyword);
|
|
|
+ BooleanQuery componentCodeQuery = createQuery(SearchConstants.GOODS_CMP_CODE_FIELD, keyword);
|
|
|
componentCodeQuery.setBoost(100);
|
|
|
booleanQuery.add(componentCodeQuery, BooleanClause.Occur.SHOULD);
|
|
|
- BooleanQuery brandNameCnQuery = SearchUtils.getBooleanQuery(SearchConstants.GOODS_BR_NAME_CN_FIELD, keyword);
|
|
|
+ BooleanQuery brandNameCnQuery = createQuery(SearchConstants.GOODS_BR_NAME_CN_FIELD, keyword);
|
|
|
brandNameCnQuery.setBoost(10);
|
|
|
booleanQuery.add(brandNameCnQuery, BooleanClause.Occur.SHOULD);
|
|
|
- BooleanQuery brandNameEnQuery = SearchUtils.getBooleanQuery(SearchConstants.GOODS_BR_NAME_EN_FIELD, keyword);
|
|
|
+ BooleanQuery brandNameEnQuery = createQuery(SearchConstants.GOODS_BR_NAME_EN_FIELD, keyword);
|
|
|
brandNameEnQuery.setBoost(10);
|
|
|
booleanQuery.add(brandNameEnQuery, BooleanClause.Occur.SHOULD);
|
|
|
- BooleanQuery kindNameQuery = SearchUtils.getBooleanQuery(SearchConstants.GOODS_KI_NAME_CN_FIELD, keyword);
|
|
|
+ BooleanQuery kindNameQuery = createQuery(SearchConstants.GOODS_KI_NAME_CN_FIELD, keyword);
|
|
|
kindNameQuery.setBoost(1);
|
|
|
booleanQuery.add(kindNameQuery, BooleanClause.Occur.SHOULD);
|
|
|
- BooleanQuery descriptionQuery = SearchUtils.getBooleanQuery(SearchConstants.GOODS_CMP_DESCRIPTION_FIELD, keyword);
|
|
|
+ BooleanQuery descriptionQuery = createQuery(SearchConstants.GOODS_CMP_DESCRIPTION_FIELD, keyword);
|
|
|
descriptionQuery.setBoost(1);
|
|
|
booleanQuery.add(descriptionQuery, BooleanClause.Occur.SHOULD);
|
|
|
return booleanQuery;
|
|
|
}
|
|
|
|
|
|
+ private BooleanQuery createQuery(String field, String keyword){
|
|
|
+ if (StringUtils.isEmpty(field) || StringUtils.isEmpty(keyword)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ BooleanQuery booleanQuery = new BooleanQuery();
|
|
|
+ // 根据空格分隔关键词,分隔的词取或的关系
|
|
|
+ String[] array = keyword.split(" ");
|
|
|
+ for(String str : array){
|
|
|
+ if(!StringUtils.isEmpty(str)){
|
|
|
+ booleanQuery.add(SearchUtils.getBooleanQuery(field, str), Occur.SHOULD);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return booleanQuery;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 过滤
|
|
|
*
|