搜索中心-文档库

This commit is contained in:
zhn
2023-10-27 19:25:12 +08:00
parent f93221000c
commit 6996a30c9a
@@ -47,6 +47,7 @@ import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -213,7 +214,7 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
JSONArray jsonArrySort = new JSONArray(); JSONArray jsonArrySort = new JSONArray();
JSONObject sort = new JSONObject(); JSONObject sort = new JSONObject();
Map<String,Object> mapSort = new HashMap<>(); Map<String,Object> mapSort = new HashMap<>();
Map<String,Object> mapSortTemp = new HashMap<>(); Map<String,Object> mapSortTemp = new LinkedHashMap<>();
if(StringUtils.isNotBlank(orderBy) && StringUtils.isNotBlank(orderByField)){ if(StringUtils.isNotBlank(orderBy) && StringUtils.isNotBlank(orderByField)){
//orderBy=1正序,orderBy=1倒序 //orderBy=1正序,orderBy=1倒序
if("1".equals(orderBy)){ if("1".equals(orderBy)){
@@ -227,10 +228,24 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
mapSortTemp.put(orderByField,mapSort); mapSortTemp.put(orderByField,mapSort);
} }
}else{ }else{
mapSortTemp.put("serial_number.keyword","asc"); if(ObjectUtils.isNotEmpty(((Map<String, Object>) map.get("mapOne")).get("serial_number"))
|| ObjectUtils.isNotEmpty(((Map<String, Object>) map.get("mapTwo")).get("serial_number"))){
Map<String,Object> score = new HashMap<>();
score.put("order","desc");
mapSortTemp.put("_score",score);
// Map<String,Object> 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"); // mapSortTemp.put("create_time","desc");
} }
sort.putAll(mapSortTemp);
jsonArrySort.add(sort); jsonArrySort.add(sort);
//封装查询条件 //封装查询条件
@@ -332,15 +347,34 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
for (String s : value.split(",")) { for (String s : value.split(",")) {
JSONArray should = new JSONArray(); JSONArray should = new JSONArray();
s = s.toLowerCase(); s = s.toLowerCase();
for (String valueTemp : s.split(" ")) { if(s.contains(" ")){
Map<String,Object> mapTemp = new HashMap(); for (String valueTemp : s.split(" ")) {
mapTemp.put(key,"*"+valueTemp+"*"); Map<String,Object> mapTemp = new HashMap();
Map<String,Object> map1 = new HashMap<>(); mapTemp.put(key,"*"+valueTemp+"*");
map1.put("wildcard",mapTemp); Map<String,Object> map1 = new HashMap<>();
should.add(map1); map1.put("wildcard",mapTemp);
should.add(map1);
}
JSONObject jsonObject = jeroElasticsearchTemplate.buildBoolQuery(null, null, should);
must.add(jsonObject);
}else{
Map<String, Object> map = new HashMap<>();
Map<String, Object> queryMap = new HashMap<>();
Map<String, Object> 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);
} }
} }
} }