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 9eea3a2d..e09f6b97 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 @@ -72,6 +72,17 @@ public class SearchCenterController extends BaseController> return Result.success(iTsDictypeService.getSearchMenu()); }*/ + /** + * + * @param searchInfoEO + * @return + */ + @ApiOperation(value = "|SearchCenter|根据标准ID查询详情") + @PostMapping(value="/searchSarBykeyByDetils") + public ResponseMessage> searchSarBykeyByDetils(SeniorSearchInfoEO searchInfoEO){ + return Result.success(searchCenterService.searchSarBykeyAndHighLightByDetils(searchInfoEO)); + } + /** * * @param searchInfoEO diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/SeniorSearchInfoEO.java b/adc-da-search/src/main/java/com/adc/da/search/entity/SeniorSearchInfoEO.java index 3e03c2f1..4dba3f5a 100644 --- a/adc-da-search/src/main/java/com/adc/da/search/entity/SeniorSearchInfoEO.java +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/SeniorSearchInfoEO.java @@ -273,6 +273,9 @@ public class SeniorSearchInfoEO extends BasePage { @ApiModelProperty(value = "检索方式 : 全文检索 allTextSearch 、标题检索 titleSearch") private String selectType; + @ApiModelProperty(value = "全文检索 标准ID") + private String standId; + } diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/SearchCenterService.java b/adc-da-search/src/main/java/com/adc/da/search/service/SearchCenterService.java index d6c4782f..418fe9b7 100644 --- a/adc-da-search/src/main/java/com/adc/da/search/service/SearchCenterService.java +++ b/adc-da-search/src/main/java/com/adc/da/search/service/SearchCenterService.java @@ -24,6 +24,8 @@ public interface SearchCenterService { Map selectGroupdata(SeniorSearchInfoEO searchInfoEO); + Map searchSarBykeyAndHighLightByDetils(SeniorSearchInfoEO searchInfoEO); + String [] searchIdToImport(SeniorSearchInfoEO searchInfoEO); List> searchSarBykeyAndHighLight(SeniorSearchInfoEO searchInfoEO) throws Exception; 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 35aa18cd..9bbaecca 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 @@ -1206,6 +1206,114 @@ public class SearchCenterServiceImpl implements SearchCenterService { return resultid; } + @Override + public Map searchSarBykeyAndHighLightByDetils(SeniorSearchInfoEO searchInfoEO){ +// if () + Map resultMap = new HashMap<>(); + SearchRequestBuilder searchRequestBuilder; + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + BoolQueryBuilder boolSelectValue = new BoolQueryBuilder(); + + // 记录搜索记录到数据库中 + if(StringUtils.isNotBlank(searchInfoEO.getStandId())){ + QueryBuilder multiQueryBuilderById = QueryBuilders.multiMatchQuery(""); + QueryBuilder multiQueryBuilder = QueryBuilders.multiMatchQuery(""); + multiQueryBuilderById = QueryBuilders.multiMatchQuery(searchInfoEO.getStandId(), + "id" + ); + boolQueryBuilder.must(multiQueryBuilderById); + } + if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue()) && StringUtils.isNotBlank(searchInfoEO.getStandId())){ + QueryBuilder multiQueryBuilder = QueryBuilders.multiMatchQuery(""); + multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), + "textContent" + ).minimumShouldMatch("100%"); + boolQueryBuilder.must(multiQueryBuilder); + } + //在结果中检索 + if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword())) { + QueryBuilder multiQuery = queryInResult(searchInfoEO); + boolQueryBuilder.must(multiQuery); + } + + BoolQueryBuilder queryBuilder = new BoolQueryBuilder(); + if(StringUtils.isNotBlank(searchInfoEO.getNYLXCLASS()) || StringUtils.isNotBlank(searchInfoEO.getCLLX())){ + if(StringUtils.isNotBlank(searchInfoEO.getNYLXCLASS())){ + queryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getNYLXCLASS(), + "textContent" + ).minimumShouldMatch("100%").field("title",10f)); + } + + if(StringUtils.isNotBlank(searchInfoEO.getCLLX())){ + queryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getCLLX(), + "textContent" + ).minimumShouldMatch("100%").field("title",10f)); + } + + boolQueryBuilder.must(queryBuilder); + } + + HighlightBuilder hiBuilder=new HighlightBuilder(); + HighlightBuilder.Field highlightUser = new HighlightBuilder.Field("textContent"); + highlightUser.numOfFragments(0); + hiBuilder.field(highlightUser); + hiBuilder.preTags(""); + hiBuilder.postTags(""); + updateIndex("fulltextserch"); + // _score 全文词频排序 + searchRequestBuilder = client.prepareSearch("fulltextserch") + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .highlighter(hiBuilder); + + // boolQueryBuilder.must(QueryBuilders.matchQuery("valid_flag", 0)); +// boolQueryBuilder.should(boolQueryBuilderShould); + searchRequestBuilder.setQuery(boolQueryBuilder).setTrackTotalHits(true); + // 获取查询到的结果 + SearchResponse response = searchRequestBuilder.get(); + for (SearchHit searchHit : response.getHits().getHits()) { + searchHit.getSourceAsMap().put("id", searchHit.getId()); + resultMap = searchHit.getSourceAsMap(); + //解析高亮字段 + Map highlightFieldsnameshowStr = searchHit.getHighlightFields(); + HighlightField fieldnameshowStr= highlightFieldsnameshowStr.get("textContent"); + if(fieldnameshowStr!= null){ + Text[] fragments = fieldnameshowStr.fragments(); + String n_field = ""; + for (Text fragment : fragments) { + n_field += fragment; + } + //高亮标题覆盖原标题 + resultMap.put("textContent",n_field); + } + + // 条款内容 + Map highlightFieldItemStr = searchHit.getHighlightFields(); + HighlightField fieldItemStr= highlightFieldItemStr.get("textItems"); + if(fieldItemStr!= null){ + Text[] fragments = fieldItemStr.fragments(); + String n_field = ""; + for (Text fragment : fragments) { + n_field += fragment; + } + //高亮标题覆盖原标题 + resultMap.put("textItems",n_field); + } + //发布日期添加高亮 +// Map highlightFieldsDatehowStr = searchHit.getHighlightFields(); +// HighlightField fieldDateshowStr= highlightFieldsDatehowStr.get("issue_time"); +// if(fieldDateshowStr!= null){ +// Text[] fragments = fieldDateshowStr.fragments(); +// String n_field = ""; +// for (Text fragment : fragments) { +// n_field += fragment; +// } +// //高亮标题覆盖原标题 +// sourceAsMap.put("issue_time",n_field); +// } + } + return resultMap; + } + @Override public List> searchSarBykeyAndHighLight(SeniorSearchInfoEO searchInfoEO) throws Exception { // if ()