手动同步三阶段检索功能代码
This commit is contained in:
+7
-5
@@ -3,7 +3,9 @@
|
|||||||
<mapper namespace="com.jero.modules.laws.home.mapper.LawsHomeSearchMapper">
|
<mapper namespace="com.jero.modules.laws.home.mapper.LawsHomeSearchMapper">
|
||||||
|
|
||||||
<select id="getPage" resultType="com.jero.modules.laws.home.vo.LawsHomeNormalSearchVO">
|
<select id="getPage" resultType="com.jero.modules.laws.home.vo.LawsHomeNormalSearchVO">
|
||||||
select * from (
|
select
|
||||||
|
${ew.sqlSelect}
|
||||||
|
from (
|
||||||
select id,'1' as resource_type,CONCAT_WS(' ',standard_number,standard_name) AS standard_name,create_time,
|
select id,'1' as resource_type,CONCAT_WS(' ',standard_number,standard_name) AS standard_name,create_time,
|
||||||
case when standard_class = 'GB' then 1
|
case when standard_class = 'GB' then 1
|
||||||
when standard_class = 'GB/T' then 2
|
when standard_class = 'GB/T' then 2
|
||||||
@@ -15,7 +17,7 @@
|
|||||||
case when standard_state = 5 then 2
|
case when standard_state = 5 then 2
|
||||||
when standard_state = 6 then 1
|
when standard_state = 6 then 1
|
||||||
when standard_state = 7 then 3
|
when standard_state = 7 then 3
|
||||||
else null
|
else 4
|
||||||
end as standard_state_order,
|
end as standard_state_order,
|
||||||
standard_class,dynamic_type,applicable_vehicle,standard_property,standard_state,null as standard_code,null as grade_classification,
|
standard_class,dynamic_type,applicable_vehicle,standard_property,standard_state,null as standard_code,null as grade_classification,
|
||||||
implementation_date
|
implementation_date
|
||||||
@@ -25,7 +27,7 @@
|
|||||||
case when standard_state = 5 then 2
|
case when standard_state = 5 then 2
|
||||||
when standard_state = 6 then 1
|
when standard_state = 6 then 1
|
||||||
when standard_state = 7 then 3
|
when standard_state = 7 then 3
|
||||||
else null
|
else 4
|
||||||
end as standard_state_order,
|
end as standard_state_order,
|
||||||
standard_class,null,applicable_vehicle,null,standard_state,null,null,implementation_date
|
standard_class,null,applicable_vehicle,null,standard_state,null,null,implementation_date
|
||||||
from laws_overseas_standard where del_flag = 0
|
from laws_overseas_standard where del_flag = 0
|
||||||
@@ -34,13 +36,13 @@
|
|||||||
case when standard_state = 5 then 2
|
case when standard_state = 5 then 2
|
||||||
when standard_state = 6 then 1
|
when standard_state = 6 then 1
|
||||||
when standard_state = 7 then 3
|
when standard_state = 7 then 3
|
||||||
else null
|
else 4
|
||||||
end as standard_state_order,
|
end as standard_state_order,
|
||||||
null,null,null,null,standard_state,standard_code,grade_classification,implementation_date
|
null,null,null,null,standard_state,standard_code,grade_classification,implementation_date
|
||||||
from laws_enterprise_standard where del_flag = 0
|
from laws_enterprise_standard where del_flag = 0
|
||||||
union all
|
union all
|
||||||
select l1.id,'4' as resource_type,dynamic_heading as standard_name,create_time,9 as standard_type_order,
|
select l1.id,'4' as resource_type,dynamic_heading as standard_name,create_time,9 as standard_type_order,
|
||||||
null AS standard_state_order,
|
4 AS standard_state_order,
|
||||||
null,null,null,null,null,null,null,null
|
null,null,null,null,null,null,null,null
|
||||||
from laws_news_feed l1
|
from laws_news_feed l1
|
||||||
left join laws_push_range l2 on l1.id = l2.unique_relation_flag
|
left join laws_push_range l2 on l1.id = l2.unique_relation_flag
|
||||||
|
|||||||
+110
-69
@@ -128,6 +128,8 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
|||||||
|
|
||||||
public static final String MATCH = "match";
|
public static final String MATCH = "match";
|
||||||
|
|
||||||
|
public static final String KEYWORD = ".keyword";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -155,34 +157,38 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private QueryWrapper<LawsHomeNormalSearchDTO> getQueryWrapperNormal(LawsHomeNormalSearchDTO lawsHomeNormalSearchDTO) {
|
private QueryWrapper<LawsHomeNormalSearchDTO> getQueryWrapperNormal(LawsHomeNormalSearchDTO lawsHomeNormalSearchDTO) {
|
||||||
QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = new QueryWrapper<>();
|
|
||||||
String[] searchContent = lawsHomeNormalSearchDTO.getSearchContent().split(BLANK_SPACE);
|
String[] searchContent = lawsHomeNormalSearchDTO.getSearchContent().split(BLANK_SPACE);
|
||||||
queryWrapper.and(s->{
|
StringBuilder regexp = new StringBuilder();
|
||||||
for (int i = 0; i < searchContent.length; i++) {
|
StringBuilder select = new StringBuilder();
|
||||||
s.gt("instr(standard_name,'" + searchContent[i] + "')", 0);
|
select.append("( ");
|
||||||
if(i != searchContent.length - 1){
|
for (int i = 0; i < searchContent.length; i++) {
|
||||||
s.or();
|
regexp.append(searchContent[i]);
|
||||||
}
|
select.append(" if(standard_name like '%").append(searchContent[i]).append("%',1,0) ");
|
||||||
|
if(i != searchContent.length - 1){
|
||||||
|
regexp.append("|");
|
||||||
|
select.append("+");
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
select.append(") as sort_index");
|
||||||
|
QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.select("id,standard_name,id,resource_type,standard_name," +
|
||||||
|
"create_time,standard_type_order,standard_state_order,standard_class," +
|
||||||
|
"dynamic_type,applicable_vehicle,standard_property," +
|
||||||
|
"standard_state,standard_code,grade_classification,implementation_date, " + select);
|
||||||
|
|
||||||
|
queryWrapper.and(s->s.apply("standard_name REGEXP '" + regexp.toString() + "'"));
|
||||||
queryWrapper.eq(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getResourceType()),RESOURCE_TYPE,lawsHomeNormalSearchDTO.getResourceType());
|
queryWrapper.eq(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getResourceType()),RESOURCE_TYPE,lawsHomeNormalSearchDTO.getResourceType());
|
||||||
String str = "',','))";
|
String str = "',','))";
|
||||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardClass()),"instr(concat(',',standard_class,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardClass() + str,0);
|
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardClass()),"instr(concat(',',standard_class,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardClass() + str,0);
|
||||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getDynamicType()),"instr(concat(',',dynamic_type,','),concat(',','" + lawsHomeNormalSearchDTO.getDynamicType() + str,0);
|
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getDynamicType()),"instr(concat(',',dynamic_type,','),concat(',','" + lawsHomeNormalSearchDTO.getDynamicType() + str,0);
|
||||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getApplicableVehicle()),"instr(concat(',',applicable_vehicle,','),concat(',','" + lawsHomeNormalSearchDTO.getApplicableVehicle() + str,0);
|
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getApplicableVehicle()),"instr(concat(',',applicable_vehicle,','),concat(',','" + lawsHomeNormalSearchDTO.getApplicableVehicle() + str,0);
|
||||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardProperty()),"instr(concat(',',standard_property,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardProperty() + str,0);
|
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardProperty()),"instr(concat(',',standard_property,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardProperty() + str,0);
|
||||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardState()),"instr(concat(',',standard_state,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardState() + str,0);
|
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardState()),"instr(concat(',',standard_state,','), concat(',','" + lawsHomeNormalSearchDTO.getStandardState() + str,0);
|
||||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardCode()),"instr(concat(',',standard_code,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardCode() + str,0);
|
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardCode()),"instr(concat(',',standard_code,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardCode() + str,0);
|
||||||
|
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getEnterpriseStandardState()),"instr(concat(',',standard_state,','), concat(',','" + lawsHomeNormalSearchDTO.getEnterpriseStandardState() + str,0);
|
||||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getGradeClassification()),"instr(concat(',',grade_classification,','),concat(',','" + lawsHomeNormalSearchDTO.getGradeClassification() + str,0);
|
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getGradeClassification()),"instr(concat(',',grade_classification,','),concat(',','" + lawsHomeNormalSearchDTO.getGradeClassification() + str,0);
|
||||||
StringBuilder order = new StringBuilder();
|
|
||||||
for (int i = 0; i < searchContent.length; i++) {
|
|
||||||
order.append("(length(standard_name) - length(REPLACE(standard_name,'").append(searchContent[i]).append("','')))");
|
|
||||||
if(i != searchContent.length - 1){
|
|
||||||
order.append(" + ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
queryWrapper.orderByDesc(order.toString());
|
queryWrapper.orderByDesc("sort_index");
|
||||||
queryWrapper.orderByAsc("standard_type_order");
|
queryWrapper.orderByAsc("standard_type_order");
|
||||||
queryWrapper.orderByAsc("standard_state_order");
|
queryWrapper.orderByAsc("standard_state_order");
|
||||||
queryWrapper.orderByDesc(IMPLEMENTATION_DATE);
|
queryWrapper.orderByDesc(IMPLEMENTATION_DATE);
|
||||||
@@ -463,14 +469,16 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
|||||||
}
|
}
|
||||||
QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = new QueryWrapper<>();
|
||||||
String[] text = searchContent.split(BLANK_SPACE);
|
String[] text = searchContent.split(BLANK_SPACE);
|
||||||
queryWrapper.and(s->{
|
|
||||||
for (int i = 0; i < text.length; i++) {
|
StringBuilder regexp = new StringBuilder();
|
||||||
s.gt("instr(concat_ws(' ',standard_number,standard_name),'" + text[i] + "')", 0);
|
for (int i = 0; i < text.length; i++) {
|
||||||
if(i != text.length - 1){
|
regexp.append(text[i]);
|
||||||
s.or();
|
if(i != text.length - 1){
|
||||||
}
|
regexp.append("|");
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
|
queryWrapper.and(s->s.apply("standard_name REGEXP '" + regexp + "'"));
|
||||||
queryWrapper.eq("del_flag",0);
|
queryWrapper.eq("del_flag",0);
|
||||||
String str = "',','))";
|
String str = "',','))";
|
||||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardClass()),"instr(concat(',',standard_class,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardClass() + str,0);
|
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardClass()),"instr(concat(',',standard_class,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardClass() + str,0);
|
||||||
@@ -479,19 +487,23 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
|||||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardProperty()),"instr(concat(',',standard_property,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardProperty() + str,0);
|
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardProperty()),"instr(concat(',',standard_property,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardProperty() + str,0);
|
||||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardState()),"instr(concat(',',standard_state,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardState() + str,0);
|
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardState()),"instr(concat(',',standard_state,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardState() + str,0);
|
||||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardCode()),"instr(concat(',',standard_code,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardCode() + str,0);
|
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardCode()),"instr(concat(',',standard_code,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardCode() + str,0);
|
||||||
|
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getEnterpriseStandardState()),"instr(concat(',',standard_state,','),concat(',','" + lawsHomeNormalSearchDTO.getEnterpriseStandardState() + str,0);
|
||||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getGradeClassification()),"instr(concat(',',grade_classification,','),concat(',','" + lawsHomeNormalSearchDTO.getGradeClassification() + str,0);
|
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getGradeClassification()),"instr(concat(',',grade_classification,','),concat(',','" + lawsHomeNormalSearchDTO.getGradeClassification() + str,0);
|
||||||
|
|
||||||
switch (lawsHomeNormalSearchDTO.getResourceType()){
|
switch (lawsHomeNormalSearchDTO.getResourceType()){
|
||||||
case LawsHomeSearchCommon.LAWS_DOMESTIC_STANDARD:
|
case LawsHomeSearchCommon.LAWS_DOMESTIC_STANDARD:
|
||||||
List<LawsHomeNormalSearchCountVO> list1 = lawsHomeSearchMapper.getCount1(queryWrapper);
|
List<LawsHomeNormalSearchCountVO> list1 = lawsHomeSearchMapper.getCount1(queryWrapper);
|
||||||
|
setDict(list1);
|
||||||
count1(list1,obj);
|
count1(list1,obj);
|
||||||
break;
|
break;
|
||||||
case LawsHomeSearchCommon.LAWS_OVERSEAS_STANDARD:
|
case LawsHomeSearchCommon.LAWS_OVERSEAS_STANDARD:
|
||||||
List<LawsHomeNormalSearchCountVO> list2 = lawsHomeSearchMapper.getCount2(queryWrapper);
|
List<LawsHomeNormalSearchCountVO> list2 = lawsHomeSearchMapper.getCount2(queryWrapper);
|
||||||
|
setDict(list2);
|
||||||
count2(list2,obj);
|
count2(list2,obj);
|
||||||
break;
|
break;
|
||||||
case LawsHomeSearchCommon.LAWS_ENTERPRISE_STANDARD:
|
case LawsHomeSearchCommon.LAWS_ENTERPRISE_STANDARD:
|
||||||
List<LawsHomeNormalSearchCountVO> list3 = lawsHomeSearchMapper.getCount3(queryWrapper);
|
List<LawsHomeNormalSearchCountVO> list3 = lawsHomeSearchMapper.getCount3(queryWrapper);
|
||||||
|
setDict(list3);
|
||||||
count3(list3,obj);
|
count3(list3,obj);
|
||||||
break;
|
break;
|
||||||
default:break;
|
default:break;
|
||||||
@@ -499,6 +511,12 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
|||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setDict(List<LawsHomeNormalSearchCountVO> list1) {
|
||||||
|
for (LawsHomeNormalSearchCountVO lawsHomeNormalSearchCountVO : list1) {
|
||||||
|
lawsHomeNormalSearchCountVO.setDict("," + lawsHomeNormalSearchCountVO.getDict() + ",");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void count3(List<LawsHomeNormalSearchCountVO> list,LawsHomeNormalSearchStatisticsVO obj) {
|
private void count3(List<LawsHomeNormalSearchCountVO> list,LawsHomeNormalSearchStatisticsVO obj) {
|
||||||
// 企业标准代号
|
// 企业标准代号
|
||||||
List<LawsHomeNormalSearchStatisticsObjVO> list1 = addLawsHomeNormalSearchStatistics(list, "enterprise_standard_code", STANDARD_CODE);
|
List<LawsHomeNormalSearchStatisticsObjVO> list1 = addLawsHomeNormalSearchStatistics(list, "enterprise_standard_code", STANDARD_CODE);
|
||||||
@@ -571,10 +589,11 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
|||||||
objVO.setItemText(dict.getText());
|
objVO.setItemText(dict.getText());
|
||||||
objVO.setItemValue(dict.getValue());
|
objVO.setItemValue(dict.getValue());
|
||||||
if(!CollectionUtils.isEmpty(list)){
|
if(!CollectionUtils.isEmpty(list)){
|
||||||
List<LawsHomeNormalSearchCountVO> opList = list.stream().filter(o -> !StringUtils.isBlank(o.getDict()) && Arrays.asList(o.getDict().split(",")).contains(dict.getValue()) && Objects.equals(o.getFieldName(),data)).collect(Collectors.toList());
|
List<LawsHomeNormalSearchCountVO> opList = list.stream().filter(o -> !StringUtils.isBlank(o.getDict()) && o.getDict().contains("," + dict.getValue() + ",") && Objects.equals(o.getFieldName(),data)).collect(Collectors.toList());
|
||||||
if(!CollectionUtils.isEmpty(opList)){
|
if(!CollectionUtils.isEmpty(opList)){
|
||||||
Integer str = opList.stream().map(o->Integer.parseInt(o.getCount())).reduce((x,y) ->x+y).get();
|
Optional<Integer> str = opList.stream().map(o->Integer.parseInt(StringUtils.isBlank(o.getCount()) ? "0" : o.getCount())).reduce((x,y) ->x+y);
|
||||||
objVO.setStatisticsCount(String.valueOf(str));
|
str.ifPresent(integer -> objVO.setStatisticsCount(String.valueOf(integer)));
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
objVO.setStatisticsCount("0");
|
objVO.setStatisticsCount("0");
|
||||||
}
|
}
|
||||||
@@ -641,14 +660,14 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
|||||||
if(!StringUtils.isBlank(homeNormalSearchDTO.getResourceType())){
|
if(!StringUtils.isBlank(homeNormalSearchDTO.getResourceType())){
|
||||||
Map<String, Object> map1 = new HashMap<>();
|
Map<String, Object> map1 = new HashMap<>();
|
||||||
Map<String, Object> map2 = new HashMap<>();
|
Map<String, Object> map2 = new HashMap<>();
|
||||||
map2.put(RESOURCE_TYPE,homeNormalSearchDTO.getResourceType());
|
map2.put(RESOURCE_TYPE + KEYWORD,homeNormalSearchDTO.getResourceType());
|
||||||
map1.put("match_phrase",map2);
|
map1.put("term",map2);
|
||||||
queryMapJsonDict.add(map1);
|
queryMapJsonDict.add(map1);
|
||||||
}
|
}
|
||||||
mapDict.forEach((k,v)->{
|
mapDict.forEach((k,v)->{
|
||||||
Map<String, Object> map1 = new HashMap<>();
|
Map<String, Object> map1 = new HashMap<>();
|
||||||
Map<String, Object> map2 = new HashMap<>();
|
Map<String, Object> map2 = new HashMap<>();
|
||||||
map2.put(k,"," + v + ",");
|
map2.put(k ,"," + v + ",");
|
||||||
map1.put("match_phrase",map2);
|
map1.put("match_phrase",map2);
|
||||||
queryMapJsonDict.add(map1);
|
queryMapJsonDict.add(map1);
|
||||||
});
|
});
|
||||||
@@ -659,7 +678,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
|||||||
// 封装首次的条件
|
// 封装首次的条件
|
||||||
if (StringUtils.isNotBlank(searchContent)) {
|
if (StringUtils.isNotBlank(searchContent)) {
|
||||||
searchContent = searchContent.toLowerCase();
|
searchContent = searchContent.toLowerCase();
|
||||||
getQueryMapJson(queryMapJson, searchContent, CONTENT);
|
addSearchContent(searchContent, queryMapJson);
|
||||||
//高亮
|
//高亮
|
||||||
highlight(mapHighlight, CONTENT);
|
highlight(mapHighlight, CONTENT);
|
||||||
mapHighlight1.put("fields",mapHighlight);
|
mapHighlight1.put("fields",mapHighlight);
|
||||||
@@ -710,12 +729,22 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
|||||||
mDesc5.put(order,"desc");
|
mDesc5.put(order,"desc");
|
||||||
m5.put("create_time_c",mDesc5);
|
m5.put("create_time_c",mDesc5);
|
||||||
sort.add(m5);
|
sort.add(m5);
|
||||||
|
|
||||||
|
// 查询字段
|
||||||
|
List<String> arr = Arrays.asList(CONTENT,"title",RESOURCE_TYPE,"id","release_date");
|
||||||
IPage page = getIPage(queryMapJsonAll, mapHighlight1,
|
IPage page = getIPage(queryMapJsonAll, mapHighlight1,
|
||||||
pageNo, pageSize, sort);
|
pageNo, pageSize, sort,arr);
|
||||||
getRecords(page);
|
getRecords(page);
|
||||||
return page;
|
return page;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addSearchContent(String searchContent, JSONArray queryMapJson) {
|
||||||
|
String[] searchContentArr = searchContent.split(BLANK_SPACE);
|
||||||
|
for (String s : searchContentArr) {
|
||||||
|
getQueryMapJson(queryMapJson, s, CONTENT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void getRecords(IPage page) {
|
private void getRecords(IPage page) {
|
||||||
if(!CollectionUtils.isEmpty(page.getRecords())){
|
if(!CollectionUtils.isEmpty(page.getRecords())){
|
||||||
// 下划线转驼峰
|
// 下划线转驼峰
|
||||||
@@ -750,12 +779,12 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private IPage getIPage(JSONArray queryMapJson,Map<String,Object> highlightMap, Integer pageNo, Integer pageSize,
|
private IPage getIPage(JSONArray queryMapJson,Map<String,Object> highlightMap, Integer pageNo, Integer pageSize,
|
||||||
JSONArray jsonArraySort) {
|
JSONArray jsonArraySort,List<String> source) {
|
||||||
JSONObject jsonObject;
|
JSONObject jsonObject;
|
||||||
//基础添加封装
|
//基础添加封装
|
||||||
jsonObject = jeroElasticsearchTemplate.buildBoolQuery(queryMapJson, null, null);
|
jsonObject = jeroElasticsearchTemplate.buildBoolQuery(queryMapJson, null, null);
|
||||||
//1. 条件,分页
|
//1. 条件,分页
|
||||||
JSONObject queryObject = jeroElasticsearchTemplate.buildQuery(null, jsonObject, highlightMap, jsonArraySort, pageNo - 1, pageSize);
|
JSONObject queryObject = jeroElasticsearchTemplate.buildQuery(source, jsonObject, highlightMap, jsonArraySort, pageNo - 1, pageSize);
|
||||||
//2. 数据查询
|
//2. 数据查询
|
||||||
JSONObject search = jeroElasticsearchTemplate.search(HomeSearchEnum.INDEX_NAME_DOCUMENT_ZQ.getValue(), HomeSearchEnum.TYPE_NAME_DOCUMENT_ZQ.getValue(), queryObject);
|
JSONObject search = jeroElasticsearchTemplate.search(HomeSearchEnum.INDEX_NAME_DOCUMENT_ZQ.getValue(), HomeSearchEnum.TYPE_NAME_DOCUMENT_ZQ.getValue(), queryObject);
|
||||||
|
|
||||||
@@ -813,42 +842,54 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
|||||||
// map31.put(boost,0.01);
|
// map31.put(boost,0.01);
|
||||||
// }
|
// }
|
||||||
// map31.put("value", selectValue);
|
// map31.put("value", selectValue);
|
||||||
// map21.put(field + ".keyword", map31);
|
// map21.put(field + KEYWORD, map31);
|
||||||
// map41.put("prefix", map21);
|
// map41.put("prefix", map21);
|
||||||
// queryMapJson.add(map41);
|
// queryMapJson.add(map41);
|
||||||
|
|
||||||
// match_phrase_prefix 词组匹配查询,允许最后词组与文中的任意分词前缀匹配
|
// match_phrase_prefix 词组匹配查询,允许最后词组与文中的任意分词前缀匹配
|
||||||
Map<String, Object> map22 = new HashMap<>();
|
// Map<String, Object> map22 = new HashMap<>();
|
||||||
Map<String, Object> map32 = new HashMap<>();
|
// Map<String, Object> map32 = new HashMap<>();
|
||||||
Map<String, Object> map42 = new HashMap<>();
|
// Map<String, Object> map42 = new HashMap<>();
|
||||||
if(CONTENT.equals(field)){
|
// if(CONTENT.equals(field)){
|
||||||
map32.put(boost,0.01);
|
// map32.put(boost,0.01);
|
||||||
}
|
// }
|
||||||
map32.put(QUERY, selectValue);
|
// map32.put(QUERY, selectValue);
|
||||||
map22.put(field, map32);
|
// map22.put(field, map32);
|
||||||
map42.put("match_phrase_prefix", map22);
|
// map42.put("match_phrase_prefix", map22);
|
||||||
queryMapJson.add(map42);
|
// queryMapJson.add(map42);
|
||||||
|
|
||||||
// match分词匹配查询
|
// match分词匹配查询
|
||||||
// 情况举例:用户可能他知道开头的前缀几个字,知道中间的几个字
|
// 情况举例:用户可能他知道开头的前缀几个字,知道中间的几个字
|
||||||
Map<String, Object> map23 = new HashMap<>();
|
// Map<String, Object> map23 = new HashMap<>();
|
||||||
Map<String, Object> map33 = new HashMap<>();
|
// Map<String, Object> map33 = new HashMap<>();
|
||||||
Map<String, Object> map43 = new HashMap<>();
|
// Map<String, Object> map43 = new HashMap<>();
|
||||||
if(CONTENT.equals(field)){
|
// if(CONTENT.equals(field)){
|
||||||
map33.put(boost,0.01);
|
// map33.put(boost,0.01);
|
||||||
}
|
// }
|
||||||
map33.put(QUERY, selectValue);
|
// map33.put(QUERY, selectValue);
|
||||||
map23.put(field, map33);
|
// map23.put(field, map33);
|
||||||
map43.put(MATCH, map23);
|
// map43.put(MATCH, map23);
|
||||||
queryMapJson.add(map43);
|
// queryMapJson.add(map43);
|
||||||
|
|
||||||
// wildcard模糊查询
|
// wildcard模糊查询
|
||||||
//情况举例:用户只记得中间那段字
|
//情况举例:用户只记得中间那段字
|
||||||
Map<String, Object> map24 = new HashMap<>();
|
// Map<String, Object> map24 = new HashMap<>();
|
||||||
Map<String, Object> map44 = new HashMap<>();
|
// Map<String, Object> map44 = new HashMap<>();
|
||||||
map24.put(field, "*" + selectValue + "*");
|
// map24.put(field, "*" + selectValue + "*");
|
||||||
map44.put("wildcard",map24);
|
// map44.put("wildcard",map24);
|
||||||
queryMapJson.add(map44);
|
// queryMapJson.add(map44);
|
||||||
|
|
||||||
|
// match_phrase 短语查询 文本视为一个短语,不进行文本拆分,只要结果中包含这个短语的文档,都能被筛选出来。
|
||||||
|
Map<String, Object> map25 = new HashMap<>();
|
||||||
|
Map<String, Object> map35 = new HashMap<>();
|
||||||
|
Map<String, Object> map45 = new HashMap<>();
|
||||||
|
if(CONTENT.equals(field)){
|
||||||
|
map35.put(boost,0.01);
|
||||||
|
}
|
||||||
|
map35.put(QUERY, selectValue);
|
||||||
|
map25.put(field, map35);
|
||||||
|
map45.put("match_phrase", map25);
|
||||||
|
queryMapJson.add(map45);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -883,7 +924,8 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
|||||||
for (String s : listField) {
|
for (String s : listField) {
|
||||||
Map<String, Object> map1 = new HashMap<>();
|
Map<String, Object> map1 = new HashMap<>();
|
||||||
Map<String, Object> map2 = new HashMap<>();
|
Map<String, Object> map2 = new HashMap<>();
|
||||||
map1.put("field",s + ".keyword");
|
map1.put("field",s + KEYWORD);
|
||||||
|
map1.put("size", 100);
|
||||||
map2.put("terms",map1);
|
map2.put("terms",map1);
|
||||||
map.put(s + "_aggs",map2);
|
map.put(s + "_aggs",map2);
|
||||||
}
|
}
|
||||||
@@ -894,14 +936,14 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
|||||||
JSONArray queryMapJson = new JSONArray();
|
JSONArray queryMapJson = new JSONArray();
|
||||||
// 封装首次的条件
|
// 封装首次的条件
|
||||||
if (StringUtils.isNotBlank(searchContent)) {
|
if (StringUtils.isNotBlank(searchContent)) {
|
||||||
getQueryMapJson(queryMapJson, searchContent, CONTENT);
|
addSearchContent(searchContent, queryMapJson);
|
||||||
}
|
}
|
||||||
if(!StringUtils.isBlank(homeNormalSearchDTO.getResourceType())){
|
if(!StringUtils.isBlank(homeNormalSearchDTO.getResourceType())){
|
||||||
JSONArray queryResourceType = new JSONArray();
|
JSONArray queryResourceType = new JSONArray();
|
||||||
Map<String, Object> map1 = new HashMap<>();
|
Map<String, Object> map1 = new HashMap<>();
|
||||||
Map<String, Object> map2 = new HashMap<>();
|
Map<String, Object> map2 = new HashMap<>();
|
||||||
map1.put(RESOURCE_TYPE,homeNormalSearchDTO.getResourceType());
|
map1.put(RESOURCE_TYPE + KEYWORD,homeNormalSearchDTO.getResourceType());
|
||||||
map2.put("match_phrase",map1);
|
map2.put("term",map1);
|
||||||
queryResourceType.add(map2);
|
queryResourceType.add(map2);
|
||||||
JSONObject object = jeroElasticsearchTemplate.buildBoolQuery(queryResourceType,null,null);
|
JSONObject object = jeroElasticsearchTemplate.buildBoolQuery(queryResourceType,null,null);
|
||||||
queryAll.add(object);
|
queryAll.add(object);
|
||||||
@@ -914,7 +956,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
|||||||
JSONObject object = getJsonObject(loginUser);
|
JSONObject object = getJsonObject(loginUser);
|
||||||
queryAll.add(object);
|
queryAll.add(object);
|
||||||
JSONObject objectAll = jeroElasticsearchTemplate.buildBoolQuery(queryAll,null,null);
|
JSONObject objectAll = jeroElasticsearchTemplate.buildBoolQuery(queryAll,null,null);
|
||||||
jsonObject.put("query",objectAll);
|
jsonObject.put(QUERY,objectAll);
|
||||||
|
|
||||||
//2. 数据查询
|
//2. 数据查询
|
||||||
JSONObject search = jeroElasticsearchTemplate.search(HomeSearchEnum.INDEX_NAME_DOCUMENT_ZQ.getValue(), HomeSearchEnum.TYPE_NAME_DOCUMENT_ZQ.getValue(), jsonObject);
|
JSONObject search = jeroElasticsearchTemplate.search(HomeSearchEnum.INDEX_NAME_DOCUMENT_ZQ.getValue(), HomeSearchEnum.TYPE_NAME_DOCUMENT_ZQ.getValue(), jsonObject);
|
||||||
@@ -957,18 +999,18 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
|||||||
status1Val.put(RELEASE_STATUS, "1");
|
status1Val.put(RELEASE_STATUS, "1");
|
||||||
status1.put(MATCH, status1Val);
|
status1.put(MATCH, status1Val);
|
||||||
queryMapMust1.add(status1);
|
queryMapMust1.add(status1);
|
||||||
|
String pushRangeFlag = "push_range_flag";
|
||||||
JSONArray queryMapShould = new JSONArray();
|
JSONArray queryMapShould = new JSONArray();
|
||||||
Map<String, Object> status2 = new HashMap<>();
|
Map<String, Object> status2 = new HashMap<>();
|
||||||
Map<String, Object> status2Val = new HashMap<>();
|
Map<String, Object> status2Val = new HashMap<>();
|
||||||
status2Val.put("push_range_flag", 2);
|
status2Val.put(pushRangeFlag, 2);
|
||||||
status2.put(MATCH, status2Val);
|
status2.put(MATCH, status2Val);
|
||||||
queryMapShould.add(status2);
|
queryMapShould.add(status2);
|
||||||
|
|
||||||
JSONArray queryMapMust = new JSONArray();
|
JSONArray queryMapMust = new JSONArray();
|
||||||
Map<String, Object> status4 = new HashMap<>();
|
Map<String, Object> status4 = new HashMap<>();
|
||||||
Map<String, Object> status4Val = new HashMap<>();
|
Map<String, Object> status4Val = new HashMap<>();
|
||||||
status4Val.put("push_range_flag",1);
|
status4Val.put(pushRangeFlag,1);
|
||||||
status4.put(MATCH, status4Val);
|
status4.put(MATCH, status4Val);
|
||||||
queryMapMust.add(status4);
|
queryMapMust.add(status4);
|
||||||
|
|
||||||
@@ -1368,7 +1410,6 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
|||||||
|
|
||||||
public void updateElasticsearch(LawsHomeNormalSearchVO obj,List<OSSFile> listFile){
|
public void updateElasticsearch(LawsHomeNormalSearchVO obj,List<OSSFile> listFile){
|
||||||
String idTemp = obj.getId();
|
String idTemp = obj.getId();
|
||||||
System.out.println("--------------" + obj);
|
|
||||||
StringBuilder fileTextAll = getStringBuilder(listFile);
|
StringBuilder fileTextAll = getStringBuilder(listFile);
|
||||||
addES(obj, idTemp, fileTextAll);
|
addES(obj, idTemp, fileTextAll);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user