feat: There is no way the, es 标准资源查询 添加 检索方式

This commit is contained in:
super_liu
2022-05-31 13:58:43 +08:00
parent 610eec50a8
commit 5c4e89cbc7
4 changed files with 3015 additions and 3604 deletions
@@ -209,26 +209,41 @@ public class SearchCenterServiceImpl implements SearchCenterService {
updateIndex(searchInfoEO.getSelectIndex());
String sortField = "";
String sortField1 = "";
String sortField2 = "";
String sortField3 = "";
if("laws".equals(searchInfoEO.getSelectIndex())){
sortField = "lawsYear";
sortField1 = "lawsType";
sortField2 = "lawsNumber";
sortField3 = "lawsType.keyword";
}else {
sortField = "standYear";
sortField1 = "standSort";
sortField2 = "standNumber";
sortField3 = "standSort.keyword";
}
searchRequestBuilder = client.prepareSearch(searchInfoEO.getSelectIndex())
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize())
.addSort(sortField1, SortOrder.ASC)
.addSort(sortField2, SortOrder.ASC)
.addSort(sortField, SortOrder.DESC)
.addSort(sortField3, SortOrder.ASC)
.addSort("issue_time_data", 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.isNotBlank(searchInfoEO.getSelectType()) && !"titleSearch".equals(searchInfoEO.getSelectType())) {
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()){
@@ -323,40 +338,16 @@ public class SearchCenterServiceImpl implements SearchCenterService {
}
boolQueryBuilder.must(boolQueryShould);
}else {
if ("stand".equals(searchInfoEO.getSelectIndex()) && StringUtils.isNotBlank(searchInfoEO.getStandType())) {
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standType.keyword", "*"+searchInfoEO.getStandType()+"*"));
}
boolQueryBuilder.must(boolQueryShould);
}
//在结果中检索
if (StringUtils.isNotEmpty(searchInfoEO.getSelectValue()) && !isRqFormat(searchInfoEO.getSelectValue())) {
QueryBuilder multiQuery = queryInResult(searchInfoEO);
BoolQueryBuilder boolSelectValue = new BoolQueryBuilder();
boolSelectValue.should(multiQuery);
switch (searchInfoEO.getSelectIndex()){
case "stand":
boolSelectValue
.should(QueryBuilders.wildcardQuery("standSort.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1005f))
.should(QueryBuilders.wildcardQuery("standNumber.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1003f))
.should(QueryBuilders.wildcardQuery("standYear.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1002f))
.should(QueryBuilders.wildcardQuery("stand_name.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1000f));
break;
case "laws":
boolSelectValue
.should(QueryBuilders.wildcardQuery("lawsType.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1005f))
.should(QueryBuilders.wildcardQuery("lawsNumber.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1003f))
.should(QueryBuilders.wildcardQuery("lawsYear.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1002f))
.should(QueryBuilders.wildcardQuery("lawsName.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1001f));
break;
case "bussstand":
boolSelectValue
.should(QueryBuilders.wildcardQuery("standSort.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1005f))
.should(QueryBuilders.wildcardQuery("standNumber.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1003f))
.should(QueryBuilders.wildcardQuery("standYear.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1002f))
.should(QueryBuilders.wildcardQuery("stand_name.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1000f));
break;
default: break;
}
boolQueryBuilder.must(boolSelectValue);
boolQueryBuilder.must(multiQuery);
}
searchRequestBuilder.setQuery(boolQueryBuilder).setTrackTotalHits(true);
@@ -798,14 +789,23 @@ public class SearchCenterServiceImpl implements SearchCenterService {
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
List<String> fieldList = getStringField(searchInfoEO);
List<String> fieldNameList = new ArrayList<>();
String[] standStr = {"content","standEnName","standNatureName",
"textStatusName","isRelateAccessName","numbershow","standSystem","NYLXCLASS","CLLX"};
String[] lawsStr = {"content","lawsEnName","lawsNo","issueCompany","lawsTextState","lawsSyqy","lawsSycx","isRelateAccess","lawsNotisyncNum","lawsBulletin","lawsLabel","lawsRemark"};
String[] bussstandStr = {"content","stand_code","standEnName","nameshow","standstateshow","numbershow","textStatusBuss","textStatusBussName","NYLXCLASS","CLLX"};
for (String field : fieldList) {
// 关键字查询属性字段
String keyWordField2 = field + "Name";
fieldNameList.add(keyWordField2);
String[] standStr = null;
String[] lawsStr = null;
String[] bussstandStr = null;
if (StringUtils.isNotBlank(searchInfoEO.getSelectType()) && "titleSearch".equals(searchInfoEO.getSelectType())){
standStr = new String[]{"numbershow","nameshow"};
lawsStr = new String[]{"lawsNo","lawsName"};
bussstandStr = new String[]{"numbershow","nameshow"};
}else {
standStr = new String[]{"content", "standEnName", "standNatureName",
"textStatusName", "isRelateAccessName", "numbershow","nameshow", "standSystem", "NYLXCLASS", "CLLX"};
lawsStr = new String[]{"content", "lawsEnName","lawsName", "lawsNo", "issueCompany", "lawsTextState", "lawsSyqy", "lawsSycx", "isRelateAccess", "lawsNotisyncNum", "lawsBulletin", "lawsLabel", "lawsRemark"};
bussstandStr = new String[]{"content", "stand_code", "standEnName", "nameshow", "standstateshow", "numbershow", "textStatusBuss", "textStatusBussName", "NYLXCLASS", "CLLX"};
for (String field : fieldList) {
// 关键字查询属性字段
String keyWordField2 = field + "Name";
fieldNameList.add(keyWordField2);
}
}
switch (searchInfoEO.getSelectIndex()){
case "stand":
@@ -813,7 +813,7 @@ public class SearchCenterServiceImpl implements SearchCenterService {
listStrings.addAll(fieldNameList);
String[] fieldArr = listStrings.stream().toArray(String[]::new);
multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),fieldArr
).minimumShouldMatch("100%").boost(1L);
).minimumShouldMatch("100%").field("numbershow",1001f).field("nameshow",1000f);
// boolQueryBuilder.should();
// for (String field : fieldList) {
// // 关键字查询属性字段
@@ -826,14 +826,14 @@ public class SearchCenterServiceImpl implements SearchCenterService {
listStringLaws.addAll(fieldNameList);
String[] fieldLawsArr = listStringLaws.stream().toArray(String[]::new);
multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),fieldLawsArr
).minimumShouldMatch("100%").boost(1L);
).minimumShouldMatch("100%").field("lawsNo",1001f).field("lawsName",1000f);
break;
case "bussstand":
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%").boost(1L);
).minimumShouldMatch("100%").field("numbershow",1001f).field("nameshow",1000f);
break;
default: break;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff