Browse Source

change goods' sort priority: specified fields > StringFieldComparatorSource > SortField.FIELD_SCORE

sunyj 8 years ago
parent
commit
31477cf0b5

+ 4 - 2
mall-search/src/main/java/com/uas/search/service/impl/SearchServiceImpl.java

@@ -926,7 +926,8 @@ public class SearchServiceImpl implements SearchService {
 			logger.info(booleanQuery.toString());
 
 			// 排序
-            // 自定义排序字段 > 分数 > 批次(访问量) > 器件(访问量 > 搜索次数) > 品牌(权重 > 访问量 > 搜索次数) > 类目(访问量 > 搜索次数)
+            // 自定义排序字段 > 批次(访问量) > 器件(访问量 > 搜索次数) > 品牌(权重 > 访问量 > 搜索次数) > 类目(访问量 > 搜索次数) > 分数
+            SortField[] customSortFields = sortGoods(keyword);
             List<SortField> sortFieldList = new ArrayList<>();
 			List<com.uas.search.constant.model.Sort> sorts = pageParams.getSort();
 			if (sorts != null && !CollectionUtils.isEmpty(sorts)) {
@@ -954,6 +955,7 @@ public class SearchServiceImpl implements SearchService {
 						break;
 					// 打分
 					case GO_SEARCH:
+                        sortFieldList.addAll(Arrays.asList(customSortFields));
 						sortFields[i++] = (SortField.FIELD_SCORE);
 						break;
 					default:
@@ -962,9 +964,9 @@ public class SearchServiceImpl implements SearchService {
 				}
                 sortFieldList.addAll(Arrays.asList(sortFields));
 			} else{
+                sortFieldList.addAll(Arrays.asList(customSortFields));
 			    sortFieldList.add(SortField.FIELD_SCORE);
             }
-            sortFieldList.addAll(Arrays.asList(sortGoods(keyword)));
             SortField[] sortFields = new SortField[sortFieldList.size()];
             sortFieldList.toArray(sortFields);
             Sort sort = new Sort(sortFields);