feat: There is no way the, es 全文 检索 调整

This commit is contained in:
super_liu
2022-05-18 17:29:44 +08:00
parent fea5aab330
commit c31fbf61da
5 changed files with 623 additions and 34 deletions
@@ -1209,17 +1209,11 @@ public class SearchCenterServiceImpl implements SearchCenterService {
// 记录搜索记录到数据库中
if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){
boolSelectValue.should(QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),
"title"
).minimumShouldMatch("100%").field("title",10f));
boolSelectValue.should(QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),
"textContent"
).minimumShouldMatch("100%").field("title",10f));
boolSelectValue.should(QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),
"textItems"
).minimumShouldMatch("100%").field("title",10f));
boolSelectValue.should(QueryBuilders.wildcardQuery("title.keyword","*"+searchInfoEO.getSelectValue()+"*"));
boolQueryBuilder.must(boolSelectValue);
QueryBuilder multiQueryBuilder = QueryBuilders.multiMatchQuery("");
multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),
"sortTitle","numberTitle","yearOrder","nameTitle","title","textContent","issue_time"
).minimumShouldMatch("100%").field("sortTitle",1005f).field("numberTitle",1004f).field("yearOrder",1003f).field("nameTitle",1002f).field("title",1000f);
boolQueryBuilder.must(multiQueryBuilder);
}
//在结果中检索
if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword())) {
@@ -1481,29 +1475,19 @@ public class SearchCenterServiceImpl implements SearchCenterService {
if(null != value || null != select){
if (null != value && select == null) {
boolSelectValue
.should(QueryBuilders.wildcardQuery("sortTitle.keyword", "*" + value.toUpperCase() + "*").boost(1005f))
.should(QueryBuilders.wildcardQuery("numberTitle.keyword", "*" + value.toUpperCase() + "*").boost(1003f))
.should(QueryBuilders.wildcardQuery("yearOrder.keyword", "*" + value.toUpperCase() + "*").boost(1002f))
.should(QueryBuilders.wildcardQuery("nameTitle.keyword", "*" + value.toUpperCase() + "*").boost(1001f))
.should(QueryBuilders.wildcardQuery("title.keyword", "*" + value.toUpperCase() + "*").boost(1000f))
.should(QueryBuilders.wildcardQuery("textContent.keyword", "*" + value.toUpperCase() + "*").boost(0.0000000000000000000000000000000001f))
.should(QueryBuilders.wildcardQuery("issue_time", "*" + value.toUpperCase() + "*"));
// multiQueryBuilder = QueryBuilders.multiMatchQuery("*"+value+"*",
// "title.keyword", "textContent", "issue_time").minimumShouldMatch("100%").field("title.keyword", 1000f).field("textContent.keyword", 0.0000000000000000000000000000000001f);
//// boolQueryMust.must(multiQueryBuilder);
// boolQueryShould.should(multiQueryBuilder);
QueryBuilder queryBuilder1 = QueryBuilders.multiMatchQuery("");
queryBuilder1 = QueryBuilders.multiMatchQuery(value,
"sortTitle","numberTitle","yearOrder","nameTitle","title","textContent","issue_time"
).minimumShouldMatch("100%").field("sortTitle",1005f).field("numberTitle",1004f).field("yearOrder",1003f).field("nameTitle",1002f).field("title",1000f);
boolQueryShould.must(queryBuilder1);
}
// searchInfoEO.setSelectValue(searchInfoEO.getSelectValue().replace("-","\\-"));
if (null != select) {
boolSelectValue
.should(QueryBuilders.wildcardQuery("sortTitle.keyword", "*" + real.toUpperCase() + "*").boost(1005f))
.should(QueryBuilders.wildcardQuery("numberTitle.keyword", "*" + real.toUpperCase() + "*").boost(1003f))
.should(QueryBuilders.wildcardQuery("yearOrder.keyword", "*" + real.toUpperCase() + "*").boost(1002f))
.should(QueryBuilders.wildcardQuery("nameTitle.keyword", "*" + real.toUpperCase() + "*").boost(1001f))
.should(QueryBuilders.wildcardQuery("title.keyword", "*" + real.toUpperCase() + "*").boost(1000f))
.should(QueryBuilders.wildcardQuery("textContent.keyword", "*" + real.toUpperCase() + "*").boost(0.0000000000000000000000000000000001f))
.should(QueryBuilders.wildcardQuery("issue_time", "*" + real.toUpperCase() + "*"));
QueryBuilder queryBuilder2 = QueryBuilders.multiMatchQuery("");
queryBuilder2 = QueryBuilders.multiMatchQuery(real,
"sortTitle","numberTitle","yearOrder","nameTitle","title","textContent","issue_time"
).minimumShouldMatch("100%").field("sortTitle",1005f).field("numberTitle",1004f).field("yearOrder",1003f).field("nameTitle",1002f).field("title",1000f);
boolQueryShould.must(queryBuilder2);
// for (String se : selects) {
// if (StringUtils.isNotBlank(se)) {
// boolSelectValue
@@ -1519,7 +1503,6 @@ public class SearchCenterServiceImpl implements SearchCenterService {
// .should(QueryBuilders.wildcardQuery("issue_time", "*" + real + "*"));
// boolQueryShould.must(boolSelectValue);
// }
boolQueryShould.must(boolSelectValue);
}
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
@@ -1541,7 +1524,7 @@ public class SearchCenterServiceImpl implements SearchCenterService {
//在结果中检索
// boolQueryBuilder.must(multiQueryBuilder);
HighlightBuilder hiBuilder=new HighlightBuilder();
HighlightBuilder.Field highlightTitle = new HighlightBuilder.Field("title.keyword");
HighlightBuilder.Field highlightTitle = new HighlightBuilder.Field("title");
hiBuilder.field(highlightTitle);
HighlightBuilder.Field highlightUser = new HighlightBuilder.Field("textContent");
hiBuilder.field(highlightUser);
@@ -1567,7 +1550,7 @@ public class SearchCenterServiceImpl implements SearchCenterService {
Map<String, Object> sourceAsMap = searchHit.getSourceAsMap();
//解析高亮字段
Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();
HighlightField field= highlightFields.get("title.keyword");
HighlightField field= highlightFields.get("title");
if(field!= null){
Text[] fragments = field.fragments();
String n_field = "";