From 6996a30c9a4258280a44280a1d466ce8b7b4e7d1 Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Fri, 27 Oct 2023 19:25:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=90=9C=E7=B4=A2=E4=B8=AD=E5=BF=83-=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DocumentSearchServiceImpl.java | 56 +++++++++++++++---- 1 file changed, 45 insertions(+), 11 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 5601c2424..31f193f91 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 @@ -47,6 +47,7 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -213,7 +214,7 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { JSONArray jsonArrySort = new JSONArray(); JSONObject sort = new JSONObject(); Map mapSort = new HashMap<>(); - Map mapSortTemp = new HashMap<>(); + Map mapSortTemp = new LinkedHashMap<>(); if(StringUtils.isNotBlank(orderBy) && StringUtils.isNotBlank(orderByField)){ //orderBy=1正序,orderBy=1倒序 if("1".equals(orderBy)){ @@ -227,10 +228,24 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { mapSortTemp.put(orderByField,mapSort); } }else{ - mapSortTemp.put("serial_number.keyword","asc"); + if(ObjectUtils.isNotEmpty(((Map) map.get("mapOne")).get("serial_number")) + || ObjectUtils.isNotEmpty(((Map) map.get("mapTwo")).get("serial_number"))){ + Map score = new HashMap<>(); + score.put("order","desc"); + mapSortTemp.put("_score",score); + +// Map map1 = new HashMap<>(); +// map1.put("order","desc"); +// mapSortTemp.put("serial_number.keyword",map1); + sort = new JSONObject(mapSortTemp); + }else{ + mapSortTemp.put("serial_number.keyword","asc"); + sort.putAll(mapSortTemp); + } +// sort.putAll(mapSortTemp); // mapSortTemp.put("create_time","desc"); } - sort.putAll(mapSortTemp); + jsonArrySort.add(sort); //封装查询条件 @@ -332,15 +347,34 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { for (String s : value.split(",")) { JSONArray should = new JSONArray(); s = s.toLowerCase(); - for (String valueTemp : s.split(" ")) { - Map mapTemp = new HashMap(); - mapTemp.put(key,"*"+valueTemp+"*"); - Map map1 = new HashMap<>(); - map1.put("wildcard",mapTemp); - should.add(map1); + 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); } - JSONObject jsonObject = jeroElasticsearchTemplate.buildBoolQuery(null, null, should); - must.add(jsonObject); } } }