|
|
@@ -105,9 +105,9 @@ public class SearchServiceImpl implements SearchService {
|
|
|
private static final int PAGE_SIZE = 20;
|
|
|
|
|
|
/**
|
|
|
- * 默认每页的大小
|
|
|
+ * 品牌、类目分词可能重复,品牌每页取100个
|
|
|
*/
|
|
|
- private static final int BRAND_PAGE_SIZE = 100;
|
|
|
+ private static final int DUPLICATE_PAGE_SIZE = 100;
|
|
|
|
|
|
private static Logger logger = LoggerFactory.getLogger(SearchServiceImpl.class);
|
|
|
|
|
|
@@ -1698,7 +1698,7 @@ public class SearchServiceImpl implements SearchService {
|
|
|
sPage.setFirst(true);
|
|
|
}
|
|
|
size = size != null && size > 0 ? size : PAGE_SIZE;
|
|
|
- sPage.setSize(duplicateType.equals(SearchConstants.BRAND) ? BRAND_PAGE_SIZE : size);
|
|
|
+ sPage.setSize(DUPLICATE_PAGE_SIZE);
|
|
|
|
|
|
DuplicateFilter duplicateFilter = null;
|
|
|
if (!StringUtils.isEmpty(duplicateType)) {
|
|
|
@@ -1744,39 +1744,41 @@ public class SearchServiceImpl implements SearchService {
|
|
|
}
|
|
|
|
|
|
List<Object> content = new ArrayList<>();
|
|
|
+ List<Object> results = new ArrayList<>();
|
|
|
if (indexName.equals(SearchConstants.GOODS_TABLE_NAME)) {
|
|
|
- Map<String, List<Object>> map = new HashMap<>();
|
|
|
- List<Object> allStoreUuids = new ArrayList<>();
|
|
|
for (Document document : documents) {
|
|
|
- allStoreUuids.add(document.get(SearchConstants.GOODS_ST_UUID_FIELD));
|
|
|
- }
|
|
|
- // 按店铺分组
|
|
|
- for (Object object : allStoreUuids) {
|
|
|
- if (map.get(String.valueOf(object)) == null) {
|
|
|
- List<Object> storeUuids = new ArrayList<>();
|
|
|
- storeUuids.add(String.valueOf(object));
|
|
|
- map.put(String.valueOf(object), storeUuids);
|
|
|
- } else {
|
|
|
- map.get(String.valueOf(object)).add(object);
|
|
|
- totalHits --;
|
|
|
- }
|
|
|
- }
|
|
|
- // 按店铺批次数量排序
|
|
|
- List<Map.Entry<String, List<Object>>> stuuids = new ArrayList<>(map.entrySet());
|
|
|
- Collections.sort(stuuids, new Comparator<Map.Entry<String, List<Object>>> () {
|
|
|
- @Override
|
|
|
- public int compare(Map.Entry<String, List<Object>> o1, Map.Entry<String, List<Object>> o2) {
|
|
|
- return o1.getValue().size() - o2.getValue().size();
|
|
|
- }
|
|
|
- });
|
|
|
- for (int i = 0; i < (stuuids.size() < size ? stuuids.size() : size) ; i ++) {
|
|
|
- content.add(stuuids.get(i).getKey());
|
|
|
+ results.add(document.get(SearchConstants.GOODS_ST_UUID_FIELD));
|
|
|
}
|
|
|
} else if (indexName.equals(SearchConstants.PRODUCTS_PRIVATE_TABLE_NAME)) {
|
|
|
for (Document document : documents) {
|
|
|
- content.add(Long.parseLong(document.get(SearchConstants.PRODUCT_PRIVATE_ENUU_FIELD)));
|
|
|
+ results.add(Long.parseLong(document.get(SearchConstants.PRODUCT_PRIVATE_ENUU_FIELD)));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ Map<String, List<Object>> map = new HashMap<>();
|
|
|
+ // 结果去重
|
|
|
+ for (Object object : results) {
|
|
|
+ if (map.get(String.valueOf(object)) == null) {
|
|
|
+ List<Object> storeUuids = new ArrayList<>();
|
|
|
+ storeUuids.add(String.valueOf(object));
|
|
|
+ map.put(String.valueOf(object), storeUuids);
|
|
|
+ } else {
|
|
|
+ map.get(String.valueOf(object)).add(object);
|
|
|
+ totalHits --;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 按批次、物料数量排序
|
|
|
+ List<Map.Entry<String, List<Object>>> stuuids = new ArrayList<>(map.entrySet());
|
|
|
+ Collections.sort(stuuids, new Comparator<Map.Entry<String, List<Object>>> () {
|
|
|
+ @Override
|
|
|
+ public int compare(Map.Entry<String, List<Object>> o1, Map.Entry<String, List<Object>> o2) {
|
|
|
+ return o1.getValue().size() - o2.getValue().size();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ for (int i = 0; i < (stuuids.size() < size ? stuuids.size() : size) ; i ++) {
|
|
|
+ content.add(stuuids.get(i).getKey());
|
|
|
+ }
|
|
|
+
|
|
|
// 设置总元素个数、页数等信息
|
|
|
int totalPage = (int) Math.ceil(totalHits / (1.0 * sPage.getSize()));
|
|
|
sPage.setTotalPage(totalPage);
|