zero 1 年間 前
コミット
01f3102a41

+ 27 - 6
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/DateQueryBuilder.java

@@ -16,7 +16,9 @@ public class DateQueryBuilder implements IQueryBuilder {
     private String operator = "";
     public String path = "";
     public static final int YEAR = 4;
+    public static final int MONTHONE = 6;
     public static final int MONTH = 7;
+    public static final int DAYONE = 8;
     public static final int DAY = 10;
 
 
@@ -34,20 +36,39 @@ public class DateQueryBuilder implements IQueryBuilder {
                 String yearNextTime = String.valueOf(calendar.getTime().getTime());
                 query = co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders
                         .range(range -> range.field(field).from(yearTime.substring(0,10)).to(yearNextTime.substring(0,10)));
-            } else if (value.length() == MONTH) {
-                SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM");
-                Date month = format1.parse(value);
+            } else if (value.length() == MONTH || value.length() == MONTHONE) {
+                Date month = new Date();
+                if (value.contains("_")) {
+                    SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM");
+                    month = format2.parse(value);
+                } else if (value.contains("/")) {
+                    SimpleDateFormat format3 = new SimpleDateFormat("yyyy/MM");
+                    month = format3.parse(value);
+                } else {
+                    SimpleDateFormat format1 = new SimpleDateFormat("yyyyMM");
+                    month = format1.parse(value);
+                }
                 calendar.setTime(month);
                 String monthTime = String.valueOf(calendar.getTime().getTime());
                 calendar.add(Calendar.MONTH, 1);
                 String monthNextTime = String.valueOf(calendar.getTime().getTime());
                 query = co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders
                         .range(range -> range.field(field).from(monthTime.substring(0,10)).to(monthNextTime.substring(0,10)));
-            } else if (value.length() == DAY) {
+            } else if (value.length() == DAY || value.length() == DAYONE) {
+                Date day = new Date();
+                if (value.contains("_")) {
+                    SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
+                    day = format2.parse(value);
+                } else if (value.contains("/")) {
+                    SimpleDateFormat format3 = new SimpleDateFormat("yyyy/MM/dd");
+                    day = format3.parse(value);
+                } else {
+                    SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd");
+                    day = format1.parse(value);
+                }
                 SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
-                Date day = format2.parse(value);
                 String dayTime = String.valueOf(day.getTime());
-                query = QueryBuilders.match(dayQuery -> dayQuery.field(field).query(dayTime.substring(0,10)));
+                query = QueryBuilders.match(dayQuery -> dayQuery.field(field).query(dayTime.substring(0, 10)));
             }
         }
         return query;

+ 3 - 2
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/KeyWordQueryBuilder.java

@@ -2,7 +2,7 @@ package cn.cslg.pas.factorys.EsBuilderFactory;
 
 
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
-import org.springframework.data.elasticsearch.client.elc.QueryBuilders;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
 import org.springframework.stereotype.Component;
 
 @Component
@@ -14,7 +14,8 @@ public class KeyWordQueryBuilder implements IQueryBuilder {
 
     @Override
     public Query creteQuery() {
-        return QueryBuilders.matchQueryAsQuery(field, value, null, null);
+//        QueryBuilders.matchQueryAsQuery(field, value, null, null);
+        return QueryBuilders.term(i -> i.field(field).value(value));
     }
 
     public String getField() {

+ 52 - 0
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/MatchPhasePrefixQueryBuilder.java

@@ -0,0 +1,52 @@
+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;
+
+@Component
+public class MatchPhasePrefixQueryBuilder implements IQueryBuilder{
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        return QueryBuilders.matchPhrasePrefix(i -> i.field(field).query(value));
+    }
+
+    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;
+    }
+}

+ 43 - 0
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/MatchPhaseQueryBuilder.java

@@ -0,0 +1,43 @@
+package cn.cslg.pas.factorys.EsBuilderFactory;
+
+import org.springframework.stereotype.Component;
+
+@Component
+public class MatchPhaseQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+
+    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;
+    }
+}

+ 60 - 0
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/MatchQueryBuilder.java

@@ -0,0 +1,60 @@
+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;
+
+@Component
+public class MatchQueryBuilder implements IQueryBuilder {
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        return QueryBuilders.match(i -> i.field(field).query(value));
+    }
+
+    @Override
+    public String getField() {
+        return field;
+    }
+
+    @Override
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    @Override
+    public String getValue() {
+        return value;
+    }
+
+    @Override
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @Override
+    public String getOperator() {
+        return operator;
+    }
+
+    @Override
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    @Override
+    public String getPath() {
+        return path;
+    }
+
+    @Override
+    public void setPath(String path) {
+        this.path = path;
+    }
+}

+ 412 - 15
src/main/resources/jsons/patent.json

@@ -12,19 +12,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "标题",
-    "type": "String",
-    "value": "titleTextContent",
-    "field": "titleTextContent",
-    "esField": "title.text_content",
-    "esClass": "nestedQueryBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "公开日期",
+    "name": "公开日",
     "type": "String",
     "value": "publicDate",
     "field": "publicDate",
@@ -36,7 +24,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "申请日",
+    "name": "申请日",
     "type": "String",
     "value": "appDate",
     "field": "appDate",
@@ -48,7 +36,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "授权日",
+    "name": "授权日",
     "type": "String",
     "value": "grantDate",
     "field": "grantDate",
@@ -82,5 +70,414 @@
     "ifGroup": "false",
     "ifShow": "false",
     "ifAsCondition": "true"
+  },
+  {
+    "name": "摘要",
+    "type": "String",
+    "value": "abstractStr",
+    "field": "abstractStr",
+    "esField": "abstract_str",
+    "esClass": "matchQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "false",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "摘要内容",
+    "type": "String",
+    "value": "abstractStrTextContent",
+    "field": "abstractStrTextContent",
+    "esField": "abstract_str.text_content",
+    "esClass": "nestedQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "false",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "标题",
+    "type": "String",
+    "value": "title",
+    "field": "title",
+    "esField": "title",
+    "esClass": "matchQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "false",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "标题内容",
+    "type": "String",
+    "value": "titleTextContent",
+    "field": "titleTextContent",
+    "esField": "title.text_content",
+    "esClass": "nestedQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "实审日",
+    "type": "String",
+    "value": "examinationDate",
+    "field": "examinationDate",
+    "esField": "examination_date",
+    "esClass": "dateQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "申请人",
+    "type": "String",
+    "value": "applicant",
+    "field": "applicant",
+    "esField": "applicant",
+    "esClass": "nestedQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "发明人",
+    "type": "String",
+    "value": "inventor",
+    "field": "inventor",
+    "esField": "inventor",
+    "esClass": "nestedQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "权利人",
+    "type": "String",
+    "value": "rightHolder",
+    "field": "rightHolder",
+    "esField": "right_holder",
+    "esClass": "nestedQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "公开说明书文本",
+    "type": "String",
+    "value": "publicFullText",
+    "field": "publicFullText",
+    "esField": "public_full_text",
+    "esClass": "nestedQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "授权说明书文本",
+    "type": "String",
+    "value": "grantFullText",
+    "field": "grantFullText",
+    "esField": "grant_full_text",
+    "esClass": "nestedQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "代理机构",
+    "type": "String",
+    "value": "agency",
+    "field": "agency",
+    "esField": "agency",
+    "esClass": "matchQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "代理人",
+    "type": "String",
+    "value": "agent",
+    "field": "agent",
+    "esField": "agent",
+    "esClass": "keyWordQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "引用专利数量",
+    "type": "Integer",
+    "value": "quotePatentNoNum",
+    "field": "quotePatentNoNum",
+    "esField": "quote_patent_no_num",
+    "esClass": "numberQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "被引用专利数量",
+    "type": "Integer",
+    "value": "quotedPatentNoNum",
+    "field": "quotedPatentNoNum",
+    "esField": "quoted_patent_no_num",
+    "esClass": "numberQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "申请国家",
+    "type": "String",
+    "value": "appCountry",
+    "field": "appCountry",
+    "esField": "app_country",
+    "esClass": "keyWordQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "申请人地址",
+    "type": "String",
+    "value": "applicantAddr",
+    "field": "applicantAddr",
+    "esField": "applicant_addr",
+    "esClass": "matchQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "申请国家",
+    "type": "String",
+    "value": "appCountry",
+    "field": "appCountry",
+    "esField": "app_country",
+    "esClass": "keyWordQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "申请人省份",
+    "type": "String",
+    "value": "appProvince",
+    "field": "appProvince",
+    "esField": "province",
+    "esClass": "matchPhasePrefixQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "申请人市区",
+    "type": "String",
+    "value": "appCity",
+    "field": "appCity",
+    "esField": "city",
+    "esClass": "matchPhasePrefixQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "申请人区县",
+    "type": "String",
+    "value": "appDistrict",
+    "field": "appDistrict",
+    "esField": "district",
+    "esClass": "matchPhasePrefixQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "权利人地址",
+    "type": "String",
+    "value": "rightHolderAddr",
+    "field": "rightHolderAddr",
+    "esField": "right_holder_addr",
+    "esClass": "matchQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "权利人省份",
+    "type": "String",
+    "value": "rightProvince",
+    "field": "rightProvince",
+    "esField": "province",
+    "esClass": "matchPhasePrefixQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "权利人市区",
+    "type": "String",
+    "value": "rightCity",
+    "field": "rightCity",
+    "esField": "city",
+    "esClass": "matchPhasePrefixQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "权利人区县",
+    "type": "String",
+    "value": "rightDistrict",
+    "field": "rightDistrict",
+    "esField": "district",
+    "esClass": "matchPhasePrefixQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "IPC分类号",
+    "type": "String",
+    "value": "mipc",
+    "field": "mipc",
+    "esField": "mipc",
+    "esClass": "matchPhasePrefixQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "IPC分类号一级",
+    "type": "String",
+    "value": "mipcLevel1",
+    "field": "mipcLevel1",
+    "esField": "level1",
+    "esClass": "matchPhasePrefixQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "IPC分类号二级",
+    "type": "String",
+    "value": "mipcLevel2",
+    "field": "mipcLevel2",
+    "esField": "level2",
+    "esClass": "matchPhasePrefixQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "IPC分类号三级",
+    "type": "String",
+    "value": "mipcLevel3",
+    "field": "mipcLevel3",
+    "esField": "level3",
+    "esClass": "matchPhasePrefixQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "IPC分类号四级",
+    "type": "String",
+    "value": "mipcLevel4",
+    "field": "mipcLevel4",
+    "esField": "level4",
+    "esClass": "matchPhasePrefixQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "IPC分类号五级",
+    "type": "String",
+    "value": "mipcLevel5",
+    "field": "mipcLevel5",
+    "esField": "level5",
+    "esClass": "matchPhasePrefixQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "权利要求",
+    "type": "String",
+    "value": "claim",
+    "field": "claim",
+    "esField": "claim",
+    "esClass": "nestedQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "专利状态",
+    "type": "String",
+    "value": "simpleStatus",
+    "field": "simpleStatus",
+    "esField": "simple_status",
+    "esClass": "keyWordQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "专利类型",
+    "type": "String",
+    "value": "patentType",
+    "field": "patentType",
+    "esField": "patent_type",
+    "esClass": "keyWordQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "法律状态",
+    "type": "String",
+    "value": "legalStatus",
+    "field": "legalStatus",
+    "esField": "legal_status",
+    "esClass": "keyWordQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
   }
+
 ]

+ 4 - 2
src/test/java/cn/cslg/pas/service/EventServiceTests.java

@@ -113,6 +113,7 @@ public class EventServiceTests {
 
     @Test
     void test11() throws Exception {
+//        List<Patent> list = esService.Search("publicDate=2009-03", 0, 50,null);
 //        MapRequest mapRequest = new MapRequest();
 //        Map<String, Object> map = new HashMap<>();
 //        map.put("titleTextContent", "电子");
@@ -122,11 +123,12 @@ public class EventServiceTests {
 //        mapRequest.setSize(50L);
 //        mapRequest.setProjectId(1);
         StringRequest stringRequest = new StringRequest();
-        stringRequest.setSearchQuery("titleTextContent=电子");
+        stringRequest.setSearchQuery("patentNo=CN201199922Y");
+//        stringRequest.setSearchQuery("publicDate=20090304");
 //        stringRequest.setSearchQuery("patentNo=CN201199922Y and (simpleFamilyNum>1 or simpleFamilyNum=0)");
         stringRequest.setCurrent(0L);
         stringRequest.setSize(50L);
-        stringRequest.setProjectId(1);
+//        stringRequest.setProjectId(1);
 //
         PatentDTO patentDTO = esService.esSearch(stringRequest);
         System.out.println(patentDTO);