diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java index 2687669ac..15d747491 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java @@ -358,68 +358,30 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { String key = entry.getKey(); String value = (String) entry.getValue(); if (ObjectUtils.isNotEmpty(value)) { - for (String s : value.split(",")) { - JSONArray should = new JSONArray(); - s = s.toLowerCase(); - if(s.contains(" ")){ - for (String valueTemp : s.split(" ")) { - Map mapTemp = new HashMap(); - mapTemp.put(key,"*"+valueTemp+"*"); - Map map1 = new HashMap<>(); - map1.put("wildcard",mapTemp); - should.add(map1); - } - JSONObject jsonObject = jeroElasticsearchTemplate.buildBoolQuery(null, null, should); - must.add(jsonObject); - }else{ - Map map = new HashMap<>(); - Map queryMap = new HashMap<>(); - Map queryMapTemp = new HashMap<>(); + String regex = "([\\u4e00-\\u9fa5]+|[a-zA-Z]+|\\d+)"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(value); - if (key.equals("serial_number")){ - s = s.toLowerCase(); - queryMap.put(key, "*" + s + "*"); - map.put("wildcard", queryMap); - } else { - s = s.toLowerCase(); - queryMapTemp.put("query", s); - queryMapTemp.put("minimum_should_match", 2); - queryMap.put(key, queryMapTemp); - map.put("match",queryMap); - } - must.add(map); - } + List list = new ArrayList<>(); + while (matcher.find()) { + String group = matcher.group(); + list.add(group); } + JSONArray should = new JSONArray(); + for (String s : list) { + Map map33 = new HashMap<>(); + map33.put("query",s); + Map map1 = new HashMap<>(); + map1.put(key,map33); + Map map2 = new HashMap<>(); + map2.put("match",map1); + should.add(map2); + } + JSONObject jsonObject = jeroElasticsearchTemplate.buildBoolQuery(null, null, should); + must.add(jsonObject); } } } - //封装输入框查询条件 -// if (ObjectUtils.isNotEmpty(inputMap)) { -// for (Map.Entry entry : inputMap.entrySet()) { -// String key = entry.getKey(); -// String value = (String) entry.getValue(); -// if (ObjectUtils.isNotEmpty(value)) { -// for (String s : value.split(",")) { -// Map map = new HashMap<>(); -// Map queryMap = new HashMap<>(); -// Map queryMapTemp = new HashMap<>(); -// -// if (key.equals("serial_number")){ -// s = s.toLowerCase(); -// queryMap.put(key, "*" + s + "*"); -// map.put("wildcard", queryMap); -// } else { -// s = s.toLowerCase(); -// queryMapTemp.put("query", s); -// queryMapTemp.put("minimum_should_match", 2); -// queryMap.put(key, queryMapTemp); -// map.put("match",queryMap); -// } -// must.add(map); -// } -// } -// } -// } //封装下拉,树形查询条件 if (ObjectUtils.isNotEmpty(otherMap)) { for (Map.Entry entry : otherMap.entrySet()) { @@ -485,6 +447,162 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { } } } +// private void queryCondition(Map mapOne, List inputFieldList, +// List otherFieldList, List dateFieldList,JSONArray must) { +// Map inputMap = new HashMap<>();//条件内容为输入框的 +// Map otherMap = new HashMap<>();//条件内容为下拉,日期,树形 +// Map dateMap = new HashMap<>();//条件内容为下拉,树形 +// //区分输入框和下拉,树形,日期等字段 +// if (ObjectUtils.isNotEmpty(mapOne)) { +// for (Map.Entry entry : mapOne.entrySet()) { +// String key = entry.getKey(); +// Object value = entry.getValue(); +// //处理二次搜索中选择列表数据 +// if (inputFieldList.contains(key)) { +// inputMap.put(key, value); +// } +// if (otherFieldList.contains(key)) { +// otherMap.put(key, value); +// } +// if(dateFieldList.contains(key)){ +// dateMap.put(key, value); +// } +// } +// } +// +// //封装输入框查询条件 +// if (ObjectUtils.isNotEmpty(inputMap)) { +// for (Map.Entry entry : inputMap.entrySet()) { +// String key = entry.getKey(); +// String value = (String) entry.getValue(); +// if (ObjectUtils.isNotEmpty(value)) { +// for (String s : value.split(",")) { +// JSONArray should = new JSONArray(); +// s = s.toLowerCase(); +// if(s.contains(" ")){ +// for (String valueTemp : s.split(" ")) { +// Map mapTemp = new HashMap(); +// mapTemp.put(key,"*"+valueTemp+"*"); +// Map map1 = new HashMap<>(); +// map1.put("wildcard",mapTemp); +// should.add(map1); +// } +// JSONObject jsonObject = jeroElasticsearchTemplate.buildBoolQuery(null, null, should); +// must.add(jsonObject); +// }else{ +// Map map = new HashMap<>(); +// Map queryMap = new HashMap<>(); +// Map queryMapTemp = new HashMap<>(); +// +// if (key.equals("serial_number")){ +// s = s.toLowerCase(); +// queryMap.put(key, "*" + s + "*"); +// map.put("wildcard", queryMap); +// } else { +// s = s.toLowerCase(); +// queryMapTemp.put("query", s); +// queryMapTemp.put("minimum_should_match", 2); +// queryMap.put(key, queryMapTemp); +// map.put("match",queryMap); +// } +// must.add(map); +// } +// } +// } +// } +// } +// //封装输入框查询条件 +//// if (ObjectUtils.isNotEmpty(inputMap)) { +//// for (Map.Entry entry : inputMap.entrySet()) { +//// String key = entry.getKey(); +//// String value = (String) entry.getValue(); +//// if (ObjectUtils.isNotEmpty(value)) { +//// for (String s : value.split(",")) { +//// Map map = new HashMap<>(); +//// Map queryMap = new HashMap<>(); +//// Map queryMapTemp = new HashMap<>(); +//// +//// if (key.equals("serial_number")){ +//// s = s.toLowerCase(); +//// queryMap.put(key, "*" + s + "*"); +//// map.put("wildcard", queryMap); +//// } else { +//// s = s.toLowerCase(); +//// queryMapTemp.put("query", s); +//// queryMapTemp.put("minimum_should_match", 2); +//// queryMap.put(key, queryMapTemp); +//// map.put("match",queryMap); +//// } +//// must.add(map); +//// } +//// } +//// } +//// } +// //封装下拉,树形查询条件 +// if (ObjectUtils.isNotEmpty(otherMap)) { +// for (Map.Entry entry : otherMap.entrySet()) { +// String key = entry.getKey(); +// String value = (String) entry.getValue(); +// if(StringUtils.isNotBlank(value)){ +// if("technology_territory".equals(key) && ObjectUtils.isNotEmpty(value)){ +// JSONArray should = new JSONArray(); +// +// List> mapList = new ArrayList<>(); +// for (String s : value.split(",")) { +// Map map = new HashMap(); +// map.put(key,"*"+s+"*"); +// Map map1 = new HashMap<>(); +// map1.put("wildcard",map); +// should.add(map1); +// } +// JSONObject jsonObject = jeroElasticsearchTemplate.buildBoolQuery(null, null, should); +// must.add(jsonObject); +// }else if("standard_system".equals(key) && ObjectUtils.isNotEmpty(value)){ +// JSONArray should = new JSONArray(); +// +// List> mapList = new ArrayList<>(); +// for (String s : value.split(",")) { +// Map map = new HashMap(); +// map.put("query",s); +// Map map1 = new HashMap<>(); +// map1.put(key,map); +// Map map2 = new HashMap<>(); +// map2.put("match",map1); +// should.add(map2); +// } +// JSONObject jsonObject = jeroElasticsearchTemplate.buildBoolQuery(null, null, should); +// must.add(jsonObject); +// }else{ +// Map map = new HashMap<>(); +// Map queryMap = new HashMap<>(); +// Map queryMapTemp = new HashMap<>(); +// queryMapTemp.put("query", value); +// queryMap.put(key, queryMapTemp); +// map.put("match",queryMap); +// must.add(map); +// } +// } +// } +// } +// //封装时间类型字段查询(时间范围) +// if (ObjectUtils.isNotEmpty(dateMap)) { +// for (Map.Entry entry : dateMap.entrySet()) { +// String key = entry.getKey(); +// String value = (String) entry.getValue(); +// Map queryMap = new HashMap<>(); +// Map queryMapTemp = new HashMap<>(); +// if (ObjectUtils.isNotEmpty(value)) { +// Map map = new HashMap<>(); +// map.put("gte", value.split(",")[0]); +// map.put("lte", value.split(",")[1]); +// map.put("format", "yyyy-MM-dd"); +// queryMap.put(key, map); +// queryMapTemp.put("range", queryMap); +// must.add(queryMapTemp); +// } +// } +// } +// } /** * 全文