From 44396fb0dd9aec4873728835c2ad1948a3d08562 Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Tue, 2 Jan 2024 14:24:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=90=9C=E7=B4=A2=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DocumentSearchServiceImpl.java | 101 ++++++++++++------ 1 file changed, 70 insertions(+), 31 deletions(-) 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 077a15993..183a8e79b 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 @@ -787,42 +787,23 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { list.add(group); } for (String s : list) { - Map map33 = new HashMap<>(); - if("serial_number".equals(field)){ - map33.put("boost",10); - }else if("title".equals(field)){ - map33.put("boost",8); - }else if("file_text".equals(field)){ - map33.put("boost",0.01); - }else if("content".equals(field)){ - map33.put("boost",0.01); - }else if("file_name".equals(field)){ - map33.put("boost",5); - } - map33.put("query",s); - Map map1 = new HashMap<>(); - map1.put(field,map33); - Map map2 = new HashMap<>(); - map2.put("match",map1); - queryMapJson.add(map2); - // // wildcard模糊查询 // //情况举例:用户只记得中间那段字 Map map24 = new HashMap<>(); Map map44 = new HashMap<>(); Map map55 = new HashMap<>(); - map55.put("value","*" + selectValue + "*"); -// if("serial_number".equals(field)){ -// map55.put("boost",10); -// }else if("title".equals(field)){ -// map55.put("boost",8); -// }else if("file_text".equals(field)){ -// map55.put("boost",0.01); -// }else if("content".equals(field)){ -// map55.put("boost",0.01); -// }else if("file_name".equals(field)){ -// map55.put("boost",5); -// } + map55.put("value","*" + s + "*"); + if("serial_number".equals(field)){ + map55.put("boost",10); + }else if("title".equals(field)){ + map55.put("boost",8); + }else if("file_text".equals(field)){ + map55.put("boost",0.01); + }else if("content".equals(field)){ + map55.put("boost",0.01); + }else if("file_name".equals(field)){ + map55.put("boost",5); + } map24.put(field, map55); map44.put("wildcard",map24); @@ -830,6 +811,64 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { } } // private void getQueryMapJsonFullText(JSONArray queryMapJson, String selectValue, String field) { +// // match分词匹配查询 +// // 情况举例:用户可能他知道开头的前缀几个字,知道中间的几个字 +// //依据正则拆分示例:你好Hello123世界World456可拆分为:你好、Hello、123、世界、World、456 +// +// String regex = "([\\u4e00-\\u9fa5]+|[a-zA-Z]+|\\d+)"; +// Pattern pattern = Pattern.compile(regex); +// Matcher matcher = pattern.matcher(selectValue); +// +// List list = new ArrayList<>(); +// list.add(selectValue); +// while (matcher.find()) { +// String group = matcher.group(); +// list.add(group); +// } +// for (String s : list) { +// Map map33 = new HashMap<>(); +// if("serial_number".equals(field)){ +// map33.put("boost",10); +// }else if("title".equals(field)){ +// map33.put("boost",8); +// }else if("file_text".equals(field)){ +// map33.put("boost",0.01); +// }else if("content".equals(field)){ +// map33.put("boost",0.01); +// }else if("file_name".equals(field)){ +// map33.put("boost",5); +// } +// map33.put("query",s); +// Map map1 = new HashMap<>(); +// map1.put(field,map33); +// Map map2 = new HashMap<>(); +// map2.put("match",map1); +// queryMapJson.add(map2); +// +// // // wildcard模糊查询 +//// //情况举例:用户只记得中间那段字 +// Map map24 = new HashMap<>(); +// Map map44 = new HashMap<>(); +// Map map55 = new HashMap<>(); +// map55.put("value","*" + selectValue + "*"); +//// if("serial_number".equals(field)){ +//// map55.put("boost",10); +//// }else if("title".equals(field)){ +//// map55.put("boost",8); +//// }else if("file_text".equals(field)){ +//// map55.put("boost",0.01); +//// }else if("content".equals(field)){ +//// map55.put("boost",0.01); +//// }else if("file_name".equals(field)){ +//// map55.put("boost",5); +//// } +// +// map24.put(field, map55); +// map44.put("wildcard",map24); +// queryMapJson.add(map44); +// } +// } +// private void getQueryMapJsonFullText(JSONArray queryMapJson, String selectValue, String field) { // // 前缀匹配 缺点是前缀一定不能断开 // //情况举例:用户只记得前面那段字 // Map map21 = new HashMap<>();