|
|
package com.yoho.search.service.service.helper;
|
|
|
|
|
|
import com.yoho.search.base.utils.CharUtils;
|
|
|
import com.yoho.search.base.utils.ISearchConstants;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Set;
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
|
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.elasticsearch.index.query.BoolQueryBuilder;
|
|
|
import org.elasticsearch.search.sort.FieldSortBuilder;
|
...
|
...
|
@@ -11,10 +17,8 @@ import org.elasticsearch.search.sort.SortOrder; |
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import com.yoho.search.base.utils.CharUtils;
|
|
|
import com.yoho.search.base.utils.ISearchConstants;
|
|
|
|
|
|
@Component
|
|
|
public class SearchSortHelper {
|
...
|
...
|
@@ -22,10 +26,10 @@ public class SearchSortHelper { |
|
|
@Autowired
|
|
|
private SearchCommonHelper searchCommonHelper;
|
|
|
|
|
|
private static final List<String> orderValues = new ArrayList<String>();
|
|
|
private Set<String> orderValues = new HashSet<String>();
|
|
|
|
|
|
@PostConstruct
|
|
|
void init() {
|
|
|
private void init() {
|
|
|
orderValues.add("_score:desc");
|
|
|
orderValues.add("_score:asc");
|
|
|
|
...
|
...
|
@@ -72,8 +76,8 @@ public class SearchSortHelper { |
|
|
orderValues.add("activities.activity_id:desc");
|
|
|
orderValues.add("activities.activity_id:asc");
|
|
|
|
|
|
orderValues.add("heatValue:asc");
|
|
|
orderValues.add("heatValue:desc");
|
|
|
orderValues.add("heatValue:asc");
|
|
|
orderValues.add("heatValue:desc");
|
|
|
}
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -85,10 +89,10 @@ public class SearchSortHelper { |
|
|
public String getLegalOrder(Map<String, String> paramMap) {
|
|
|
String sortFields = paramMap.get("order");
|
|
|
boolean isNewRecPage = searchCommonHelper.isNewRecPage(paramMap);
|
|
|
return this.getLegalOrder(sortFields,isNewRecPage);
|
|
|
return this.getLegalOrder(sortFields, isNewRecPage);
|
|
|
}
|
|
|
|
|
|
public String getLegalOrder(String order,boolean isNewRecPage) {
|
|
|
|
|
|
public String getLegalOrder(String order, boolean isNewRecPage) {
|
|
|
if (StringUtils.isBlank(order)) {
|
|
|
return null;
|
|
|
}
|
...
|
...
|
@@ -98,12 +102,12 @@ public class SearchSortHelper { |
|
|
if (!orderValues.contains(sortField)) {
|
|
|
continue;
|
|
|
}
|
|
|
realOrder.append("," + this.dealSortField(sortField,isNewRecPage));
|
|
|
realOrder.append(',' + this.dealSortField(sortField, isNewRecPage));
|
|
|
}
|
|
|
return realOrder.toString().replaceFirst(",", "");
|
|
|
}
|
|
|
|
|
|
public String dealSortField(String sortField,boolean isNewRecPage) {
|
|
|
public String dealSortField(String sortField, boolean isNewRecPage) {
|
|
|
String[] sortParts = sortField.split(":");
|
|
|
String realSortField = sortParts[0];
|
|
|
if (realSortField.contains("activities")) {
|
...
|
...
|
@@ -112,7 +116,7 @@ public class SearchSortHelper { |
|
|
// do nothing
|
|
|
} else if (realSortField.equals("discount")) {
|
|
|
realSortField = "promotionDiscount";
|
|
|
} else if (realSortField.equals("shelve_time") && !isNewRecPage) {//非新品到着的页面最新全部按真实上架时间排序
|
|
|
} else if (!isNewRecPage && realSortField.equals("shelve_time")) {// 非新品到着的页面最新全部按真实上架时间排序
|
|
|
realSortField = "firstShelveTime";
|
|
|
} else {
|
|
|
realSortField = CharUtils.underlineToCamelhump(realSortField);
|
...
|
...
|
@@ -158,7 +162,7 @@ public class SearchSortHelper { |
|
|
return true;
|
|
|
}
|
|
|
// 4、新品到着的人气排序时
|
|
|
if(searchCommonHelper.isNewRecHeatValueDescSearch(paramMap)){
|
|
|
if (searchCommonHelper.isNewRecHeatValueDescSearch(paramMap)) {
|
|
|
return true;
|
|
|
}
|
|
|
// 5、品类列表页加分
|
...
|
...
|
|