feat: There is no way the, 新需求 添加查询ES详情接口 文本分词高亮显示全部内容
This commit is contained in:
@@ -72,6 +72,17 @@ public class SearchCenterController extends BaseController<Map<String, Object>>
|
||||
return Result.success(iTsDictypeService.getSearchMenu());
|
||||
}*/
|
||||
|
||||
/**
|
||||
*
|
||||
* @param searchInfoEO
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "|SearchCenter|根据标准ID查询详情")
|
||||
@PostMapping(value="/searchSarBykeyByDetils")
|
||||
public ResponseMessage<Map<String, Object>> searchSarBykeyByDetils(SeniorSearchInfoEO searchInfoEO){
|
||||
return Result.success(searchCenterService.searchSarBykeyAndHighLightByDetils(searchInfoEO));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param searchInfoEO
|
||||
|
||||
@@ -273,6 +273,9 @@ public class SeniorSearchInfoEO extends BasePage {
|
||||
@ApiModelProperty(value = "检索方式 : 全文检索 allTextSearch 、标题检索 titleSearch")
|
||||
private String selectType;
|
||||
|
||||
@ApiModelProperty(value = "全文检索 标准ID")
|
||||
private String standId;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@ public interface SearchCenterService {
|
||||
|
||||
Map<String, Object> selectGroupdata(SeniorSearchInfoEO searchInfoEO);
|
||||
|
||||
Map<String, Object> searchSarBykeyAndHighLightByDetils(SeniorSearchInfoEO searchInfoEO);
|
||||
|
||||
String [] searchIdToImport(SeniorSearchInfoEO searchInfoEO);
|
||||
|
||||
List<Map<String, Object>> searchSarBykeyAndHighLight(SeniorSearchInfoEO searchInfoEO) throws Exception;
|
||||
|
||||
+108
@@ -1206,6 +1206,114 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
||||
return resultid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> searchSarBykeyAndHighLightByDetils(SeniorSearchInfoEO searchInfoEO){
|
||||
// if ()
|
||||
Map<String, Object> 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("<span class='highlight-Es-class'>");
|
||||
hiBuilder.postTags("</span>");
|
||||
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<String, HighlightField> 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<String, HighlightField> 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<String, HighlightField> 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<Map<String, Object>> searchSarBykeyAndHighLight(SeniorSearchInfoEO searchInfoEO) throws Exception {
|
||||
// if ()
|
||||
|
||||
Reference in New Issue
Block a user