zero hace 11 meses
padre
commit
a8bbf1e80b

+ 85 - 0
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/MatchPhaseBoolQueryBuilder.java

@@ -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;
+    }
+}

+ 13 - 0
src/main/resources/jsons/patent.json

@@ -32,6 +32,19 @@
     "exportClass": "getTextContentValue"
   },
   {
+    "name": "关键词",
+    "type": "String",
+    "value": "TX",
+    "field": "TX",
+    "esField": "TX",
+    "esClass": "matchPhaseBoolQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "false",
+    "ifAsCondition": "true",
+    "ifStats": "false"
+  },
+  {
     "name": "申请号",
     "type": "String",
     "value": "appNo",