提交 277a8964 作者: yanxin

高级查询支持排除关键词组

上级 9a8476aa
......@@ -577,7 +577,7 @@ public class ReportDataController {
builder2.must(QueryBuilders.termsQuery(field + ".keyword", val.split(" |\\+|,|,|;|;")));
} else if ("not_in".equals(rule)) {
builder2.mustNot(QueryBuilders.termsQuery(field + ".keyword", val.split(" |\\+|,|,|;|;")));
} else if ("keyWordsGroup".equals(rule)) {
} else if (StringUtils.isNotEmpty(rule) && rule.contains("keyWordsGroup")) {
if (StringUtils.isNotEmpty(val)) {
BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery();
String[] andWords = val.split("\\+");
......@@ -589,9 +589,13 @@ public class ReportDataController {
}
wordAllBoolQuery.must(wordOrBoolQuery);
}
if(rule.startsWith("not_")){
builder2.mustNot(wordAllBoolQuery);
}else{
builder2.must(wordAllBoolQuery);
}
}
}
} else if ("string".equals(type)) { //文本类查询
if ("fullText".equals(field)) {
BoolQueryBuilder fullTextBoolQuery = multiMatchQuery(val);
......@@ -599,7 +603,7 @@ public class ReportDataController {
builder2.must(fullTextBoolQuery);
} else if ("not_like".equals(rule)) {
builder2.mustNot(fullTextBoolQuery);
} else if ("keyWordsGroup".equals(rule)) {
} else if (StringUtils.isNotEmpty(rule) && rule.contains("keyWordsGroup")) {
BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery();
String[] andWords = val.split("\\+");
for (String words : andWords) {
......@@ -610,8 +614,12 @@ public class ReportDataController {
}
wordAllBoolQuery.must(wordOrBoolQuery);
}
if(rule.startsWith("not_")){
builder2.mustNot(wordAllBoolQuery);
}else{
builder2.must(wordAllBoolQuery);
}
}
} else if ("eq".equals(rule)) {
builder2.must(QueryBuilders.termQuery(field + ".keyword", val));
} else if ("ne".equals(rule)) {
......@@ -624,7 +632,7 @@ public class ReportDataController {
builder2.must(QueryBuilders.matchPhrasePrefixQuery(field, val));
} else if ("not_like".equals(rule)) {
builder2.mustNot(QueryBuilders.matchPhrasePrefixQuery(field, val));
} else if ("keyWordsGroup".equals(rule)) {
} else if (StringUtils.isNotEmpty(rule) && rule.contains("keyWordsGroup")) {
BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery();
String[] andWords = val.split("\\+");
for (String words : andWords) {
......@@ -635,9 +643,13 @@ public class ReportDataController {
}
wordAllBoolQuery.must(wordOrBoolQuery);
}
if(rule.startsWith("not_")){
builder2.mustNot(wordAllBoolQuery);
}else{
builder2.must(wordAllBoolQuery);
}
}
}
if ("or".equals(superQueryMatchType)) {
superBuilder.should(builder2);
} else {
......
......@@ -2759,7 +2759,7 @@ public class EsService {
builder2.must(QueryBuilders.termsQuery(field + ".keyword", val.split(" |\\+|,|,|;|;")));
} else if ("not_in".equals(rule)) {
builder2.mustNot(QueryBuilders.termsQuery(field + ".keyword", val.split(" |\\+|,|,|;|;")));
} else if ("keyWordsGroup".equals(rule)) {
} else if (StringUtils.isNotEmpty(rule) && rule.contains("keyWordsGroup")) {
if (StringUtils.isNotEmpty(val)) {
BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery();
String[] andWords = val.split("\\+");
......@@ -2771,9 +2771,13 @@ public class EsService {
}
wordAllBoolQuery.must(wordOrBoolQuery);
}
if(rule.startsWith("not_")){
builder2.mustNot(wordAllBoolQuery);
}else{
builder2.must(wordAllBoolQuery);
}
}
}
} else if ("string".equals(type)) { //文本类查询
if ("fullText".equals(field)) {
BoolQueryBuilder fullTextBoolQuery = multiMatchQuery(val);
......@@ -2781,7 +2785,7 @@ public class EsService {
builder2.must(fullTextBoolQuery);
} else if ("not_like".equals(rule)) {
builder2.mustNot(fullTextBoolQuery);
} else if ("keyWordsGroup".equals(rule)) {
} else if (StringUtils.isNotEmpty(rule) && rule.contains("keyWordsGroup")) {
BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery();
String[] andWords = val.split("\\+");
for (String words : andWords) {
......@@ -2792,8 +2796,12 @@ public class EsService {
}
wordAllBoolQuery.must(wordOrBoolQuery);
}
if(rule.startsWith("not_")){
builder2.mustNot(wordAllBoolQuery);
}else{
builder2.must(wordAllBoolQuery);
}
}
} else if ("eq".equals(rule)) {
builder2.must(QueryBuilders.termQuery(field + ".keyword", val));
} else if ("ne".equals(rule)) {
......@@ -2806,7 +2814,7 @@ public class EsService {
builder2.must(QueryBuilders.matchPhrasePrefixQuery(field, val));
} else if ("not_like".equals(rule)) {
builder2.mustNot(QueryBuilders.matchPhrasePrefixQuery(field, val));
} else if ("keyWordsGroup".equals(rule)) {
} else if (StringUtils.isNotEmpty(rule) && rule.contains("keyWordsGroup")) {
BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery();
String[] andWords = val.split("\\+");
for (String words : andWords) {
......@@ -2817,9 +2825,13 @@ public class EsService {
}
wordAllBoolQuery.must(wordOrBoolQuery);
}
if(rule.startsWith("not_")){
builder2.mustNot(wordAllBoolQuery);
}else{
builder2.must(wordAllBoolQuery);
}
}
}
if ("or".equals(superQueryMatchType)) {
superBuilder.should(builder2);
} else {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论