diff --git a/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java index cf34b88d..e85bb3cf 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java @@ -119,6 +119,8 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { public static final String SPAN_CLASS = ""; public static final String SPAN = ""; + public static final String BLANK_SPACE = "\\s+"; + @Override @@ -143,7 +145,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { @NotNull private QueryWrapper getQueryWrapperNormal(LawsHomeNormalSearchDTO lawsHomeNormalSearchDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - String[] searchContent = lawsHomeNormalSearchDTO.getSearchContent().split(" "); + String[] searchContent = lawsHomeNormalSearchDTO.getSearchContent().split(BLANK_SPACE); queryWrapper.and(s->{ for (int i = 0; i < searchContent.length; i++) { s.gt("instr(standard_name,'" + searchContent[i] + "')", 0); @@ -163,19 +165,13 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { 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++) { - if(i == 0){ - order.append("("); - } - order.append("length(REPLACE(standard_name,'").append(searchContent[i]).append("',''))"); + order.append("(length(standard_name) - length(REPLACE(standard_name,'").append(searchContent[i]).append("','')))"); if(i != searchContent.length - 1){ order.append(" + "); } - if(i == searchContent.length - 1){ - order.append(")"); - } } - queryWrapper.orderByAsc(order + "/length(standard_name)"); + queryWrapper.orderByDesc(order.toString()); queryWrapper.orderByAsc("standard_type_order"); queryWrapper.orderByAsc("standard_state_order"); queryWrapper.orderByDesc(IMPLEMENTATION_DATE); @@ -254,7 +250,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { Optional op = listLawsNewsFeed.stream().filter(o-> Objects.equals(o.getId(),p.getId())).findFirst(); if(op.isPresent()){ LawsNewsFeed obj = op.get(); - String[] text = searchContent.split(" "); + String[] text = searchContent.split(BLANK_SPACE); String content = obj.getDynamicHeading(); for (int i = 0; i < text.length; i++) { String searchContentSpan = SPAN_CLASS + text[i] + SPAN; @@ -274,13 +270,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { Optional op = listLawsEnterpriseStandard.stream().filter(o-> Objects.equals(o.getId(),p.getId())).findFirst(); if(op.isPresent()){ LawsEnterpriseStandard obj = op.get(); - String[] text = searchContent.split(" "); - String content = obj.getStandardNumber() + " " + obj.getStandardName(); - for (int i = 0; i < text.length; i++) { - String searchContentSpan = SPAN_CLASS + text[i] + SPAN; - content = content.replace(text[i],searchContentSpan); - - } + String content = getString(searchContent, obj.getStandardNumber(), obj.getStandardName()); p.setTitle(content); p.setReleaseDate(obj.getReleaseDate()); // 生成正文 @@ -290,18 +280,24 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { } } + @NotNull + private String getString(String searchContent, String standardNumber, String standardName) { + String[] text = searchContent.split(BLANK_SPACE); + String content = standardNumber + " " + standardName; + for (int i = 0; i < text.length; i++) { + String searchContentSpan = SPAN_CLASS + text[i] + SPAN; + content = content.replace(text[i], searchContentSpan); + + } + return content; + } + private void addLawsOverseasStandard(String searchContent, List listLawsOverseasStandard, List listLawsTag, LawsHomeNormalSearchVO p) { if(!CollectionUtils.isEmpty(listLawsOverseasStandard)){ Optional op = listLawsOverseasStandard.stream().filter(o-> Objects.equals(o.getId(),p.getId())).findFirst(); if(op.isPresent()){ LawsOverseasStandard obj = op.get(); - String[] text = searchContent.split(" "); - String content = obj.getStandardNumber() + " " + obj.getStandardName(); - for (int i = 0; i < text.length; i++) { - String searchContentSpan = SPAN_CLASS + text[i] + SPAN; - content = content.replace(text[i],searchContentSpan); - - } + String content = getString(searchContent, obj.getStandardNumber(), obj.getStandardName()); p.setTitle(content); p.setReleaseDate(obj.getReleaseDate()); // 生成正文 @@ -316,13 +312,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { Optional op = listLawsDomesticStandard.stream().filter(o-> Objects.equals(o.getId(),p.getId())).findFirst(); if(op.isPresent()){ LawsDomesticStandard obj = op.get(); - String[] text = searchContent.split(" "); - String content = obj.getStandardNumber() + " " + obj.getStandardName(); - for (int i = 0; i < text.length; i++) { - String searchContentSpan = SPAN_CLASS + text[i] + SPAN; - content = content.replace(text[i],searchContentSpan); - - } + String content = getString(searchContent, obj.getStandardNumber(), obj.getStandardName()); p.setTitle(content); p.setReleaseDate(obj.getReleaseDate()); // 生成正文 @@ -471,7 +461,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { public LawsHomeNormalSearchStatisticsVO getNormalSearchTitleCount(LawsHomeNormalSearchDTO lawsHomeNormalSearchDTO) { String searchContent = checkSearchContent(lawsHomeNormalSearchDTO); QueryWrapper queryWrapper = new QueryWrapper<>(); - String[] text = searchContent.split(" "); + String[] text = searchContent.split(BLANK_SPACE); queryWrapper.and(s->{ for (int i = 0; i < text.length; i++) { s.gt("instr(concat_ws(' ',standard_number,standard_name),'" + text[i] + "')", 0);