Merge branch 'develop_migration' into 'develop_master'
feat: There is no way the, 新需求 添加查询ES详情接口 文本分词高亮显示全部内容 See merge request LiuChao/foton-slrs-system-rest!520
This commit is contained in:
@@ -72,6 +72,17 @@ public class SearchCenterController extends BaseController<Map<String, Object>>
|
|||||||
return Result.success(iTsDictypeService.getSearchMenu());
|
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
|
* @param searchInfoEO
|
||||||
|
|||||||
@@ -273,6 +273,9 @@ public class SeniorSearchInfoEO extends BasePage {
|
|||||||
@ApiModelProperty(value = "检索方式 : 全文检索 allTextSearch 、标题检索 titleSearch")
|
@ApiModelProperty(value = "检索方式 : 全文检索 allTextSearch 、标题检索 titleSearch")
|
||||||
private String selectType;
|
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> selectGroupdata(SeniorSearchInfoEO searchInfoEO);
|
||||||
|
|
||||||
|
Map<String, Object> searchSarBykeyAndHighLightByDetils(SeniorSearchInfoEO searchInfoEO);
|
||||||
|
|
||||||
String [] searchIdToImport(SeniorSearchInfoEO searchInfoEO);
|
String [] searchIdToImport(SeniorSearchInfoEO searchInfoEO);
|
||||||
|
|
||||||
List<Map<String, Object>> searchSarBykeyAndHighLight(SeniorSearchInfoEO searchInfoEO) throws Exception;
|
List<Map<String, Object>> searchSarBykeyAndHighLight(SeniorSearchInfoEO searchInfoEO) throws Exception;
|
||||||
|
|||||||
+108
@@ -1206,6 +1206,114 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
|||||||
return resultid;
|
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
|
@Override
|
||||||
public List<Map<String, Object>> searchSarBykeyAndHighLight(SeniorSearchInfoEO searchInfoEO) throws Exception {
|
public List<Map<String, Object>> searchSarBykeyAndHighLight(SeniorSearchInfoEO searchInfoEO) throws Exception {
|
||||||
// if ()
|
// if ()
|
||||||
|
|||||||
Reference in New Issue
Block a user