feat: There is no way the

This commit is contained in:
super_liu
2021-09-08 20:17:22 +08:00
parent f7497d48bc
commit d9624669b1
2 changed files with 20 additions and 20 deletions
@@ -84,13 +84,9 @@ public class SearchCenterController extends BaseController<Map<String, Object>>
if (StringUtils.isAlphanumericSpace(searchInfoEO.getSelectIndex())) { if (StringUtils.isAlphanumericSpace(searchInfoEO.getSelectIndex())) {
if(elasticsearchService.isIndexExist(searchInfoEO.getSelectIndex())){ if(elasticsearchService.isIndexExist(searchInfoEO.getSelectIndex())){
if("fulltextserch".equals(searchInfoEO.getSelectIndex()) || "fulltextserch"== searchInfoEO.getSelectIndex()){ if("fulltextserch".equals(searchInfoEO.getSelectIndex()) || "fulltextserch"== searchInfoEO.getSelectIndex()){
Pattern pattern = Pattern.compile("^[a-zA-Z]+\\s[0-9a-zA-Z\\.\\(\\\\\\)\\-\\s]+$"); Pattern pattern = Pattern.compile("^[0-9a-zA-Z\\.\\(\\\\\\)\\s\\/\\-]+$");
if (null != searchInfoEO.getSelectValue() && StringUtils.isNotBlank(searchInfoEO.getSelectValue())) { if (null != searchInfoEO.getSelectValue() && StringUtils.isNotBlank(searchInfoEO.getSelectValue())) {
if (pattern.matcher(searchInfoEO.getSelectValue()).matches()) { result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO);
result = searchCenterService.searchSarBykeyAndHighLightNumber(searchInfoEO);
}else {
result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO);
}
} else { } else {
result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO); result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO);
} }
@@ -943,12 +943,16 @@ public class SearchCenterServiceImpl implements SearchCenterService {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
// 记录搜索记录到数据库中 // 记录搜索记录到数据库中
if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){ if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){
QueryBuilder multiQueryBuilder = QueryBuilders.multiMatchQuery(""); boolQueryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),
multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), "title"
"title","textContent","textItems" ).minimumShouldMatch("100%").field("title",10f));
).minimumShouldMatch("100%").field("title",10f); boolQueryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),
boolQueryBuilder.must(multiQueryBuilder); "textContent"
// boolQueryBuilder.should() ).minimumShouldMatch("100%").field("title",10f));
boolQueryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),
"textItems"
).minimumShouldMatch("100%").field("title",10f));
boolQueryBuilder.should(QueryBuilders.wildcardQuery("title.keyword","*"+searchInfoEO.getSelectValue()+"*"));
} }
//在结果中检索 //在结果中检索
if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword())) { if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword())) {
@@ -1060,16 +1064,16 @@ public class SearchCenterServiceImpl implements SearchCenterService {
BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery(); BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery();
QueryBuilder multiQueryBuilder; QueryBuilder multiQueryBuilder;
multiQueryBuilder = QueryBuilders.multiMatchQuery(value, multiQueryBuilder = QueryBuilders.multiMatchQuery(value,
"title","textContent").minimumShouldMatch("100%").field("title",1f); "title.keyword","textContent.keyword").minimumShouldMatch("100%").field("title.keyword",1f);
boolQueryMust.must(multiQueryBuilder); boolQueryMust.must(multiQueryBuilder);
boolQueryShould.should(QueryBuilders.wildcardQuery("title", "*"+searchInfoEO.getSelectValue()+"*").boost(10f)) boolQueryShould.should(QueryBuilders.wildcardQuery("title.keyword", "*"+searchInfoEO.getSelectValue()+"*").boost(10f))
.should(QueryBuilders.wildcardQuery("textContent", "*"+searchInfoEO.getSelectValue()+"*")) .should(QueryBuilders.wildcardQuery("textContent.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
.should(multiQueryBuilder); .should(multiQueryBuilder);
boolQueryBuilder.should(boolQueryShould); boolQueryBuilder.should(boolQueryShould);
//在结果中检索 //在结果中检索
// boolQueryBuilder.must(multiQueryBuilder); // boolQueryBuilder.must(multiQueryBuilder);
HighlightBuilder hiBuilder=new HighlightBuilder(); HighlightBuilder hiBuilder=new HighlightBuilder();
HighlightBuilder.Field highlightTitle = new HighlightBuilder.Field("title"); HighlightBuilder.Field highlightTitle = new HighlightBuilder.Field("title.keyword");
hiBuilder.field(highlightTitle); hiBuilder.field(highlightTitle);
HighlightBuilder.Field highlightUser = new HighlightBuilder.Field("textContent"); HighlightBuilder.Field highlightUser = new HighlightBuilder.Field("textContent");
hiBuilder.field(highlightUser); hiBuilder.field(highlightUser);
@@ -1091,7 +1095,7 @@ public class SearchCenterServiceImpl implements SearchCenterService {
Map<String, Object> sourceAsMap = searchHit.getSourceAsMap(); Map<String, Object> sourceAsMap = searchHit.getSourceAsMap();
//解析高亮字段 //解析高亮字段
Map<String, HighlightField> highlightFields = searchHit.getHighlightFields(); Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();
HighlightField field= highlightFields.get("title"); HighlightField field= highlightFields.get("title.keyword");
if(field!= null){ if(field!= null){
Text[] fragments = field.fragments(); Text[] fragments = field.fragments();
String n_field = ""; String n_field = "";
@@ -1099,11 +1103,11 @@ public class SearchCenterServiceImpl implements SearchCenterService {
n_field += fragment; n_field += fragment;
} }
//高亮标题覆盖原标题 //高亮标题覆盖原标题
sourceAsMap.put("title",n_field); sourceAsMap.put("title.keyword",n_field);
} }
Map<String, HighlightField> highlightFieldsnameshowStr = searchHit.getHighlightFields(); Map<String, HighlightField> highlightFieldsnameshowStr = searchHit.getHighlightFields();
HighlightField fieldnameshowStr= highlightFieldsnameshowStr.get("textContent"); HighlightField fieldnameshowStr= highlightFieldsnameshowStr.get("textContent.keyword");
if(fieldnameshowStr!= null){ if(fieldnameshowStr!= null){
Text[] fragments = fieldnameshowStr.fragments(); Text[] fragments = fieldnameshowStr.fragments();
String n_field = ""; String n_field = "";
@@ -1111,7 +1115,7 @@ public class SearchCenterServiceImpl implements SearchCenterService {
n_field += fragment; n_field += fragment;
} }
//高亮标题覆盖原标题 //高亮标题覆盖原标题
sourceAsMap.put("textContent",n_field); sourceAsMap.put("textContent.keyword",n_field);
} }
result.add(sourceAsMap); result.add(sourceAsMap);
} }