|
@@ -0,0 +1,85 @@
|
|
|
+package cn.cslg.pas.factorys.EsBuilderFactory;
|
|
|
+
|
|
|
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
|
|
|
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.text.ParseException;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@Component
|
|
|
+public class MatchPhaseBoolQueryBuilder implements IQueryBuilder{
|
|
|
+ private String field = "";
|
|
|
+ private String value = "";
|
|
|
+ private String operator = "";
|
|
|
+ public String path = "";
|
|
|
+ public Integer projectId = null;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Query creteQuery() throws ParseException {
|
|
|
+ List<Query> querys = new ArrayList<>();
|
|
|
+ if (value.contains(" ")) {
|
|
|
+ Query q1 = QueryBuilders.matchPhrase(i -> i.field("title.text_content").query(value));
|
|
|
+ Query q2 = QueryBuilders.matchPhrase(i -> i.field("abstract_str.text_content").query(value));
|
|
|
+ Query q3 = QueryBuilders.matchPhrase(i -> i.field("claim.text_content").query(value));
|
|
|
+ Query q4 = QueryBuilders.match(i -> i.field("public_full_text.text_content").query(value));
|
|
|
+ querys.add(q1);
|
|
|
+ querys.add(q2);
|
|
|
+ querys.add(q3);
|
|
|
+ querys.add(q4);
|
|
|
+ } else {
|
|
|
+ Query q1 = QueryBuilders.matchPhrase(i -> i.field("title.text_content").query(value).slop(2));
|
|
|
+ Query q2 = QueryBuilders.matchPhrase(i -> i.field("abstract_str.text_content").query(value).slop(2));
|
|
|
+ Query q3 = QueryBuilders.matchPhrase(i -> i.field("claim.text_content").query(value).slop(2));
|
|
|
+ Query q4 = QueryBuilders.match(i -> i.field("public_full_text.text_content").query(value));
|
|
|
+ querys.add(q1);
|
|
|
+ querys.add(q2);
|
|
|
+ querys.add(q3);
|
|
|
+ querys.add(q4);
|
|
|
+ }
|
|
|
+ return QueryBuilders.bool(i ->i.should(querys));
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getField() {
|
|
|
+ return field;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setField(String field) {
|
|
|
+ this.field = field;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getValue() {
|
|
|
+ return value;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setValue(String value) {
|
|
|
+ this.value = value;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getOperator() {
|
|
|
+ return operator;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setOperator(String operator) {
|
|
|
+ this.operator = operator;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getPath() {
|
|
|
+ return path;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setPath(String path) {
|
|
|
+ this.path = path;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Integer getProjectId() {
|
|
|
+ return projectId;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setProjectId(Integer projectId) {
|
|
|
+ this.projectId = projectId;
|
|
|
+ }
|
|
|
+}
|