Merge branch 'develop_migration' into 'develop_master'

feat: There is no way the, 优化ES 权重 全文搜索 已修改查询问题 待确认 权重字段存储

See merge request LiuChao/foton-slrs-system-rest!463
This commit is contained in:
super_liu
2022-04-29 23:04:14 +08:00
@@ -1306,7 +1306,7 @@ public class SearchCenterServiceImpl implements SearchCenterService {
String select = ""; String select = "";
if (-1 != num) { if (-1 != num) {
value = searchInfoEO.getSelectValue().substring(0, num).trim().toUpperCase(); value = searchInfoEO.getSelectValue().substring(0, num).trim().toUpperCase();
if (dicMap.containsKey(value) && dicMap.get(value) != null && !"".equals(dicMap.get(value))){ if (dicMap.containsKey(value.toUpperCase()) && dicMap.get(value.toUpperCase()) != null && !"".equals(dicMap.get(value.toUpperCase()))){
select = searchInfoEO.getSelectValue().substring(num + 1).trim(); select = searchInfoEO.getSelectValue().substring(num + 1).trim();
real = value + " " + select; real = value + " " + select;
}else { }else {
@@ -1315,60 +1315,83 @@ public class SearchCenterServiceImpl implements SearchCenterService {
} }
}else{ }else{
String reg = ".*[0-9].*"; String reg = ".*[0-9].*";
if("-".contains(real)){ if(real.contains("-")){
String content = real.split("-")[0]; String content = real.split("-")[0];
value = content.replaceAll("[^(A-Za-z\\/)]", ""); value = content.replaceAll("[^(A-Za-z\\/)]", "");
String[] valArr = value.split("\\/"); if (dicMap.containsKey(value.toUpperCase()) && dicMap.get(value.toUpperCase()) != null && !"".equals(dicMap.get(value.toUpperCase()))) {
if (valArr.length > 2) { String[] valArr = value.split("\\/");
value = valArr[0] + "/" + valArr[1]; if (valArr.length > 2) {
select = content.replaceAll("[^(0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", "").replace(value,""); value = valArr[0] + "/" + valArr[1];
// 如果类别小写 转 大写 if (dicMap.containsKey(value.toUpperCase()) && dicMap.get(value.toUpperCase()) != null && !"".equals(dicMap.get(value.toUpperCase()))) {
Pattern pattern = Pattern.compile("^[a-zA-Z\\/]+$"); select = content.replaceAll("[^(0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", "").replace(value,"");
if (pattern.matcher(value).matches()) { }else {
value = value.toUpperCase(); select = content.replaceAll("[^(0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", "");
}
// 如果类别小写 转 大写
Pattern pattern = Pattern.compile("^[a-zA-Z\\/]+$");
if (pattern.matcher(value).matches()) {
value = value.toUpperCase();
}
}else{
value = valArr[0];
if (dicMap.containsKey(value.toUpperCase()) && dicMap.get(value.toUpperCase()) != null && !"".equals(dicMap.get(value.toUpperCase()))) {
select = real.replaceAll("[^(0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", "").replace(value,"");
}else {
select = real.replaceAll("[^(0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", "");
}
// 如果类别小写 转 大写
Pattern pattern = Pattern.compile("^[a-zA-Z\\/]+$");
if (pattern.matcher(value).matches()) {
value = value.toUpperCase();
}
} }
}else{ if (dicMap.containsKey(value.toUpperCase()) && dicMap.get(value.toUpperCase()) != null && !"".equals(dicMap.get(value.toUpperCase()))){
value = valArr[0]; real = value + " " + select;
select = real.replaceAll("[^(0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", "").replace(value,""); }else {
// 如果类别小写 转 大写 select = real;
Pattern pattern = Pattern.compile("^[a-zA-Z\\/]+$"); value = null;
if (pattern.matcher(value).matches()) {
value = value.toUpperCase();
} }
}
if (dicMap.containsKey(value) && dicMap.get(value) != null && !"".equals(dicMap.get(value))){
real = value + " " + select;
}else { }else {
select = null; select = real;
value = real; value = null;
} }
}else if(real.matches(reg)){ }else if(real.matches(reg)){
value = real.replaceAll("[^(A-Za-z\\/)]", ""); value = real.replaceAll("[^(A-Za-z\\/)]", "");
String[] valArr = value.split("\\/"); System.out.println(dicMap.containsKey(value.toUpperCase()));
if (valArr.length > 2) { if (dicMap.containsKey(value.toUpperCase()) && dicMap.get(value.toUpperCase()) != null && !"".equals(dicMap.get(value.toUpperCase()))) {
value = valArr[0] + "/" + valArr[1]; String[] valArr = value.split("\\/");
String[] str = real.split(value); if (valArr.length > 2) {
String sel = str[1].replaceAll("[^(0-9\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", ""); value = valArr[0] + "/" + valArr[1];
String[] valArr2 = sel.split("\\/"); String[] str = real.split(value);
if(valArr2.length > 2){ String sel = str[1].replaceAll("[^(0-9\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", "");
select = valArr2[0] + '/' + valArr[3] + valArr2[1]; String[] valArr2 = sel.split("\\/");
}else { if(valArr2.length > 2){
select = sel; select = valArr2[0] + '/' + valArr[3] + valArr2[1];
} }else {
}else{ select = sel;
select = real.replaceAll("[^(0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", "").replace(value,""); }
}else{
if (dicMap.containsKey(value.toUpperCase()) && dicMap.get(value.toUpperCase()) != null && !"".equals(dicMap.get(value.toUpperCase()))) {
select = real.replaceAll("[^(0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", "").replace(value,"");
}else {
select = real.replaceAll("[^(0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", "");
}
// 如果类别小写 转 大写 // 如果类别小写 转 大写
Pattern pattern = Pattern.compile("^[a-zA-Z\\/]+$"); Pattern pattern = Pattern.compile("^[a-zA-Z\\/]+$");
if (pattern.matcher(value).matches()) { if (pattern.matcher(value).matches()) {
value = value.toUpperCase(); value = value.toUpperCase();
}
}
if (dicMap.containsKey(value.toUpperCase()) && dicMap.get(value.toUpperCase()) != null && !"".equals(dicMap.get(value.toUpperCase()))){
real = value + " " + select;
}else {
select = real;
value = null;
} }
}
if (dicMap.containsKey(value) && dicMap.get(value) != null && !"".equals(dicMap.get(value))){
real = value + " " + select;
}else { }else {
select = null; select = real;
value = real; value = null;
} }
}else { }else {
value = real; value = real;
@@ -1424,9 +1447,9 @@ public class SearchCenterServiceImpl implements SearchCenterService {
if(null != value || null != selects){ if(null != value || null != selects){
if (null != value && selects == null) { if (null != value && selects == null) {
boolSelectValue boolSelectValue
.should(QueryBuilders.wildcardQuery("title.keyword", "*" + value + "*").boost(1000f)) .should(QueryBuilders.wildcardQuery("title.keyword", "*" + value.toUpperCase() + "*").boost(1000f))
.should(QueryBuilders.wildcardQuery("textContent.keyword", "*" + value + "*").boost(0.0000000000000000000000000000000001f)) .should(QueryBuilders.wildcardQuery("textContent.keyword", "*" + value.toUpperCase() + "*").boost(0.0000000000000000000000000000000001f))
.should(QueryBuilders.wildcardQuery("issue_time", "*" + value + "*")); .should(QueryBuilders.wildcardQuery("issue_time", "*" + value.toUpperCase() + "*"));
// multiQueryBuilder = QueryBuilders.multiMatchQuery("*"+value+"*", // multiQueryBuilder = QueryBuilders.multiMatchQuery("*"+value+"*",
// "title.keyword", "textContent", "issue_time").minimumShouldMatch("100%").field("title.keyword", 1000f).field("textContent.keyword", 0.0000000000000000000000000000000001f); // "title.keyword", "textContent", "issue_time").minimumShouldMatch("100%").field("title.keyword", 1000f).field("textContent.keyword", 0.0000000000000000000000000000000001f);
//// boolQueryMust.must(multiQueryBuilder); //// boolQueryMust.must(multiQueryBuilder);
@@ -1435,9 +1458,9 @@ public class SearchCenterServiceImpl implements SearchCenterService {
// searchInfoEO.setSelectValue(searchInfoEO.getSelectValue().replace("-","\\-")); // searchInfoEO.setSelectValue(searchInfoEO.getSelectValue().replace("-","\\-"));
if (null != selects) { if (null != selects) {
boolSelectValue boolSelectValue
.should(QueryBuilders.wildcardQuery("title.keyword", "*" + real + "*").boost(1000f)) .should(QueryBuilders.wildcardQuery("title.keyword", "*" + real.toUpperCase() + "*").boost(1000f))
.should(QueryBuilders.wildcardQuery("textContent.keyword", "*" + real + "*").boost(0.0000000000000000000000000000000001f)) .should(QueryBuilders.wildcardQuery("textContent.keyword", "*" + real.toUpperCase() + "*").boost(0.0000000000000000000000000000000001f))
.should(QueryBuilders.wildcardQuery("issue_time", "*" + real + "*")); .should(QueryBuilders.wildcardQuery("issue_time", "*" + real.toUpperCase() + "*"));
// for (String se : selects) { // for (String se : selects) {
// if (StringUtils.isNotBlank(se)) { // if (StringUtils.isNotBlank(se)) {
// boolSelectValue // boolSelectValue