Merge branch 'develop_3' into 'develop_master'
feat: 搜索中心 es 高级检索 See merge request !93
This commit is contained in:
@@ -19,7 +19,7 @@ public class SQLFilter {
|
|||||||
|
|
||||||
for(int i$ = 0; i$ < len$; ++i$) {
|
for(int i$ = 0; i$ < len$; ++i$) {
|
||||||
String keyword = arr$[i$];
|
String keyword = arr$[i$];
|
||||||
if (checkStr.indexOf(keyword) != -1 && checkStr.indexOf("selectindex") == -1 && checkStr.indexOf("selectvalue") == -1) {
|
if (checkStr.indexOf(keyword) != -1) {
|
||||||
throw new AdcDaBaseException("包含非法字符");
|
throw new AdcDaBaseException("包含非法字符");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -56,10 +57,12 @@ public class SeniorSearchInfoEO extends BasePage {
|
|||||||
|
|
||||||
@ApiModelProperty(value = "标准发布日期")
|
@ApiModelProperty(value = "标准发布日期")
|
||||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||||
private Date issueTime;
|
private Date issueTime;
|
||||||
|
|
||||||
@ApiModelProperty(value = "实施日期")
|
@ApiModelProperty(value = "实施日期")
|
||||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||||
private Date putTime;
|
private Date putTime;
|
||||||
|
|
||||||
@ApiModelProperty(value = "内容摘要")
|
@ApiModelProperty(value = "内容摘要")
|
||||||
|
|||||||
+157
-117
@@ -68,63 +68,126 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
|||||||
List<Map<String, Object>> result = new ArrayList<>();
|
List<Map<String, Object>> result = new ArrayList<>();
|
||||||
SearchRequestBuilder searchRequestBuilder;
|
SearchRequestBuilder searchRequestBuilder;
|
||||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||||
// 记录搜索记录到数据库中
|
|
||||||
BoolQueryBuilder boolQueryShould = QueryBuilders.boolQuery();
|
BoolQueryBuilder boolQueryShould = QueryBuilders.boolQuery();
|
||||||
BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery();
|
BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery();
|
||||||
if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue()) && StringUtils.isBlank(searchInfoEO.getIsHigh())){
|
|
||||||
QueryBuilder multiQueryBuilder;
|
|
||||||
List<String> strings=new ArrayList<>();
|
|
||||||
switch (searchInfoEO.getSelectIndex()){
|
|
||||||
case "stand":
|
|
||||||
strings=Arrays.asList(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", "ZRBMShow", "XGBMShow", "SVPPSName", "FOShow", "XMPGJSShow", "BDTBZBH", "BYYBJ", "issue_time", "ZCCSSRQ", "XCXSSRQ", "accessCountry");
|
|
||||||
break;
|
|
||||||
case "laws":
|
|
||||||
strings=Arrays.asList(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","accessCountry");
|
|
||||||
break;
|
|
||||||
case "bussstand":
|
|
||||||
strings=Arrays.asList(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","GFXYYWJ");
|
|
||||||
break;
|
|
||||||
default: break;
|
|
||||||
}
|
|
||||||
|
|
||||||
multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), strings.toArray(new String[0])).minimumShouldMatch("100%");
|
|
||||||
boolQueryMust.must(multiQueryBuilder);
|
|
||||||
|
|
||||||
for (String string : strings) {
|
|
||||||
boolQueryShould.should(QueryBuilders.wildcardQuery(string, "*"+searchInfoEO.getSelectValue()+"*"));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//在结果中检索
|
|
||||||
if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword()) && StringUtils.isBlank(searchInfoEO.getIsHigh())) {
|
|
||||||
QueryBuilder multiQuery = queryInResult(searchInfoEO);
|
|
||||||
boolQueryBuilder.must(multiQuery);
|
|
||||||
}
|
|
||||||
|
|
||||||
searchRequestBuilder = client.prepareSearch(searchInfoEO.getSelectIndex())
|
searchRequestBuilder = client.prepareSearch(searchInfoEO.getSelectIndex())
|
||||||
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
|
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
|
||||||
.setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize())
|
.setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize())
|
||||||
.setSize(searchInfoEO.getPageSize());
|
.setSize(searchInfoEO.getPageSize());
|
||||||
boolQueryBuilder.must(QueryBuilders.matchQuery("validFlag", 0));
|
|
||||||
if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){
|
|
||||||
boolQueryBuilder.should(boolQueryShould);
|
|
||||||
}
|
|
||||||
BoolQueryBuilder boolQueryBuilder1=null;
|
|
||||||
if(searchInfoEO.getSelectIndex().equals("stand")) {
|
if(searchInfoEO.getSelectIndex().equals("stand")) {
|
||||||
boolQueryBuilder1 = queryStandMsg(searchInfoEO,boolQueryMust,searchRequestBuilder);
|
boolQueryShould = queryStandMsg(searchInfoEO,boolQueryMust,searchRequestBuilder);
|
||||||
} else if(searchInfoEO.getSelectIndex().equals("laws")){
|
} else if(searchInfoEO.getSelectIndex().equals("laws")){
|
||||||
boolQueryBuilder1 = queryLawsMsg(searchInfoEO,boolQueryMust,searchRequestBuilder);
|
boolQueryShould = queryLawsMsg(searchInfoEO,boolQueryMust,searchRequestBuilder);
|
||||||
} else if(searchInfoEO.getSelectIndex().equals("bussstand")){
|
} else if(searchInfoEO.getSelectIndex().equals("bussstand")){
|
||||||
boolQueryBuilder1 = queryBussStandMsg(searchInfoEO,boolQueryMust,searchRequestBuilder);
|
boolQueryShould = queryBussStandMsg(searchInfoEO,boolQueryMust,searchRequestBuilder);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(boolQueryBuilder1!=null){
|
if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue()) && StringUtils.isBlank(searchInfoEO.getIsHigh())){
|
||||||
boolQueryBuilder.must(boolQueryBuilder1);
|
QueryBuilder multiQueryBuilder;
|
||||||
|
switch (searchInfoEO.getSelectIndex()){
|
||||||
|
case "stand":
|
||||||
|
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("standName.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("standNature.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("textStatus.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.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()+"*"))
|
||||||
|
.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":
|
||||||
|
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","GFXYYWJ","XGBMShow").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("ZQCBMShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("standstateshow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("ZQCBM", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("stand_status", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
|
||||||
|
.should(QueryBuilders.wildcardQuery("numbershow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("standEnName", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("content", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("issue_time", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("nameshow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("standstateshow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("replaceStandNum", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("replacedStandNum", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("QBMJShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("QBSQShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("XHQBMShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("SVPPSName", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("XGBMName", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("ZYQCRShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("ZRBMShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("ZQCBMName", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("QTQCRShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("FSRQString", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("FZRQString", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("XGLC", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("WFSPJSName", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("GFXYYWJ", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("XGBMShow", "*"+searchInfoEO.getSelectValue()+"*"))
|
||||||
|
.should(QueryBuilders.wildcardQuery("put_time", "*"+searchInfoEO.getSelectValue()+"*"));
|
||||||
|
break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(boolQueryShould!=null){
|
||||||
|
boolQueryBuilder.must(QueryBuilders.matchQuery("validFlag", 0));
|
||||||
|
if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){
|
||||||
|
boolQueryBuilder.must(boolQueryShould);
|
||||||
|
}else {
|
||||||
|
boolQueryBuilder.must(boolQueryShould);
|
||||||
|
}
|
||||||
searchRequestBuilder.setQuery(boolQueryBuilder);
|
searchRequestBuilder.setQuery(boolQueryBuilder);
|
||||||
//在结果中检索
|
//在结果中检索
|
||||||
if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword()) && StringUtils.isNotBlank(searchInfoEO.getIsHigh())) {
|
if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword()) && StringUtils.isNotBlank(searchInfoEO.getIsHigh())) {
|
||||||
@@ -157,26 +220,34 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
|||||||
String fieldInfo = InitStandAttrSearchUtil.queryField;
|
String fieldInfo = InitStandAttrSearchUtil.queryField;
|
||||||
List<String> fieldInfoList = Arrays.asList(fieldInfo .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList());
|
List<String> fieldInfoList = Arrays.asList(fieldInfo .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList());
|
||||||
|
|
||||||
// 动态存储属性字段 ---1
|
// 自动匹配动态属性字段 es 查询
|
||||||
for (String field : fieldInfoList) {
|
for (String field : fieldInfoList) {
|
||||||
if(collectAttrMap.containsKey(field.toLowerCase())){
|
// 关键字查询属性字段
|
||||||
System.out.println(collectAttrMap.get(field.toLowerCase())+"----------------------------");
|
String keyWordField = field + ".keyword";
|
||||||
List<String> fields = new ArrayList<>();
|
if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){
|
||||||
Object json= new JSONTokener(collectAttrMap.get(field.toLowerCase()).toString()).nextValue();
|
boolQueryBuilderMust.should(QueryBuilders.wildcardQuery(keyWordField, "*"+searchInfoEO.getSelectValue()+"*"));
|
||||||
if(json instanceof org.json.JSONArray){
|
}else {
|
||||||
fields = JSONObject.parseArray(collectAttrMap.get(field.toLowerCase()).toString(),String.class);
|
if(collectAttrMap.containsKey(field)){
|
||||||
}else {
|
List<String> fields = new ArrayList<>();
|
||||||
fields.add(collectAttrMap.get(field.toLowerCase()).toString());
|
Object json= new JSONTokener(collectAttrMap.get(field).toString()).nextValue();
|
||||||
}
|
if(json instanceof org.json.JSONArray){
|
||||||
if(!fields.isEmpty()){
|
fields = JSONObject.parseArray(collectAttrMap.get(field).toString(),String.class);
|
||||||
for (String str : fields) {
|
}else {
|
||||||
boolQueryBuilderMust.must(QueryBuilders.fuzzyQuery(field, "*"+str+"*"));
|
fields.add(collectAttrMap.get(field).toString());
|
||||||
|
}
|
||||||
|
if(!fields.isEmpty()){
|
||||||
|
for (String str : fields) {
|
||||||
|
boolQueryBuilderMust.must(QueryBuilders.wildcardQuery(keyWordField, "*"+str+"*"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())) {
|
||||||
boolQueryBuilder.should(boolQueryBuilderMust);
|
boolQueryBuilder.should(boolQueryBuilderMust);
|
||||||
|
}else {
|
||||||
|
boolQueryBuilder.must(boolQueryBuilderMust);
|
||||||
|
}
|
||||||
return boolQueryBuilder;
|
return boolQueryBuilder;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,71 +255,40 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
|||||||
public BoolQueryBuilder queryStandMsg(SeniorSearchInfoEO searchInfoEO, BoolQueryBuilder boolQueryBuilder, SearchRequestBuilder searchRequestBuilder) throws Exception{
|
public BoolQueryBuilder queryStandMsg(SeniorSearchInfoEO searchInfoEO, BoolQueryBuilder boolQueryBuilder, SearchRequestBuilder searchRequestBuilder) throws Exception{
|
||||||
String nameshowStr = "nameshow";
|
String nameshowStr = "nameshow";
|
||||||
// 高级搜索项,只针对标准
|
// 高级搜索项,只针对标准
|
||||||
if (StringUtils.isNotBlank(searchInfoEO.getStandType())) {
|
if(searchInfoEO.getSelectValue() == null || searchInfoEO.getSelectValue().equals("")){
|
||||||
// 如果等于All,相当于不限制,查询全部
|
if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) {
|
||||||
boolQueryBuilder.must(QueryBuilders.matchQuery("standType", searchInfoEO.getStandType()));
|
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standSort.keyword", searchInfoEO.getStandSort()));
|
||||||
}
|
|
||||||
//标准类别,国内外标准有此属性
|
|
||||||
if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) {
|
|
||||||
// 如果等于All,相当于不限制,查询全部
|
|
||||||
if (!searchInfoEO.getStandSort().equals("all") && !searchInfoEO.getStandSort().equals("[]")) {
|
|
||||||
String[] arrlist = searchInfoEO.getStandSort().split(",");
|
|
||||||
boolQueryBuilder.must(QueryBuilders.termsQuery("standSort.keyword", arrlist));
|
|
||||||
//boolQueryBuilder.must(QueryBuilders.matchQuery("stand_sort", searchInfoEO.getStandSort()));
|
|
||||||
}
|
}
|
||||||
}
|
if (StringUtils.isNotBlank(searchInfoEO.getStandNumber())) {
|
||||||
//编号,国内外标准,国内外法规,企业标准 有此属性
|
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standNumber.keyword", "*"+searchInfoEO.getStandNumber()+"*"));
|
||||||
if (StringUtils.isNotBlank(searchInfoEO.getStandNumber())) {
|
|
||||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standNumber", "*"+searchInfoEO.getStandNumber()+"*"));
|
|
||||||
}
|
|
||||||
//标准年份
|
|
||||||
if (StringUtils.isNotBlank(searchInfoEO.getStandYear())) {
|
|
||||||
boolQueryBuilder.must(QueryBuilders.matchQuery("standYear", searchInfoEO.getStandYear()));
|
|
||||||
}
|
|
||||||
//名称,国内外标准,国内外法规,企业标准 有此属性
|
|
||||||
if (StringUtils.isNotBlank(searchInfoEO.getNameShow())) {
|
|
||||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery(nameshowStr, "*"+searchInfoEO.getNameShow()+"*"));
|
|
||||||
}
|
|
||||||
//标准英文名称
|
|
||||||
if (StringUtils.isNotBlank(searchInfoEO.getStandEnName())) {
|
|
||||||
boolQueryBuilder.must(QueryBuilders.matchQuery("standEnName", searchInfoEO.getStandEnName()));
|
|
||||||
}
|
|
||||||
//标准状态,国内外标准,国内外法规,企业标准 有此属性
|
|
||||||
if (StringUtils.isNotBlank(searchInfoEO.getStandState())) {
|
|
||||||
// 如果等于All,相当于不限制,查询全部
|
|
||||||
if (!searchInfoEO.getStandState().equals("all") && !searchInfoEO.getStandState().equals("[]") ) {
|
|
||||||
String[] arrlist = searchInfoEO.getStandState().split(",");
|
|
||||||
boolQueryBuilder.must(QueryBuilders.termsQuery("statecode.keyword", arrlist));
|
|
||||||
}
|
}
|
||||||
}
|
if (StringUtils.isNotBlank(searchInfoEO.getStandYear())) {
|
||||||
if (StringUtils.isNotBlank(searchInfoEO.getCLLX())) {
|
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standYear.keyword", searchInfoEO.getStandYear()));
|
||||||
// 如果等于All,相当于不限制,查询全部
|
|
||||||
if (!searchInfoEO.getCLLX().equals("all") && !searchInfoEO.getCLLX().equals("[]") ) {
|
|
||||||
String[] arrlist = searchInfoEO.getCLLX().split(",");
|
|
||||||
boolQueryBuilder.must(QueryBuilders.termsQuery("CLLX.keyword", arrlist));
|
|
||||||
}
|
}
|
||||||
}
|
if (StringUtils.isNotBlank(searchInfoEO.getStandName())) {
|
||||||
if (StringUtils.isNotBlank(searchInfoEO.getCYSD())) {
|
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standName.keyword", searchInfoEO.getStandName()));
|
||||||
// 如果等于All,相当于不限制,查询全部
|
|
||||||
if (!searchInfoEO.getCYSD().equals("all") && !searchInfoEO.getCYSD().equals("[]") ) {
|
|
||||||
String[] arrlist = searchInfoEO.getCYSD().split(",");
|
|
||||||
boolQueryBuilder.must(QueryBuilders.termsQuery("CYSD.keyword", arrlist));
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (StringUtils.isNotBlank(searchInfoEO.getCBCD())) {
|
if (StringUtils.isNotBlank(searchInfoEO.getTextStatus())) {
|
||||||
// 如果等于All,相当于不限制,查询全部
|
boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatus.keyword", searchInfoEO.getTextStatus()));
|
||||||
if (!searchInfoEO.getCBCD().equals("all") && !searchInfoEO.getCBCD().equals("[]") ) {
|
|
||||||
String[] arrlist = searchInfoEO.getCBCD().split(",");
|
|
||||||
boolQueryBuilder.must(QueryBuilders.termsQuery("CBCD.keyword", arrlist));
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (StringUtils.isNotBlank(searchInfoEO.getZRLX())) {
|
if (searchInfoEO.getIssueTime() != null) {
|
||||||
// 如果等于All,相当于不限制,查询全部
|
Long starttime = searchInfoEO.getIssueTime().getTime();
|
||||||
if (!searchInfoEO.getZRLX().equals("all") && !searchInfoEO.getZRLX().equals("[]") ) {
|
Long endtime = searchInfoEO.getIssueTime().getTime();
|
||||||
String[] arrlist = searchInfoEO.getZRLX().split(",");
|
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true);
|
||||||
boolQueryBuilder.must(QueryBuilders.termsQuery("ZRLX.keyword", arrlist));
|
boolQueryBuilder.filter(rangeQueryBuilder);
|
||||||
|
}
|
||||||
|
|
||||||
|
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()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
querySeniorMsg(searchInfoEO,boolQueryBuilder);
|
querySeniorMsg(searchInfoEO,boolQueryBuilder);
|
||||||
return boolQueryBuilder;
|
return boolQueryBuilder;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user