From d9624669b17c8092cb87f83484ebac6d7b5f5e5b Mon Sep 17 00:00:00 2001 From: super_liu <396572590@qq.com> Date: Wed, 8 Sep 2021 20:17:22 +0800 Subject: [PATCH] feat: There is no way the --- .../controller/SearchCenterController.java | 8 ++--- .../service/impl/SearchCenterServiceImpl.java | 32 +++++++++++-------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java b/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java index fb4b5ca4..6fa51b04 100644 --- a/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java +++ b/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java @@ -84,13 +84,9 @@ public class SearchCenterController extends BaseController> if (StringUtils.isAlphanumericSpace(searchInfoEO.getSelectIndex())) { if(elasticsearchService.isIndexExist(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 (pattern.matcher(searchInfoEO.getSelectValue()).matches()) { - result = searchCenterService.searchSarBykeyAndHighLightNumber(searchInfoEO); - }else { - result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO); - } + result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO); } else { result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO); } diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java b/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java index eb6116bc..f1845e49 100644 --- a/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java +++ b/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java @@ -943,12 +943,16 @@ public class SearchCenterServiceImpl implements SearchCenterService { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); // 记录搜索记录到数据库中 if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){ - QueryBuilder multiQueryBuilder = QueryBuilders.multiMatchQuery(""); - multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), - "title","textContent","textItems" - ).minimumShouldMatch("100%").field("title",10f); - boolQueryBuilder.must(multiQueryBuilder); -// boolQueryBuilder.should() + boolQueryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), + "title" + ).minimumShouldMatch("100%").field("title",10f)); + boolQueryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), + "textContent" + ).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())) { @@ -1060,16 +1064,16 @@ public class SearchCenterServiceImpl implements SearchCenterService { BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery(); QueryBuilder multiQueryBuilder; multiQueryBuilder = QueryBuilders.multiMatchQuery(value, - "title","textContent").minimumShouldMatch("100%").field("title",1f); + "title.keyword","textContent.keyword").minimumShouldMatch("100%").field("title.keyword",1f); boolQueryMust.must(multiQueryBuilder); - boolQueryShould.should(QueryBuilders.wildcardQuery("title", "*"+searchInfoEO.getSelectValue()+"*").boost(10f)) - .should(QueryBuilders.wildcardQuery("textContent", "*"+searchInfoEO.getSelectValue()+"*")) + boolQueryShould.should(QueryBuilders.wildcardQuery("title.keyword", "*"+searchInfoEO.getSelectValue()+"*").boost(10f)) + .should(QueryBuilders.wildcardQuery("textContent.keyword", "*"+searchInfoEO.getSelectValue()+"*")) .should(multiQueryBuilder); boolQueryBuilder.should(boolQueryShould); //在结果中检索 // boolQueryBuilder.must(multiQueryBuilder); HighlightBuilder hiBuilder=new HighlightBuilder(); - HighlightBuilder.Field highlightTitle = new HighlightBuilder.Field("title"); + HighlightBuilder.Field highlightTitle = new HighlightBuilder.Field("title.keyword"); hiBuilder.field(highlightTitle); HighlightBuilder.Field highlightUser = new HighlightBuilder.Field("textContent"); hiBuilder.field(highlightUser); @@ -1091,7 +1095,7 @@ public class SearchCenterServiceImpl implements SearchCenterService { Map sourceAsMap = searchHit.getSourceAsMap(); //解析高亮字段 Map highlightFields = searchHit.getHighlightFields(); - HighlightField field= highlightFields.get("title"); + HighlightField field= highlightFields.get("title.keyword"); if(field!= null){ Text[] fragments = field.fragments(); String n_field = ""; @@ -1099,11 +1103,11 @@ public class SearchCenterServiceImpl implements SearchCenterService { n_field += fragment; } //高亮标题覆盖原标题 - sourceAsMap.put("title",n_field); + sourceAsMap.put("title.keyword",n_field); } Map highlightFieldsnameshowStr = searchHit.getHighlightFields(); - HighlightField fieldnameshowStr= highlightFieldsnameshowStr.get("textContent"); + HighlightField fieldnameshowStr= highlightFieldsnameshowStr.get("textContent.keyword"); if(fieldnameshowStr!= null){ Text[] fragments = fieldnameshowStr.fragments(); String n_field = ""; @@ -1111,7 +1115,7 @@ public class SearchCenterServiceImpl implements SearchCenterService { n_field += fragment; } //高亮标题覆盖原标题 - sourceAsMap.put("textContent",n_field); + sourceAsMap.put("textContent.keyword",n_field); } result.add(sourceAsMap); }