feat: There is no way the
This commit is contained in:
+5
-1
@@ -96,7 +96,11 @@ public class SearchCenterController extends BaseController<Map<String, Object>>
|
||||
}
|
||||
return Result.success(getPageInfo(searchInfoEO.getPager(), result));
|
||||
} else {
|
||||
result = searchCenterService.searchSarBykey(searchInfoEO);
|
||||
if (searchInfoEO.getQueryStatus() != null && StringUtils.isNotBlank(searchInfoEO.getQueryStatus()) && searchInfoEO.getQueryStatus().equals("advancedSearch") && null != searchInfoEO.getSelectValue() && StringUtils.isNotBlank(searchInfoEO.getSelectValue())) {
|
||||
result = searchCenterService.searchSarBykey(searchInfoEO);
|
||||
}else {
|
||||
result = searchCenterService.searchSarConditionBykey(searchInfoEO);
|
||||
}
|
||||
// 非动态消息的需要查询为我推荐
|
||||
for (int i = 0; i < result.size(); i++) {
|
||||
String collectId = personCollectEOService.queryCollectByUserAndId(result.get(i).get("id").toString());
|
||||
|
||||
@@ -239,6 +239,8 @@ public class SeniorSearchInfoEO extends BasePage {
|
||||
private String stand_status;
|
||||
private String isHigh;
|
||||
|
||||
private String queryStatus;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -11,6 +11,8 @@ public interface SearchCenterService {
|
||||
|
||||
List<Map<String, Object>> searchSarBykey(SeniorSearchInfoEO searchInfoEO) throws Exception;
|
||||
|
||||
List<Map<String, Object>> searchSarConditionBykey(SeniorSearchInfoEO searchInfoEO) throws Exception;
|
||||
|
||||
/**
|
||||
* 查询结果集searchResponse装换成List形式
|
||||
* @param searchResponse 需要转换的数据
|
||||
|
||||
+290
-149
@@ -37,6 +37,7 @@ import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
@@ -57,19 +58,11 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
||||
private static final String ISSUE_TIME = "issue_time_data";
|
||||
private static final String PUT_TIME = "put_time";
|
||||
private static final String EPOCH_MILLIS = "epoch_millis";
|
||||
String numbershowStr = "numbershow";
|
||||
String nameshowStr = "nameshow";
|
||||
String nameshowSplit = "nameshowSplit";
|
||||
String numbershowSplit = "numbershowSplit";
|
||||
String replacedStandNumStr = "replaced_stand_num";
|
||||
String replaceStandNumStr = "replace_stand_num";
|
||||
String content = "content";
|
||||
|
||||
//关键字检索
|
||||
@Override
|
||||
public List<Map<String, Object>> searchSarBykey(SeniorSearchInfoEO searchInfoEO) throws Exception {
|
||||
//判断是否高级查询 isHight = true(searchInfoEO.getIsHigh()为空)时,证明不是高级查询
|
||||
boolean isHight = StringUtils.isBlank(searchInfoEO.getIsHigh());
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
SearchRequestBuilder searchRequestBuilder;
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
@@ -78,7 +71,7 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
||||
|
||||
|
||||
searchRequestBuilder = client.prepareSearch(searchInfoEO.getSelectIndex())
|
||||
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
|
||||
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
|
||||
.setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize())
|
||||
.addSort("issueTime", SortOrder.DESC)
|
||||
.setSize(searchInfoEO.getPageSize());
|
||||
@@ -114,16 +107,7 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
||||
.should(QueryBuilders.wildcardQuery("standSystem.keyword", "*"+searchInfoEO.getSelectValue()+"*"));
|
||||
break;
|
||||
case "laws":
|
||||
multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),
|
||||
numbershowSplit,nameshowSplit,nameshowStr,numbershowStr,"numberExpNull","standstateshow","countryShow", "natureShow", "replace_laws_num",
|
||||
"synopsis","standEnName",replacedStandNumStr,"baseSearchContent",content,"CYSDShow","SYCLLXShow","standstateshow","ZRLXShow","stand_number","isRelateAccess","YQLXShow","SYCLLXShow","GXHBQShow","ZCGCSShow","FBJG","SVPPSName","XGBMShow","ZRBMShow","FOShow","GKGLBMShow","WSSFCYShow","replaceLawsNum","replacedLawsNum","XMPGJSShow","issue_time","ZCCSSRQ","XCXSSRQ","EOPSSRQ","XGLC","accessCountry").minimumShouldMatch("100%");
|
||||
boolQueryMust.must(multiQueryBuilder);
|
||||
boolQueryShould.should(QueryBuilders.wildcardQuery(nameshowStr, "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery(numbershowStr, "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery(numbershowSplit, "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery(nameshowSplit, "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery(content, "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("CYSDShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
boolQueryShould.should(QueryBuilders.wildcardQuery("CYSDShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("SYCLLXShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("accessCountry", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("standstateshow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
@@ -201,6 +185,136 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
||||
return result;
|
||||
}
|
||||
|
||||
// 条件
|
||||
@Override
|
||||
public List<Map<String, Object>> searchSarConditionBykey(SeniorSearchInfoEO searchInfoEO) throws Exception {
|
||||
//判断是否高级查询 isHight = true(searchInfoEO.getIsHigh()为空)时,证明不是高级查询
|
||||
boolean isHight = StringUtils.isBlank(searchInfoEO.getIsHigh());
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
SearchRequestBuilder searchRequestBuilder;
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
BoolQueryBuilder boolQueryShould = QueryBuilders.boolQuery();
|
||||
BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery();
|
||||
|
||||
|
||||
searchRequestBuilder = client.prepareSearch(searchInfoEO.getSelectIndex())
|
||||
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
|
||||
.setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize())
|
||||
.addSort("issueTime", SortOrder.DESC)
|
||||
.setSize(searchInfoEO.getPageSize());
|
||||
|
||||
if(searchInfoEO.getSelectIndex().equals("stand")) {
|
||||
boolQueryShould = queryStandMsg(searchInfoEO,boolQueryMust,searchRequestBuilder);
|
||||
} else if(searchInfoEO.getSelectIndex().equals("laws")){
|
||||
boolQueryShould = queryLawsMsg(searchInfoEO,boolQueryMust,searchRequestBuilder);
|
||||
} else if(searchInfoEO.getSelectIndex().equals("bussstand")){
|
||||
boolQueryShould = queryBussStandMsg(searchInfoEO,boolQueryMust,searchRequestBuilder);
|
||||
}
|
||||
|
||||
if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue()) && StringUtils.isBlank(searchInfoEO.getIsHigh())){
|
||||
QueryBuilder multiQueryBuilder;
|
||||
switch (searchInfoEO.getSelectIndex()){
|
||||
case "stand":
|
||||
if (isRqFormat(searchInfoEO.getSelectValue())) {
|
||||
Long starttime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime();
|
||||
Long endtime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime();
|
||||
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true);
|
||||
boolQueryShould.should(rangeQueryBuilder);
|
||||
}
|
||||
boolQueryShould.should(QueryBuilders.wildcardQuery("standSort.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("standNumber.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("standYear.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("stand_name.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("standNatureName.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("textStatusName.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("isRelateAccessName.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.matchPhraseQuery("content", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("standSystem.keyword", "*"+searchInfoEO.getSelectValue()+"*"));
|
||||
break;
|
||||
case "laws":
|
||||
boolQueryShould.should(QueryBuilders.wildcardQuery("CYSDShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("SYCLLXShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("accessCountry", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("standstateshow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("ZRLXShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("isRelateAccess", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("YQLXShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("SYCLLXShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("GXHBQShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("XCXSSRQ", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("ZCCSSRQ", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("EOPSSRQ", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("ZCGCSShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("FBJG", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("SVPPSName", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("XGBMShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
// .should(QueryBuilders.wildcardQuery("ZRBMName", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("ZRBMShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("FOShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("GKGLBMShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("content", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("WSSFCYShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("replaceLawsNum", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("replacedLawsNum", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("issue_time", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("XMPGJSShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("XGLC", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("stand_number", "*"+searchInfoEO.getSelectValue()+"*"));
|
||||
break;
|
||||
case "bussstand":
|
||||
boolQueryShould.should(QueryBuilders.wildcardQuery("standSort.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("stand_code.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("standYear.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("stand_name.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||
.should(QueryBuilders.wildcardQuery("textStatusBuss.keyword", "*"+searchInfoEO.getSelectValue()+"*"));
|
||||
if (isRqFormat(searchInfoEO.getSelectValue())) {
|
||||
Long starttime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime();
|
||||
Long endtime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime();
|
||||
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true);
|
||||
boolQueryShould.should(rangeQueryBuilder);
|
||||
RangeQueryBuilder rangeQueryBuilder2 = QueryBuilders.rangeQuery("put_time_data").format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true);
|
||||
boolQueryShould.should(rangeQueryBuilder2);
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
if(boolQueryShould!=null){
|
||||
boolQueryBuilder.must(QueryBuilders.matchQuery("validFlag", 0));
|
||||
if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandType())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standType.keyword", "*"+searchInfoEO.getStandType()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getStandSort()+" "+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getTextStatus())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatus.keyword", "*"+searchInfoEO.getTextStatus()+"*"));
|
||||
}
|
||||
boolQueryBuilder.must(boolQueryShould);
|
||||
}else {
|
||||
boolQueryBuilder.must(boolQueryShould);
|
||||
}
|
||||
|
||||
//在结果中检索
|
||||
if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword()) && StringUtils.isNotBlank(searchInfoEO.getIsHigh())) {
|
||||
QueryBuilder multiQuery = queryInResult(searchInfoEO);
|
||||
boolQueryBuilder.must(multiQuery);
|
||||
}
|
||||
|
||||
searchRequestBuilder.setQuery(boolQueryBuilder);
|
||||
|
||||
// 获取查询到的结果
|
||||
result = countStandSearchResult(searchRequestBuilder,searchInfoEO);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private Date dateFormatToStr(String dateStr){
|
||||
Date date = new Date();
|
||||
try {
|
||||
@@ -264,48 +378,40 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
||||
|
||||
}
|
||||
|
||||
String fieldInfo = InitStandAttrSearchUtil.queryField;
|
||||
String fieldLawsInfo = InitStandAttrSearchUtil.queryFieldLaws;
|
||||
String fieldBussInfo = InitStandAttrSearchUtil.queryFieldBuss;
|
||||
List<String> fieldInfoList = Arrays.asList(fieldInfo .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList());
|
||||
List<String> fieldLawsInfoList = Arrays.asList(fieldLawsInfo .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList());
|
||||
List<String> fieldBussInfoList = Arrays.asList(fieldBussInfo .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList());
|
||||
List<String> fieldList = new ArrayList<>();
|
||||
fieldList.addAll(fieldInfoList);
|
||||
fieldList.addAll(fieldLawsInfoList);
|
||||
fieldList.addAll(fieldBussInfoList);
|
||||
List<String> fieldList = getStringField();
|
||||
// 自动匹配动态属性字段 es 查询
|
||||
for (String field : fieldList) {
|
||||
// 关键字查询属性字段
|
||||
String keyWordField = field + ".keyword";
|
||||
String keyWordField2 = field + "Name.keyword";
|
||||
if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){
|
||||
boolQueryBuilderMust.should(QueryBuilders.wildcardQuery(keyWordField2, "*"+searchInfoEO.getSelectValue()+"*"));
|
||||
}else {
|
||||
if(collectAttrMap.containsKey(field)){
|
||||
List<String> fields = new ArrayList<>();
|
||||
Object json= new JSONTokener(collectAttrMap.get(field).toString()).nextValue();
|
||||
if(json instanceof org.json.JSONArray){
|
||||
fields = JSONObject.parseArray(collectAttrMap.get(field).toString(),String.class);
|
||||
}else {
|
||||
if(!json.equals("null")){
|
||||
fields.add(collectAttrMap.get(field).toString());
|
||||
}
|
||||
}
|
||||
if(!fields.isEmpty()){
|
||||
if(fields.size() > 1){
|
||||
BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder();
|
||||
fields.forEach(s -> {
|
||||
boolQueryBuilderShould.should(QueryBuilders.wildcardQuery(keyWordField, "*"+s+"*"));
|
||||
});
|
||||
boolQueryBuilder.must(boolQueryBuilderShould);
|
||||
}else {
|
||||
boolQueryBuilderMust.must(QueryBuilders.wildcardQuery(keyWordField, "*"+fields.get(0)+"*"));
|
||||
}
|
||||
|
||||
if(collectAttrMap.containsKey(field)){
|
||||
List<String> fields = new ArrayList<>();
|
||||
Object json= new JSONTokener(collectAttrMap.get(field).toString()).nextValue();
|
||||
if(json instanceof org.json.JSONArray){
|
||||
fields = JSONObject.parseArray(collectAttrMap.get(field).toString(),String.class);
|
||||
}else {
|
||||
if(!json.equals("null")){
|
||||
fields.add(collectAttrMap.get(field).toString());
|
||||
}
|
||||
}
|
||||
if(!fields.isEmpty()){
|
||||
if(fields.size() > 1){
|
||||
BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder();
|
||||
fields.forEach(s -> {
|
||||
boolQueryBuilderShould.should(QueryBuilders.wildcardQuery(keyWordField, "*"+s+"*"));
|
||||
});
|
||||
boolQueryBuilder.must(boolQueryBuilderShould);
|
||||
}else {
|
||||
boolQueryBuilderMust.must(QueryBuilders.wildcardQuery(keyWordField, "*"+fields.get(0)+"*"));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
// if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){
|
||||
//// boolQueryBuilderMust.should(QueryBuilders.wildcardQuery(keyWordField2, "*"+searchInfoEO.getSelectValue()+"*"));
|
||||
// }else {
|
||||
//
|
||||
// }
|
||||
}
|
||||
if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())) {
|
||||
boolQueryBuilder.should(boolQueryBuilderMust);
|
||||
@@ -353,62 +459,75 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
||||
return boolQueryBuilder;
|
||||
}
|
||||
|
||||
private List<String> getStringField() {
|
||||
String fieldInfo = InitStandAttrSearchUtil.queryField;
|
||||
String fieldLawsInfo = InitStandAttrSearchUtil.queryFieldLaws;
|
||||
String fieldBussInfo = InitStandAttrSearchUtil.queryFieldBuss;
|
||||
List<String> fieldInfoList = Arrays.asList(fieldInfo .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList());
|
||||
List<String> fieldLawsInfoList = Arrays.asList(fieldLawsInfo .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList());
|
||||
List<String> fieldBussInfoList = Arrays.asList(fieldBussInfo .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList());
|
||||
List<String> fieldList = new ArrayList<>();
|
||||
fieldList.addAll(fieldInfoList);
|
||||
fieldList.addAll(fieldLawsInfoList);
|
||||
fieldList.addAll(fieldBussInfoList);
|
||||
return fieldList;
|
||||
}
|
||||
|
||||
//检索国内外标准数据
|
||||
public BoolQueryBuilder queryStandMsg(SeniorSearchInfoEO searchInfoEO, BoolQueryBuilder boolQueryBuilder, SearchRequestBuilder searchRequestBuilder) throws Exception{
|
||||
String nameshowStr = "nameshow";
|
||||
// 高级搜索项,只针对标准
|
||||
if(searchInfoEO.getSelectValue() == null || searchInfoEO.getSelectValue().equals("")){
|
||||
// 高级搜索项,只针对标准
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandType())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standType.keyword", "*"+searchInfoEO.getStandType()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) {
|
||||
List<String> list = Arrays.asList(searchInfoEO.getStandSort().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList());
|
||||
if(list.size() > 1){
|
||||
BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder();
|
||||
list.forEach(s -> {
|
||||
boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+s+" "+"*"));
|
||||
});
|
||||
boolQueryBuilder.must(boolQueryBuilderShould);
|
||||
}else {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getStandSort()+" "+"*"));
|
||||
}
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandNumber())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standNumber.keyword", "*"+searchInfoEO.getStandNumber()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandYear())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standYear.keyword", "*"+searchInfoEO.getStandYear()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandName())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standName.keyword", "*"+searchInfoEO.getStandName()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandEnName())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getStandEnName()+"*"));
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getTextStatus())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatus.keyword", "*"+searchInfoEO.getTextStatus()+"*"));
|
||||
// 高级搜索项,只针对标准
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandType())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standType.keyword", "*"+searchInfoEO.getStandType()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) {
|
||||
List<String> list = Arrays.asList(searchInfoEO.getStandSort().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList());
|
||||
if(list.size() > 1){
|
||||
BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder();
|
||||
list.forEach(s -> {
|
||||
boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+s+" "+"*"));
|
||||
});
|
||||
boolQueryBuilder.must(boolQueryBuilderShould);
|
||||
}else {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getStandSort()+" "+"*"));
|
||||
}
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandNumber())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standNumber.keyword", "*"+searchInfoEO.getStandNumber()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandYear())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standYear.keyword", "*"+searchInfoEO.getStandYear()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandName())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standName.keyword", "*"+searchInfoEO.getStandName()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandEnName())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getStandEnName()+"*"));
|
||||
}
|
||||
|
||||
if (searchInfoEO.getIssueTime() != null) {
|
||||
Long starttime = searchInfoEO.getIssueTime().getTime();
|
||||
Long endtime = searchInfoEO.getIssueTime().getTime();
|
||||
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true);
|
||||
boolQueryBuilder.filter(rangeQueryBuilder);
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getTextStatus())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatus.keyword", "*"+searchInfoEO.getTextStatus()+"*"));
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getIsRelateAccess())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("isRelateAccess.keyword", "*"+searchInfoEO.getIsRelateAccess()+"*"));
|
||||
}
|
||||
if (searchInfoEO.getIssueTime() != null) {
|
||||
Long starttime = searchInfoEO.getIssueTime().getTime();
|
||||
Long endtime = searchInfoEO.getIssueTime().getTime();
|
||||
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true);
|
||||
boolQueryBuilder.filter(rangeQueryBuilder);
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandNature())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standNature.keyword", "*"+searchInfoEO.getStandNature()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getIsRelateAccess())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("isRelateAccess.keyword", "*"+searchInfoEO.getIsRelateAccess()+"*"));
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandSystem())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standSystem.keyword", "*"+searchInfoEO.getStandSystem()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandNature())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standNature.keyword", "*"+searchInfoEO.getStandNature()+"*"));
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandSystem())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standSystem.keyword", "*"+searchInfoEO.getStandSystem()+"*"));
|
||||
}
|
||||
|
||||
querySeniorMsg(searchInfoEO,boolQueryBuilder);
|
||||
@@ -625,51 +744,49 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
||||
* boolQueryBuilder :must
|
||||
* */
|
||||
public BoolQueryBuilder queryBussStandMsg(SeniorSearchInfoEO searchInfoEO, BoolQueryBuilder boolQueryBuilder, SearchRequestBuilder searchRequestBuilder) throws Exception{
|
||||
if(searchInfoEO.getSelectValue() == null || searchInfoEO.getSelectValue().equals("")){
|
||||
// 高级搜索项,只针对标准
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standSort.keyword", "*"+searchInfoEO.getStandSort()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandCode())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standNumber.keyword", "*"+searchInfoEO.getStandCode()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandYear())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standYear.keyword", "*"+searchInfoEO.getStandYear()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandName())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("stand_name.keyword", "*"+searchInfoEO.getStandName()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandEnName())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getStandEnName()+"*"));
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getTextStatusBuss())) {
|
||||
List<String> list = Arrays.asList(searchInfoEO.getTextStatusBuss().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList());
|
||||
if(list.size() > 1){
|
||||
BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder();
|
||||
list.forEach(s -> {
|
||||
boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("textStatusBuss.keyword", "*"+s+"*"));
|
||||
});
|
||||
boolQueryBuilder.must(boolQueryBuilderShould);
|
||||
}else {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatusBuss.keyword", "*"+searchInfoEO.getTextStatusBuss()+"*"));
|
||||
}
|
||||
}
|
||||
// 高级搜索项,只针对标准
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standSort.keyword", "*"+searchInfoEO.getStandSort()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandCode())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standNumber.keyword", "*"+searchInfoEO.getStandCode()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandYear())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standYear.keyword", "*"+searchInfoEO.getStandYear()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandName())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("stand_name.keyword", "*"+searchInfoEO.getStandName()+"*"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandEnName())) {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getStandEnName()+"*"));
|
||||
}
|
||||
|
||||
if (searchInfoEO.getIssueTime() != null) {
|
||||
Long starttime = searchInfoEO.getIssueTime().getTime();
|
||||
Long endtime = searchInfoEO.getIssueTime().getTime();
|
||||
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true);
|
||||
boolQueryBuilder.filter(rangeQueryBuilder);
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getTextStatusBuss())) {
|
||||
List<String> list = Arrays.asList(searchInfoEO.getTextStatusBuss().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList());
|
||||
if(list.size() > 1){
|
||||
BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder();
|
||||
list.forEach(s -> {
|
||||
boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("textStatusBuss.keyword", "*"+s+"*"));
|
||||
});
|
||||
boolQueryBuilder.must(boolQueryBuilderShould);
|
||||
}else {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatusBuss.keyword", "*"+searchInfoEO.getTextStatusBuss()+"*"));
|
||||
}
|
||||
}
|
||||
|
||||
if (searchInfoEO.getPutTime() != null) {
|
||||
Long starttime = searchInfoEO.getPutTime().getTime();
|
||||
Long endtime = searchInfoEO.getPutTime().getTime();
|
||||
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("put_time_data").format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true);
|
||||
boolQueryBuilder.filter(rangeQueryBuilder);
|
||||
}
|
||||
if (searchInfoEO.getIssueTime() != null) {
|
||||
Long starttime = searchInfoEO.getIssueTime().getTime();
|
||||
Long endtime = searchInfoEO.getIssueTime().getTime();
|
||||
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true);
|
||||
boolQueryBuilder.filter(rangeQueryBuilder);
|
||||
}
|
||||
|
||||
if (searchInfoEO.getPutTime() != null) {
|
||||
Long starttime = searchInfoEO.getPutTime().getTime();
|
||||
Long endtime = searchInfoEO.getPutTime().getTime();
|
||||
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("put_time_data").format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true);
|
||||
boolQueryBuilder.filter(rangeQueryBuilder);
|
||||
}
|
||||
querySeniorMsg(searchInfoEO,boolQueryBuilder);
|
||||
return boolQueryBuilder;
|
||||
@@ -679,22 +796,46 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
||||
public QueryBuilder queryInResult(SeniorSearchInfoEO searchInfoEO){
|
||||
// 记录搜索记录到数据库中
|
||||
QueryBuilder multiQueryBuilder = QueryBuilders.multiMatchQuery("");
|
||||
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
|
||||
List<String> fieldList = getStringField();
|
||||
List<String> fieldNameList = new ArrayList<>();
|
||||
String[] standStr = {"content","standSort","standNumber","standYear","stand_name","standEnName","standNatureName",
|
||||
"textStatusName","isRelateAccessName","numbershow","standSystem"};
|
||||
String[] lawsStr = {"content",
|
||||
"standSort","stand_code","standYear","stand_name","standEnName","textStatusBuss"};
|
||||
String[] bussstandStr = {"content","standSort","stand_code","standYear","stand_name","standEnName","textStatusBuss"};
|
||||
for (String field : fieldList) {
|
||||
// 关键字查询属性字段
|
||||
String keyWordField2 = field + "Name";
|
||||
fieldNameList.add(keyWordField2);
|
||||
}
|
||||
switch (searchInfoEO.getSelectIndex()){
|
||||
case "stand":
|
||||
multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),
|
||||
numbershowSplit,nameshowSplit,numbershowStr,nameshowStr,"numberExpNull","standSortShow","standstateshow","countryShow","standEnName",
|
||||
"synopsis","baseSearchContent",content,"CYSDShow","CLLXShow","standstateshow","ZRLXShow","stand_name","stand_number","citeStand","DTBJH","FGXXSXXXShow","CBBH","YYBJ","XGLC","synopsis","isRelateAccess","GKDWShow","CYSDShow","FBJGShow","ZRLXShow","GXHBQShow","GZZXXName","YQLXShow","FGWHRName","ZRBMName","XGBMShow","SVPPSName","FOShow","XMPGJSShow","BDTBZBH","BYYBJ","issue_time","ZCCSSRQ","XCXSSRQ","EOPSSRQ").minimumShouldMatch("100%");
|
||||
List<String> listStrings = Stream.of(standStr).collect(Collectors.toList());
|
||||
listStrings.addAll(fieldNameList);
|
||||
String[] fieldArr = listStrings.stream().toArray(String[]::new);
|
||||
multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),fieldArr
|
||||
).minimumShouldMatch("100%");
|
||||
// boolQueryBuilder.should();
|
||||
// for (String field : fieldList) {
|
||||
// // 关键字查询属性字段
|
||||
// String keyWordField2 = field + "Name.keyword";
|
||||
// boolQueryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),keyWordField2).minimumShouldMatch("100%"));
|
||||
// }
|
||||
break;
|
||||
case "laws":
|
||||
multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),
|
||||
numbershowSplit,nameshowSplit,nameshowStr,numbershowStr,"numberExpNull","standstateshow","countryShow", "natureShow", "replace_laws_num",
|
||||
"synopsis","standEnName",replacedStandNumStr,"baseSearchContent",content,"CYSDShow","SYCLLXShow","standstateshow","ZRLXShow","stand_number","isRelateAccess","YQLXShow","SYCLLXShow","GXHBQShow","ZCGCSShow","FBJGShow","SVPPSName","XGBMShow","ZRBMShow","FOShow","GKGLBMShow","WSSFCYShow","replaceLawsNum","replacedLawsNum","XMPGJSShow","issue_time","ZCCSSRQ","XCXSSRQ","EOPSSRQ","XGLC").minimumShouldMatch("100%");
|
||||
List<String> listStringLaws = Stream.of(lawsStr).collect(Collectors.toList());
|
||||
listStringLaws.addAll(fieldNameList);
|
||||
String[] fieldLawsArr = listStringLaws.stream().toArray(String[]::new);
|
||||
multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),fieldLawsArr
|
||||
).minimumShouldMatch("100%");
|
||||
break;
|
||||
case "bussstand":
|
||||
multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),
|
||||
numbershowSplit,nameshowSplit,numbershowStr,nameshowStr,"numberExpNull","standstateshow", "standEnName",replaceStandNumStr,
|
||||
replacedStandNumStr,"countryShow","synopsis","standSortShow","ZQCBMShow","ZQCBM","stand_status",
|
||||
"baseSearchContent",content,"numbershow","nameshow","standstateshow","issue_time","replaceStandNum","replacedStandNum","QBMJShow","QBSQShow","XHQBMShow","SVPPSName","XGBMName","ZYQCRShow","ZRBMShow","ZQCBMName","QTQCRShow","content","FSRQString","FZRQString","put_time","XGLC","WFSPJSName").minimumShouldMatch("100%");
|
||||
List<String> listStringBussstand = Stream.of(bussstandStr).collect(Collectors.toList());
|
||||
listStringBussstand.addAll(fieldNameList);
|
||||
String[] fieldBussstandArr = listStringBussstand.stream().toArray(String[]::new);
|
||||
multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),fieldBussstandArr
|
||||
).minimumShouldMatch("100%");
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user