|
|
package com.yoho.search.common;
|
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
import com.yoho.search.base.utils.ConvertUtils;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.elasticsearch.index.query.BoolQueryBuilder;
|
|
|
import org.elasticsearch.index.query.QueryBuilders;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
|
import com.yoho.search.base.utils.ConvertUtils;
|
|
|
import com.yoho.search.service.helper.SearchParamHelper;
|
|
|
import com.yoho.search.service.helper.SearchSortHelper;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* Created by wangnan on 2016/12/16.
|
|
|
*/
|
|
|
public class BaseService {
|
|
|
|
|
|
/**
|
|
|
* 增加一个termsQuery
|
|
|
*/
|
|
|
protected BoolQueryBuilder boolQueryTermsQuery(Map<String, String> paramMap, BoolQueryBuilder boolFilter, String fieldName) {
|
|
|
if (paramMap.containsKey(fieldName) && StringUtils.isNotBlank(paramMap.get(fieldName))) {
|
|
|
int[] values = ConvertUtils.stringToIntArray(paramMap.get(fieldName), ",");
|
|
|
boolFilter.must(QueryBuilders.termsQuery(fieldName, values));
|
|
|
}
|
|
|
return boolFilter;
|
|
|
}
|
|
|
/**
|
|
|
* 增加一个termsQuery
|
|
|
*/
|
|
|
protected BoolQueryBuilder boolQueryTermsQuery(Map<String, String> paramMap, BoolQueryBuilder boolFilter, String fieldName) {
|
|
|
if (paramMap.containsKey(fieldName) && StringUtils.isNotBlank(paramMap.get(fieldName))) {
|
|
|
List<Integer> values = ConvertUtils.stringToIntList(paramMap.get(fieldName), ",");
|
|
|
if (values == null || values.isEmpty()) {
|
|
|
return boolFilter;
|
|
|
}
|
|
|
boolFilter.must(QueryBuilders.termsQuery(fieldName, values));
|
|
|
}
|
|
|
return boolFilter;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 增加一个termQuery
|
|
|
*/
|
|
|
protected BoolQueryBuilder boolQueryTermQuery(Map<String, String> paramMap, BoolQueryBuilder boolFilter, String fieldName) {
|
|
|
if (paramMap.containsKey(fieldName) && StringUtils.isNotBlank(paramMap.get(fieldName))) {
|
|
|
boolFilter.must(QueryBuilders.termQuery(fieldName, paramMap.get(fieldName)));
|
|
|
}
|
|
|
return boolFilter;
|
|
|
}
|
|
|
/**
|
|
|
* 增加一个termQuery
|
|
|
*/
|
|
|
protected BoolQueryBuilder boolQueryTermQuery(Map<String, String> paramMap, BoolQueryBuilder boolFilter, String fieldName) {
|
|
|
if (paramMap.containsKey(fieldName) && StringUtils.isNotBlank(paramMap.get(fieldName))) {
|
|
|
boolFilter.must(QueryBuilders.termQuery(fieldName, paramMap.get(fieldName)));
|
|
|
}
|
|
|
return boolFilter;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 通用的过滤请求
|
|
|
*/
|
|
|
protected BoolQueryBuilder generalHandler(Map<String, String> paramMap, BoolQueryBuilder boolFilter) {
|
|
|
for (String key : paramMap.keySet()) {
|
|
|
if (key.startsWith("not_")) {
|
|
|
String[] values = paramMap.get(key).split(",");
|
|
|
boolFilter.mustNot(QueryBuilders.termsQuery(key.substring(4, key.length()), values));
|
|
|
}
|
|
|
if (key.startsWith("filter_")) {
|
|
|
String field = key.substring(7, key.length());
|
|
|
boolFilter.must(QueryBuilders.termsQuery(field, paramMap.get(key).split(",")));
|
|
|
}
|
|
|
if (key.startsWith("missing_")) {
|
|
|
String field = key.substring(8, key.length());
|
|
|
boolFilter.mustNot(QueryBuilders.existsQuery(field));
|
|
|
}
|
|
|
}
|
|
|
if (boolFilter.hasClauses()) {
|
|
|
return boolFilter;
|
|
|
} else {
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
/**
|
|
|
* 通用的过滤请求
|
|
|
*/
|
|
|
protected BoolQueryBuilder generalHandler(Map<String, String> paramMap, BoolQueryBuilder boolFilter) {
|
|
|
for (String key : paramMap.keySet()) {
|
|
|
if (key.startsWith("not_")) {
|
|
|
String[] values = paramMap.get(key).split(",");
|
|
|
boolFilter.mustNot(QueryBuilders.termsQuery(key.substring(4, key.length()), values));
|
|
|
}
|
|
|
if (key.startsWith("filter_")) {
|
|
|
String field = key.substring(7, key.length());
|
|
|
boolFilter.must(QueryBuilders.termsQuery(field, paramMap.get(key).split(",")));
|
|
|
}
|
|
|
if (key.startsWith("missing_")) {
|
|
|
String field = key.substring(8, key.length());
|
|
|
boolFilter.mustNot(QueryBuilders.existsQuery(field));
|
|
|
}
|
|
|
}
|
|
|
if (boolFilter.hasClauses()) {
|
|
|
return boolFilter;
|
|
|
} else {
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
protected int getPage(Map<String, String> paramMap) {
|
|
|
int page = StringUtils.isBlank(paramMap.get("page")) ? 1 : Integer.parseInt(paramMap.get("page"));
|
|
|
return page;
|
|
|
}
|
|
|
protected int getPage(Map<String, String> paramMap) {
|
|
|
int page = StringUtils.isBlank(paramMap.get("page")) ? 1 : Integer.parseInt(paramMap.get("page"));
|
|
|
return page;
|
|
|
}
|
|
|
} |
...
|
...
|
|