feat: There is no way the, 搜索中心 一般搜索 新增权重判断标准号查询逻辑
This commit is contained in:
+5
-1
@@ -86,7 +86,11 @@ public class SearchCenterController extends BaseController<Map<String, Object>>
|
|||||||
if("fulltextserch".equals(searchInfoEO.getSelectIndex()) || "fulltextserch"== searchInfoEO.getSelectIndex()){
|
if("fulltextserch".equals(searchInfoEO.getSelectIndex()) || "fulltextserch"== searchInfoEO.getSelectIndex()){
|
||||||
Pattern pattern = Pattern.compile("^[0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-]+$");
|
Pattern pattern = Pattern.compile("^[0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-]+$");
|
||||||
if (null != searchInfoEO.getSelectValue() && StringUtils.isNotBlank(searchInfoEO.getSelectValue())) {
|
if (null != searchInfoEO.getSelectValue() && StringUtils.isNotBlank(searchInfoEO.getSelectValue())) {
|
||||||
result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO);
|
if (pattern.matcher(searchInfoEO.getSelectValue()).matches()) {
|
||||||
|
result = searchCenterService.searchSarBykeyAndHighLightNumber(searchInfoEO);
|
||||||
|
}else {
|
||||||
|
result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO);
|
result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO);
|
||||||
}
|
}
|
||||||
|
|||||||
+86
-19
@@ -760,7 +760,7 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
|||||||
String[] standStr = {"content","standSort","standNumber","standYear","stand_name","standEnName","standNatureName",
|
String[] standStr = {"content","standSort","standNumber","standYear","stand_name","standEnName","standNatureName",
|
||||||
"textStatusName","isRelateAccessName","numbershow","standSystem","NYLXCLASS","CLLX"};
|
"textStatusName","isRelateAccessName","numbershow","standSystem","NYLXCLASS","CLLX"};
|
||||||
String[] lawsStr = {"content","lawsType","lawsNumber","lawsName","lawsEnName","lawsNo","issueCompany","lawsTextState","lawsSyqy","lawsSycx","isRelateAccess","lawsYear","lawsNotisyncNum","lawsBulletin","lawsLabel","lawsRemark"};
|
String[] lawsStr = {"content","lawsType","lawsNumber","lawsName","lawsEnName","lawsNo","issueCompany","lawsTextState","lawsSyqy","lawsSycx","isRelateAccess","lawsYear","lawsNotisyncNum","lawsBulletin","lawsLabel","lawsRemark"};
|
||||||
String[] bussstandStr = {"content","standSort","stand_code","standYear","stand_name","standEnName","nameshow","standstateshow","numbershow","textStatusBuss","NYLXCLASS","CLLX"};
|
String[] bussstandStr = {"content","standSort","stand_code","standYear","stand_name","standEnName","nameshow","standstateshow","numbershow","textStatusBuss","textStatusBussName","NYLXCLASS","CLLX"};
|
||||||
for (String field : fieldList) {
|
for (String field : fieldList) {
|
||||||
// 关键字查询属性字段
|
// 关键字查询属性字段
|
||||||
String keyWordField2 = field + "Name";
|
String keyWordField2 = field + "Name";
|
||||||
@@ -1287,17 +1287,17 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
|||||||
@Override
|
@Override
|
||||||
public List<Map<String, Object>> searchSarBykeyAndHighLightNumber(SeniorSearchInfoEO searchInfoEO) throws Exception {
|
public List<Map<String, Object>> searchSarBykeyAndHighLightNumber(SeniorSearchInfoEO searchInfoEO) throws Exception {
|
||||||
String real = searchInfoEO.getSelectValue();
|
String real = searchInfoEO.getSelectValue();
|
||||||
String[] values = searchInfoEO.getSelectValue().split(" ");
|
boolean isReal = false;
|
||||||
|
int num = searchInfoEO.getSelectValue().indexOf(" ");
|
||||||
String value = "";
|
String value = "";
|
||||||
String select = "";
|
String select = "";
|
||||||
int i = 0;
|
if (-1 != num) {
|
||||||
for (String v: values){
|
value = searchInfoEO.getSelectValue().substring(0, num).trim();
|
||||||
if(i==0) {
|
select = searchInfoEO.getSelectValue().substring(num + 1).trim();
|
||||||
value = v;
|
real = value + " " + select;
|
||||||
}else{
|
}else{
|
||||||
select = select + " " + v;
|
value = real;
|
||||||
}
|
select = "";
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
searchInfoEO.setSelectValue(select);
|
searchInfoEO.setSelectValue(select);
|
||||||
List<Map<String, Object>> result = new ArrayList<>();
|
List<Map<String, Object>> result = new ArrayList<>();
|
||||||
@@ -1307,12 +1307,79 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
|||||||
BoolQueryBuilder boolQueryShould = QueryBuilders.boolQuery();
|
BoolQueryBuilder boolQueryShould = QueryBuilders.boolQuery();
|
||||||
BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery();
|
BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery();
|
||||||
QueryBuilder multiQueryBuilder;
|
QueryBuilder multiQueryBuilder;
|
||||||
multiQueryBuilder = QueryBuilders.multiMatchQuery(value,
|
String[] selects = null;
|
||||||
"title.keyword","textContent.keyword").minimumShouldMatch("100%").field("title.keyword",1f);
|
if (StringUtils.isNotBlank(select)) {
|
||||||
boolQueryMust.must(multiQueryBuilder);
|
//判断标准号是否企标SMTC ,标准列别 (),/,字母
|
||||||
boolQueryShould.should(QueryBuilders.wildcardQuery("title.keyword", "*"+searchInfoEO.getSelectValue()+"*").boost(10f))
|
Pattern pattern = Pattern.compile("^[a-zA-Z\\/\\(\\)\\(\\)]+$");
|
||||||
.should(QueryBuilders.wildcardQuery("textContent.keyword", "*"+searchInfoEO.getSelectValue()+"*"))
|
if (pattern.matcher(value).matches()) {
|
||||||
.should(multiQueryBuilder);
|
//符合标准类别
|
||||||
|
if ("SMTC".equals(value)) {
|
||||||
|
//符合标准SMTC
|
||||||
|
//判断是否带有年份
|
||||||
|
Pattern patternbianhao = Pattern.compile("^[0-9a-zA-Z\\.\\(\\(\\)\\)\\-\\s]+$");
|
||||||
|
if (patternbianhao.matcher(select).matches()) {
|
||||||
|
// 拆分年份,当无“-”时,也生成selects
|
||||||
|
selects = select.replace(" ","-").replace("(","-\\(-").replace(")","-\\)-").replace("(","-\\(-").replace(")","-\\)-").split("-");
|
||||||
|
}else{
|
||||||
|
//wildcard查询real
|
||||||
|
selects = select.replace(" ","-").replace("(","-\\(-").replace(")","-\\)-").replace("(","-\\(-").replace(")","-\\)-").split("-");
|
||||||
|
// isReal = true;
|
||||||
|
// value = null;
|
||||||
|
// selects = null;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//不符合标准SMTC
|
||||||
|
Pattern patternbianhao = Pattern.compile("^[0-9a-zA-Z\\.\\(\\(\\)\\)\\-\\s]+$");
|
||||||
|
if (patternbianhao.matcher(select).matches()) {
|
||||||
|
//符合标准编号
|
||||||
|
selects = select.replace(" ","-").split("-");
|
||||||
|
} else {
|
||||||
|
//不符合标准编号 使用wildcard查询 编号
|
||||||
|
selects = select.replace(" ","-").split("-");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//不符合标准类别,wildcard 查询整体 real 6/23 解决搜索DRE的问题
|
||||||
|
selects = null;
|
||||||
|
value = real;
|
||||||
|
// isReal = true;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
//没有空格,存在问题,使用wildcard查询 real
|
||||||
|
selects = null;
|
||||||
|
value = real;
|
||||||
|
// isReal = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isReal){
|
||||||
|
//查询real
|
||||||
|
value = null;
|
||||||
|
selects = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null != value) {
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
// searchInfoEO.setSelectValue(searchInfoEO.getSelectValue().replace("-","\\-"));
|
||||||
|
if (null != selects) {
|
||||||
|
boolQueryShould.should(QueryBuilders.wildcardQuery("title.keyword", "*" + real + "*").boost(1000f));
|
||||||
|
for (String se : selects) {
|
||||||
|
if (StringUtils.isNotBlank(se)) {
|
||||||
|
boolQueryShould
|
||||||
|
// .should(QueryBuilders.wildcardQuery("title.keyword", "*" + real + "*").boost(10f))
|
||||||
|
.should(QueryBuilders.wildcardQuery("textContent.keyword", "*" + se + "*").boost(0.0000000000000000000000000000000001f))
|
||||||
|
.should(QueryBuilders.wildcardQuery("issue_time", "*" + se + "*"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isReal){
|
||||||
|
boolQueryShould.should(QueryBuilders.wildcardQuery("title.keyword", "*" + real + "*").boost(1000f))
|
||||||
|
.should(QueryBuilders.wildcardQuery("textContent.keyword", "*" + real + "*").boost(0.0000000000000000000000000000000001f))
|
||||||
|
.should(QueryBuilders.wildcardQuery("issue_time", "*" + real + "*"));
|
||||||
|
}
|
||||||
boolQueryBuilder.should(boolQueryShould);
|
boolQueryBuilder.should(boolQueryShould);
|
||||||
//在结果中检索
|
//在结果中检索
|
||||||
// boolQueryBuilder.must(multiQueryBuilder);
|
// boolQueryBuilder.must(multiQueryBuilder);
|
||||||
@@ -1347,11 +1414,11 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
|||||||
n_field += fragment;
|
n_field += fragment;
|
||||||
}
|
}
|
||||||
//高亮标题覆盖原标题
|
//高亮标题覆盖原标题
|
||||||
sourceAsMap.put("title.keyword",n_field);
|
sourceAsMap.put("title",n_field);
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, HighlightField> highlightFieldsnameshowStr = searchHit.getHighlightFields();
|
Map<String, HighlightField> highlightFieldsnameshowStr = searchHit.getHighlightFields();
|
||||||
HighlightField fieldnameshowStr= highlightFieldsnameshowStr.get("textContent.keyword");
|
HighlightField fieldnameshowStr= highlightFieldsnameshowStr.get("textContent");
|
||||||
if(fieldnameshowStr!= null){
|
if(fieldnameshowStr!= null){
|
||||||
Text[] fragments = fieldnameshowStr.fragments();
|
Text[] fragments = fieldnameshowStr.fragments();
|
||||||
String n_field = "";
|
String n_field = "";
|
||||||
@@ -1359,7 +1426,7 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
|||||||
n_field += fragment;
|
n_field += fragment;
|
||||||
}
|
}
|
||||||
//高亮标题覆盖原标题
|
//高亮标题覆盖原标题
|
||||||
sourceAsMap.put("textContent.keyword",n_field);
|
sourceAsMap.put("textContent",n_field);
|
||||||
}
|
}
|
||||||
result.add(sourceAsMap);
|
result.add(sourceAsMap);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user