瀏覽代碼

1、大数据知识图谱缓存文件提供后台管理更新功能
2、归一数据文件格式修改
3、部分诊断依据需要比较数据程序修改

louhr 5 年之前
父節點
當前提交
e9cf97ea38
共有 24 個文件被更改,包括 24274 次插入23325 次删除
  1. 1 1
      algorithm/src/main/resources/algorithm.properties
  2. 122 101
      bigdata-web/src/main/java/org/diagbot/bigdata/common/ApplicationCacheUtil.java
  3. 5 2
      bigdata-web/src/main/java/org/diagbot/bigdata/work/ParamsDataProxy.java
  4. 60 0
      bigdata-web/src/main/resources/doc_result_mapping_filter.dict
  5. 5 1
      common-push/pom.xml
  6. 341 0
      common-push/src/main/java/org/diagbot/common/push/cache/CacheFileManager.java
  7. 2 2
      graph/src/main/java/org/diagbot/graph/jdbc/Neo4jAPI.java
  8. 67 31
      graph/src/main/java/org/diagbot/graph/util/CacheUtil.java
  9. 1 5
      graph/src/main/resources/bolt.properties
  10. 16 83
      graph/src/main/resources/diagClassify.dict
  11. 21151 21151
      graph/src/main/resources/sexAge.dict
  12. 1138 1141
      graph/src/main/resources/vital.dict
  13. 1 1
      graph/src/test/java/org/diagbot/graph/CacheFile.java
  14. 1 1
      graphdb/src/main/resources/application.yml
  15. 2 0
      nlp/src/main/java/org/diagbot/nlp/participle/cfg/DefaultConfig.java
  16. 5 2
      nlp/src/main/java/org/diagbot/nlp/util/NlpCache.java
  17. 23 23
      nlp/src/main/resources/push-tc.dict
  18. 369 391
      nlp/src/main/resources/synonym.dict
  19. 873 381
      nlp/src/main/resources/tc.dict
  20. 48 0
      push-web/src/main/java/org/diagbot/push/controller/CacheFileManagerController.java
  21. 16 0
      push-web/src/main/java/org/diagbot/push/controller/ParticipleController.java
  22. 19 0
      push-web/src/main/java/org/diagbot/push/controller/RelationController.java
  23. 6 6
      push-web/src/main/resources/static/pages/algorithm/list.html
  24. 2 2
      push-web/src/main/resources/static/pages/relation/sample.html

+ 1 - 1
algorithm/src/main/resources/algorithm.properties

@@ -1,6 +1,6 @@
 ################################ model basic url ###################################
 
-#basicPath=E:/git/push/algorithm/src/main/models/model_version_replacement/model
+#basicPath=E:/project/push/algorithm/src/main/models/model_version_replacement/model
 basicPath=/opt/models/dev/models/model_version_replacement/model
 #basicPath=E:/xxx/model_version_replacement/model
 

+ 122 - 101
bigdata-web/src/main/java/org/diagbot/bigdata/common/ApplicationCacheUtil.java

@@ -52,6 +52,10 @@ public class ApplicationCacheUtil {
         return standard_info_type_tree_map;
     }
 
+    /**
+     * 現已無用
+     * @return
+     */
     public static Map<String, String> getDoc_result_mapping_vital_map() {
         if (doc_result_mapping_vital_map == null) {
             Configuration configuration = new DefaultConfig();
@@ -62,131 +66,148 @@ public class ApplicationCacheUtil {
 
     public static Map<String, String> getDoc_result_mapping_diag_map() {
         if (doc_result_mapping_diag_map == null) {
-            Configuration configuration = new DefaultConfig();
-            doc_result_mapping_diag_map = configuration.loadMapDict("doc_result_mapping_diag.dict");
+            createDoc_result_mapping_diag_map();
         }
         return doc_result_mapping_diag_map;
     }
 
-    public static Map<String, Map<String, ResultMappingFilter>> getDoc_result_mapping_filter_map() {
+    public static Map<String, String> createDoc_result_mapping_diag_map() {
         Configuration configuration = new DefaultConfig();
+        doc_result_mapping_diag_map = configuration.loadMapDict("bigdata_diag_2_dept.dict");
+        return doc_result_mapping_diag_map;
+    }
+
+    public static Map<String, Map<String, ResultMappingFilter>> getDoc_result_mapping_filter_map() {
         if (doc_result_mapping_filter_map == null) {
-            List<String> fileContents = configuration.readFileContents("doc_result_mapping_filter.dict");
-            String[] line_string;
-            List<ResultMappingFilter> resultMappingFilters = new ArrayList<>();
-            try {
-                for (int i = 0; i < fileContents.size(); i++) {
-                    line_string = org.apache.commons.lang3.StringUtils.split(fileContents.get(i), "\\|");
-                    if (line_string.length == 5) {
-                        ResultMappingFilter resultMappingFilter = new ResultMappingFilter();
-                        resultMappingFilter.setFeatureName(line_string[0]);
-                        resultMappingFilter.setFeatureType(line_string[1]);
-                        resultMappingFilter.setSex(line_string[2]);
-                        resultMappingFilter.setAgeStart(Integer.parseInt(line_string[3]));
-                        resultMappingFilter.setAgeEnd(Integer.parseInt(line_string[4]));
-                        resultMappingFilters.add(resultMappingFilter);
-                    }
+            createDoc_result_mapping_filter_map();
+        }
+        return doc_result_mapping_filter_map;
+    }
+
+    public static Map<String, Map<String, ResultMappingFilter>> createDoc_result_mapping_filter_map() {
+        Configuration configuration = new DefaultConfig();
+        List<String> fileContents = configuration.readFileContents("bigdata_sex_age_filter.dict");
+        String[] line_string;
+        List<ResultMappingFilter> resultMappingFilters = new ArrayList<>();
+        try {
+            for (int i = 0; i < fileContents.size(); i++) {
+                line_string = org.apache.commons.lang3.StringUtils.split(fileContents.get(i), "\\|");
+                if (line_string.length == 5) {
+                    ResultMappingFilter resultMappingFilter = new ResultMappingFilter();
+                    resultMappingFilter.setFeatureName(line_string[0]);
+                    resultMappingFilter.setFeatureType(line_string[1]);
+                    resultMappingFilter.setSex(line_string[2]);
+                    resultMappingFilter.setAgeStart(Integer.parseInt(line_string[3]));
+                    resultMappingFilter.setAgeEnd(Integer.parseInt(line_string[4]));
+                    resultMappingFilters.add(resultMappingFilter);
                 }
-            } catch (Exception e) {
-                e.printStackTrace();
             }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
 
-            doc_result_mapping_filter_map = new HashMap<>();
-            Map<String, ResultMappingFilter> filterMap = null;
-            for (ResultMappingFilter resultMappingFilter : resultMappingFilters) {
-                filterMap = doc_result_mapping_filter_map.get(resultMappingFilter.getFeatureType());
-                if (filterMap == null) {
-                    filterMap = new HashMap<>();
-                }
-                filterMap.put(resultMappingFilter.getFeatureName(), resultMappingFilter);
-                doc_result_mapping_filter_map.put(resultMappingFilter.getFeatureType(), filterMap);
+        doc_result_mapping_filter_map = new HashMap<>();
+        Map<String, ResultMappingFilter> filterMap = null;
+        for (ResultMappingFilter resultMappingFilter : resultMappingFilters) {
+            filterMap = doc_result_mapping_filter_map.get(resultMappingFilter.getFeatureType());
+            if (filterMap == null) {
+                filterMap = new HashMap<>();
             }
+            filterMap.put(resultMappingFilter.getFeatureName(), resultMappingFilter);
+            doc_result_mapping_filter_map.put(resultMappingFilter.getFeatureType(), filterMap);
         }
         return doc_result_mapping_filter_map;
     }
 
     public static Map<String, List<Map<String, String>>> getKl_result_mapping_standword_map() {
         if (kl_result_mapping_standword_map == null) {
-            kl_result_mapping_standword_map = new HashMap<>();
-            Configuration configuration = new DefaultConfig();
-            List<String> fileContents = configuration.readFileContents("kl_result_mapping_standword.dict");
-            List<Map<String, String>> standWordObjValList = null;
-            Map<String, String> standWordObjVal = null;
-            String operation = ">=|≥|>|大于|>|超过|<=|≤|<|小于|<|少于";
-            try {
-                for (String fileContent : fileContents) {
-                    LexemePath<Lexeme> lexemes = null;
-                    String op = "";
-                    String[] fileContentSplit = null;
-                    //每一个标准词根据大于小于符号切开,不然进行分词时还是会得到原本的标准词
-                    if (fileContent.contains(">") || fileContent.contains("大于")
-                            || fileContent.contains(">") || fileContent.contains("超过")) {
-                        op = ">";
-                        fileContentSplit = fileContent.split(operation);
-                    } else if (fileContent.contains("<") || fileContent.contains("小于")
-                            || fileContent.contains("<") || fileContent.contains("少于")) {
-                        op = "<";
-                        fileContentSplit = fileContent.split(operation);
-                    } else if (fileContent.contains(">=") || fileContent.contains("≥")){
-                        op = ">=";
-                        fileContentSplit = fileContent.split(operation);
-                    } else if (fileContent.contains("<=") || fileContent.contains("≤")) {
-                        op = "<=";
-                        fileContentSplit = fileContent.split(operation);
-                    } else {
-                        continue;
-                    }
-                    LexemePath<Lexeme> lexemeWord = null;
-                    //每一个标准词切开后进行分词
-                    for (String fileContentWords : fileContentSplit) {
-                        lexemeWord = ParticipleUtil.participle(fileContentWords);
-                        if (lexemeWord != null) {
-                            if (null == lexemes) {
-                                lexemes = lexemeWord;
-                            } else {
-                                for (Lexeme lexeme : lexemeWord) {
-                                    lexemes.add(lexeme);
-                                }
+            createKl_result_mapping_standword_map();
+        }
+        return kl_result_mapping_standword_map;
+    }
+
+    public static Map<String, List<Map<String, String>>> createKl_result_mapping_standword_map() {
+        kl_result_mapping_standword_map = new HashMap<>();
+        Configuration configuration = new DefaultConfig();
+        List<String> fileContents = configuration.readFileContents("kl_result_mapping_standword.dict");
+        List<Map<String, String>> standWordObjValList = null;
+        Map<String, String> standWordObjVal = null;
+        String operation = ">=|≥|>|大于|>|超过|<=|≤|<|小于|<|少于";
+        try {
+            for (String fileContent : fileContents) {
+                LexemePath<Lexeme> lexemes = null;
+                String op = "";
+                String[] fileContentSplit = null;
+                //每一个标准词根据大于小于符号切开,不然进行分词时还是会得到原本的标准词
+                if (fileContent.contains(">") || fileContent.contains("大于")
+                        || fileContent.contains(">") || fileContent.contains("超过")) {
+                    op = ">";
+                    fileContentSplit = fileContent.split(operation);
+                } else if (fileContent.contains("<") || fileContent.contains("小于")
+                        || fileContent.contains("<") || fileContent.contains("少于")) {
+                    op = "<";
+                    fileContentSplit = fileContent.split(operation);
+                } else if (fileContent.contains(">=") || fileContent.contains("≥")){
+                    op = ">=";
+                    fileContentSplit = fileContent.split(operation);
+                } else if (fileContent.contains("<=") || fileContent.contains("≤")) {
+                    op = "<=";
+                    fileContentSplit = fileContent.split(operation);
+                } else {
+                    continue;
+                }
+                LexemePath<Lexeme> lexemeWord = null;
+                //每一个标准词切开后进行分词
+                for (String fileContentWords : fileContentSplit) {
+                    lexemeWord = ParticipleUtil.participle(fileContentWords);
+                    if (lexemeWord != null) {
+                        if (null == lexemes) {
+                            lexemes = lexemeWord;
+                        } else {
+                            for (Lexeme lexeme : lexemeWord) {
+                                lexemes.add(lexeme);
                             }
                         }
                     }
-                    String standWordObjKey = "";
-                    standWordObjValList = new ArrayList<>();
-                    standWordObjVal = new HashMap<>();
-                    int i = 0;
-                    for (Lexeme lexeme : lexemes) {
-                        i++;
-                        if (lexeme.getProperty().contains(",")) {
-                            setProterty(lexeme); //如果分词后词性有多个,只选一个(暂时只处理症状,体征)
-                        }
-                        NegativeEnum lexemeNegativeEnum = NegativeEnum.parseOfValue(lexeme.getProperty());
-                        if (lexemeNegativeEnum == NegativeEnum.SYMPTOM || lexemeNegativeEnum == NegativeEnum.CAUSE
-                                || lexemeNegativeEnum == NegativeEnum.VITAL_INDEX) {
-                            if (!kl_result_mapping_standword_map.containsKey(lexeme.getText())) {
-                                kl_result_mapping_standword_map.put(lexeme.getText(), standWordObjValList);
-                            } else {
-                                standWordObjKey = lexeme.getText();
-                            }
-                        } else if (lexemeNegativeEnum == NegativeEnum.DIGITS) {
-                            standWordObjVal.put("value", lexeme.getText());
-                        } else if (lexemeNegativeEnum == NegativeEnum.UNIT
-                                || lexemeNegativeEnum == NegativeEnum.EVENT_TIME) {
-                            standWordObjVal.put("unit", lexeme.getText().toLowerCase());
+                }
+                String standWordObjKey = "";
+                standWordObjValList = new ArrayList<>();
+                standWordObjVal = new HashMap<>();
+                int i = 0;
+                for (Lexeme lexeme : lexemes) {
+                    i++;
+                    if (lexeme.getProperty().contains(",")) {
+                        setProterty(lexeme); //如果分词后词性有多个,只选一个(暂时只处理症状,体征)
+                    }
+                    NegativeEnum lexemeNegativeEnum = NegativeEnum.parseOfValue(lexeme.getProperty());
+                    if (lexemeNegativeEnum == NegativeEnum.SYMPTOM || lexemeNegativeEnum == NegativeEnum.CAUSE
+                            || lexemeNegativeEnum == NegativeEnum.VITAL_INDEX
+                            || lexemeNegativeEnum == NegativeEnum.OTHER
+                            || lexemeNegativeEnum == NegativeEnum.DIAG_STAND) {
+                        if (!kl_result_mapping_standword_map.containsKey(lexeme.getText())) {
+                            kl_result_mapping_standword_map.put(lexeme.getText(), standWordObjValList);
+                        } else {
+                            standWordObjKey = lexeme.getText();
                         }
-                        if (lexemes.size() == i) {
-                            standWordObjVal.put("op", op);
-                            standWordObjVal.put("standword", fileContent);
-                            if (kl_result_mapping_standword_map.containsKey(standWordObjKey)) {
-                                kl_result_mapping_standword_map.get(standWordObjKey).add(standWordObjVal);
-                            } else {
-                                standWordObjValList.add(standWordObjVal);
-                            }
+                    } else if (lexemeNegativeEnum == NegativeEnum.DIGITS) {
+                        standWordObjVal.put("value", lexeme.getText());
+                    } else if (lexemeNegativeEnum == NegativeEnum.UNIT
+                            || lexemeNegativeEnum == NegativeEnum.EVENT_TIME) {
+                        standWordObjVal.put("unit", lexeme.getText().toLowerCase());
+                    }
+                    if (lexemes.size() == i) {
+                        standWordObjVal.put("op", op);
+                        standWordObjVal.put("standword", fileContent);
+                        if (kl_result_mapping_standword_map.containsKey(standWordObjKey)) {
+                            kl_result_mapping_standword_map.get(standWordObjKey).add(standWordObjVal);
+                        } else {
+                            standWordObjValList.add(standWordObjVal);
                         }
                     }
                 }
-            } catch (Exception e) {
-                e.printStackTrace();
             }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
         return kl_result_mapping_standword_map;
     }

+ 5 - 2
bigdata-web/src/main/java/org/diagbot/bigdata/work/ParamsDataProxy.java

@@ -299,7 +299,7 @@ public class ParamsDataProxy {
             NegativeEnum lexemeNegativeEnum = NegativeEnum.parseOfValue(lexeme.getProperty());
             if (lexemeNegativeEnum == NegativeEnum.VITAL_INDEX || lexemeNegativeEnum == NegativeEnum.SYMPTOM || lexemeNegativeEnum == NegativeEnum.DIGITS
                     || lexemeNegativeEnum == NegativeEnum.EVENT_TIME || lexemeNegativeEnum == NegativeEnum.UNIT
-                    ) {
+                    || lexemeNegativeEnum == NegativeEnum.DIAG_STAND) {
                 feature.add(lexeme);
             }
         }
@@ -321,6 +321,10 @@ public class ParamsDataProxy {
                                 && NegativeEnum.parseOfValue(feature.get(i + 2).getProperty()) == NegativeEnum.UNIT)
                         ||
                         (NegativeEnum.parseOfValue(feature.get(i).getProperty()) == NegativeEnum.SYMPTOM
+                                && NegativeEnum.parseOfValue(feature.get(i + 1).getProperty()) == NegativeEnum.DIGITS
+                                && NegativeEnum.parseOfValue(feature.get(i + 2).getProperty()) == NegativeEnum.EVENT_TIME)
+                        ||
+                        (NegativeEnum.parseOfValue(feature.get(i).getProperty()) == NegativeEnum.DIAG_STAND
                                 && NegativeEnum.parseOfValue(feature.get(i + 1).getProperty()) == NegativeEnum.DIGITS
                                 && NegativeEnum.parseOfValue(feature.get(i + 2).getProperty()) == NegativeEnum.EVENT_TIME)) {
                     featureType.add(feature.get(i).getText() + "\t" + feature.get(i + 1).getText() + "\t"
@@ -379,7 +383,6 @@ public class ParamsDataProxy {
             addStandWords += smallerStandWord;
         }
         sData.setSymptom(sData.getSymptom() + "," + addStandWords);
-        System.out.println(sData.getSymptom());
         return sData;
     }
 

+ 60 - 0
bigdata-web/src/main/resources/doc_result_mapping_filter.dict

@@ -25292,3 +25292,63 @@ eM0CZeWk/0Q8MuG4ta/TPMW9GueaBowJ
 hU2JsvCVd8iVbaq0hPsRvlU2x1UvNSu2LKs3fnGbwV4=
 aH2Pl8NYolGpMiYwptT3qCibZTYEHi63Lfj2n/p3fLw=
 pYF12yPYxOBcb0czTGxsyFU2x1UvNSu2LKs3fnGbwV4=
+2dYI+9yYHTc+03JbZpPE8P9R9iFTMZBjLfj2n/p3fLw=
+nwlsV/FAIa1T2DpH4ZEBpfGBY5WQh50G
+N86LmPSN4HVhN2jFDh022MW9GueaBowJ
+BVnTJGszGHdVBDenYZBoueV4b7eTeo5HLfj2n/p3fLw=
+aD5eU1o4MmO3/pTQV9zBPkRMBpcnoniiLfj2n/p3fLw=
+13MHrUqG1pfcm2hRjY8q9UDeFLm6FOQg2AhujeJjB7mar/KlvxFeSkpgEZ36UZf7
+13MHrUqG1pfcm2hRjY8q9WbBPXNGiu4ceZxKzYs7iUZ4qi09YuwSoA==
+13MHrUqG1pfcm2hRjY8q9aDCFSPAW9Kk9JPgOdbbQp2ar/KlvxFeSkpgEZ36UZf7
+0TLzIWW9EWCaOVrBcPHMP6CCIWcWSwEdpA8RkamQclo=
+QMVof5Z8Tu5/74SsjFK4p8W9GueaBowJ
+MHGig9So1fOQ/pn8ZZh2SMW9GueaBowJ
+pcful9ZLCydcmHb422HiJptFKPVvVZKbLfj2n/p3fLw=
+RNUcWaVHqHcZd1BiYTH+McW9GueaBowJ
+pf50Ivfy0+kBnp9zG0Qi/FU2x1UvNSu2LKs3fnGbwV4=
+APAgduySYIVkSWPk54PCjMW9GueaBowJ
+/2oGRjYR3pvsif9OwgmVDwXhQ5szTyPYpA8RkamQclo=
+iDeqTYcAjfN09vzxviQ3PFWKE+kJMQAhttoP512dY39BrHThoI/x5Q==
+dQG/PKJ7BEe92rbZLJywOcW9GueaBowJ
+Ec3EVvbhwTat1q6RF6QGXFU2x1UvNSu2LKs3fnGbwV4=
+cSE2zFvsX8qKc9YK2sQ6Z1U2x1UvNSu2LKs3fnGbwV4=
+lcqWsZFnYZS9n9t/sip1y1U2x1UvNSu2LKs3fnGbwV4=
+R4Th+OkdPogDzHTY3BGfYFU2x1UvNSu2LKs3fnGbwV4=
+4mt9kbBcvpIKZPvsSIXBksW9GueaBowJ
+ygHckNP4YMBfBcKdClL8BrmS8RD7jLqyLfj2n/p3fLw=
+UoBxr0e3SDzMG+WjKMWDHZiGvzlrt38WLfj2n/p3fLw=
+m0s6Jy08uepbslXWpPrcHcW9GueaBowJ
+j/P6gcnJb0xcb0czTGxsyFU2x1UvNSu2LKs3fnGbwV4=
+xEHYC5PyimPX0RbKyJvnp0tPXbvHUhUapA8RkamQclo=
+iK3yuYNm11v3eHFNL6tIM1U2x1UvNSu2LKs3fnGbwV4=
+Qn6UZstkMh1EPi2yF6UHWfGBY5WQh50G
+b/WI/AkkF2jwIZo7pz1I/y60FqoYrd3tpA8RkamQclo=
+L1LCaflWvS7MqP96I8T0Aotz8gnT8016Lfj2n/p3fLw=
+Szxt9+uTltRnlScNVO/wZsW9GueaBowJ
+qlsOU7DfSJ6On7xAGnZZo8W9GueaBowJ
+0gGUhVPoq4FS2PP/oyx+OvjKFewesK8PpA8RkamQclo=
+DdbE8s9UHxKAZ5+cZipd7LzFFTItJ0kHj5FRm5YPtmV4qi09YuwSoA==
+DdbE8s9UHxKAZ5+cZipd7B8/pFOkUs6LETiEDFewX9F4qi09YuwSoA==
+7Y6DZNY2xGUReV4ojJPyzsW9GueaBowJ
+MUvaf/O4FAoD3j6CW68L8VU2x1UvNSu2LKs3fnGbwV4=
+A8bgvci6e7DHa4dKkvWlNu9f7DCg/y6tLfj2n/p3fLw=
+LuqCxyT5eqkD3j6CW68L8VU2x1UvNSu2LKs3fnGbwV4=
+Z0C+uRrbTgjoUtrS39EMFfW4hrAUwseILfj2n/p3fLw=
+bC0ZMe4WGfV7vn1DIy3YRMosnbifQaEnLfj2n/p3fLw=
+mHMaFW+3mXt78LK1wgFqsvE53lfJIWocLfj2n/p3fLw=
+MUGuchHy9lyY+iTZGWMfA/GBY5WQh50G
+2Y/8uE7uzmOar/KlvxFeSkpgEZ36UZf7
+ETMOU/PBL7AmyEzzYAFEJZzj11qLzuXEpA8RkamQclo=
+1eviNsbwnWw7w2dXBnXn5lU2x1UvNSu2LKs3fnGbwV4=
+pliFNxnJUyOt0Sf5Ma0hnbmS8RD7jLqyLfj2n/p3fLw=
+LJnYp2vy0kN1+1NNBUCp7KbNDcpTSacIpA8RkamQclo=
+u5r9MeKdVQY0J64XKX8XIvGBY5WQh50G
+FA9RU0u9hWbsSOGxFKhvcn5pIN0aZoGBLfj2n/p3fLw=
+W1U8dTgfIZht0BJXIsZpqn5pIN0aZoGBLfj2n/p3fLw=
+LJnYp2vy0kPK/dCKGdxbdfjKFewesK8PpA8RkamQclo=
+SEUkF0YwKHx1+1NNBUCp7KbNDcpTSacIpA8RkamQclo=
+SEUkF0YwKHzK/dCKGdxbdfjKFewesK8PpA8RkamQclo=
+o/LbsWKU6wz62JyfVxB9rfGBY5WQh50G
+H/372TJs4CifRFCdYFYo71U2x1UvNSu2LKs3fnGbwV4=
+ukqENW9NXFefRFCdYFYo71U2x1UvNSu2LKs3fnGbwV4=
+DcyhFpYYxR6ar/KlvxFeSkpgEZ36UZf7

+ 5 - 1
common-push/pom.xml

@@ -17,13 +17,17 @@
     <url>http://www.example.com</url>
 
     <dependencies>
+        <dependency>
+            <groupId>org.diagbot</groupId>
+            <artifactId>public</artifactId>
+            <version>${project.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.diagbot</groupId>
             <artifactId>graph</artifactId>
             <version>1.0.0</version>
             <scope>compile</scope>
         </dependency>
-
     </dependencies>
 
     <build>

+ 341 - 0
common-push/src/main/java/org/diagbot/common/push/cache/CacheFileManager.java

@@ -0,0 +1,341 @@
+package org.diagbot.common.push.cache;
+
+import org.diagbot.pub.jdbc.MysqlJdbc;
+import org.diagbot.pub.utils.security.EncrypDES;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.*;
+
+/**
+ * Created by louhr on 2019/8/16.
+ */
+public class CacheFileManager {
+    Logger logger = LoggerFactory.getLogger(CacheFileManager.class);
+
+    private String user = "root";
+    private String password = "lantone";
+    private String url = "jdbc:mysql://192.168.2.121:3306/med?useUnicode=true&characterEncoding=UTF-8";
+
+    private String path = "";
+
+    public static void main(String[] args) {
+        CacheFileManager cacheFileManager = new CacheFileManager();
+        String p = cacheFileManager.getClass().getClassLoader().getResource("").getPath();
+        p = p.substring(0, p.indexOf("common-push/"));
+        //自然语言处理
+        cacheFileManager.createNlpCacheFile(p + "nlp/src/main/resources/");
+        //大数据
+        cacheFileManager.createBigDataCacheFile(p + "bigdata-web/src/main/resources/");
+        //图谱
+        cacheFileManager.createGraphCacheFile(p + "graph/src/main/resources/");
+    }
+
+    public CacheFileManager() {
+        String p = this.getClass().getClassLoader().getResource("").getPath();
+        logger.info("cache file path...." + p);
+        path = p;
+    }
+
+    public void createCacheFile() {
+        createNlpCacheFile(path);
+        createGraphCacheFile(path);
+        createBigDataCacheFile(path);
+    }
+
+    public void createNlpCacheFile() {
+        createNlpCacheFile(path);
+    }
+
+    public void createNlpCacheFile(String path) {
+        MysqlJdbc nlpJdbc = new MysqlJdbc(user, password, url);
+        Connection conn = nlpJdbc.connect();
+        Statement st = null;
+        ResultSet rs = null;
+        try {
+            EncrypDES encrypDES = new EncrypDES();
+            //所有词典库 不能用concat_group 大小写不区分
+            String sql = "select l_1.name l_1_name, l_1.type_id type_id, l_2.name l_2_name, l_1.concept_id from kl_library_info l_1\n" +
+                    "                    left join kl_library_info l_2 on l_1.concept_id = l_2.concept_id and l_2.is_concept = 1\n" +
+                    "left join kl_concept kc on l_1.concept_id = kc.id\n" +
+                    "where kc.is_deleted = 'N' ";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            FileWriter fw = new FileWriter(path + "tc.dict");
+
+            Map<String, String> idMap = new HashMap<>(10);
+            Map<String, String> nameMap = new HashMap<>(10);
+            String r1;
+            String r2;
+            String r3;
+            while (rs.next()) {
+                r1 = rs.getString(1);
+                r2 = rs.getString(2);
+                r3 = rs.getString(4);
+                if (idMap.get(r1) == null) {
+                    idMap.put(r1, r2);
+                    nameMap.put(r1, r3);
+                } else if (idMap.get(r1) != null) {
+                    idMap.put(r1, idMap.get(r1) + "," + r2);
+                    nameMap.put(r1, nameMap.get(r1) + "," + r3);
+                }
+            }
+
+            List<Map.Entry<String, String>> libraryList = new ArrayList<Map.Entry<String, String>>(idMap.entrySet());
+            Collections.sort(libraryList, new Comparator<Map.Entry<String, String>>() {
+                public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
+                    return o1.getKey().compareTo(o2.getKey());
+                }
+            });
+            for (Map.Entry<String, String> entry : libraryList) {
+                fw.write(encrypDES.encrytor(entry.getKey() + "|9|"
+                        + entry.getValue() + "|" + nameMap.get(entry.getKey())));
+                fw.write("\n");
+            }
+
+            fw.close();
+
+            sql = "SELECT l_1.name l_1_name, l_2.name l_2_name, l_1.type_id FROM kl_library_info l_1 " +
+                    "left join kl_library_info l_2 on l_1.concept_id = l_2.concept_id and l_2.is_concept = '1' " +
+                    "where l_1.is_concept = '0'";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+
+            fw = new FileWriter(path + "synonym.dict");
+            while (rs.next()) {
+                r1 = rs.getString(1);
+                r2 = rs.getString(2);
+                r3 = rs.getString(3);
+                fw.write(encrypDES.encrytor(r1 + "|" + r2 + "|" + r3));
+                fw.write("\n");
+            }
+            fw.close();
+
+            sql = "SELECT l_1.name l_1_name, l_2.name l_2_name FROM kl_relation r " +
+                    "left join kl_concept c1 on r.start_id = c1.id " +
+                    "left join kl_concept c2 on r.end_id = c2.id " +
+                    "left join kl_library_info l_1 on l_1.id = c1.lib_id " +
+                    "left join kl_library_info l_2 on l_2.id = c2.lib_id where r.relation_id = 3";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+
+            libraryList = rsToMap(rs, false);
+
+            fw = new FileWriter(path + "chronic.dict");
+            for (Map.Entry<String, String> entry : libraryList) {
+                fw.write(encrypDES.encrytor(entry.getKey() + "|" + entry.getValue()));
+                fw.write("\n");
+            }
+            fw.close();
+
+            //推送词典
+            sql = "select k1.lib_name k1_lib_name, k2.lib_name k2_lib_name from kl_relation r " +
+                    "left join kl_concept k1 on k1.id = r.start_id " +
+                    "left join kl_concept k2 on k2.id = r.end_id " +
+                    "where r.relation_id = 19 and k1.is_deleted = 'N' and k2.is_deleted = 'N'";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            libraryList = rsToMap(rs, true);
+
+            fw = new FileWriter(path + "push-tc.dict");
+            for (Map.Entry<String, String> entry : libraryList) {
+                fw.write(encrypDES.encrytor(entry.getKey() + "|" + entry.getValue()));
+                fw.write("\n");
+            }
+            fw.close();
+        } catch (IOException ioe) {
+            ioe.printStackTrace();
+        } catch (SQLException sqle) {
+            sqle.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            nlpJdbc.close(rs, st, conn);
+        }
+    }
+
+    public void createGraphCacheFile() {
+        createGraphCacheFile(path);
+    }
+
+    public void createGraphCacheFile(String path) {
+        MysqlJdbc nlpJdbc = new MysqlJdbc(user, password, url);
+        Connection conn = nlpJdbc.connect();
+        Statement st = null;
+        ResultSet rs = null;
+        try {
+            //疾病大小类
+            EncrypDES encrypDES = new EncrypDES();//加密对象
+            String sql = "SELECT con.lib_name, dis.classify from kl_disease dis, kl_concept con where dis.concept_id = con.id";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            FileWriter fw = new FileWriter(path + "graph_diag_classify.dict");
+            String  r2 ,r3;
+            while (rs.next()) {
+                r2 = rs.getString(1);//疾病名称
+                r3 = rs.getString(2);//疾病类别
+                fw.write(encrypDES.encrytor(r2+ "|" + r3));
+                fw.write("\n");
+            }
+            fw.close();
+            //性别年龄
+            sql = "SELECT k1.lib_name, k1.lib_type, kcc.sex_type, kcc.min_age, kcc.max_age \n" +
+                    "FROM kl_concept_common kcc, kl_concept k1 \n" +
+                    "where kcc.concept_id = k1.id \n" +
+                    "and k1.lib_type in (1, 18)";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            fw = new FileWriter(path + "graph_sex_age_filter.dict");
+            String r1, r4, r5;
+            while (rs.next()) {
+                r1 = rs.getString(1);//术语名称
+                r2 = rs.getString(3);//sexType 1:男 2:女 3:都可以
+                r3 = rs.getString(4);//min_age
+                r4 = rs.getString(5);//max_age
+                fw.write(encrypDES.encrytor(r1 + "|" + r2 + "|" + r3+ "|" + r4));
+                fw.write("\n");
+            }
+            fw.close();
+            //体征结果转体征指标
+            sql = "SELECT\n" +
+                    "\ti1.lib_name name1,\n" +
+                    "\ti2.lib_name name2 \n" +
+                    "FROM\n" +
+                    "\t`kl_relation` l \n" +
+                    "\tLEFT JOIN kl_concept i1 ON l.start_id = i1.id \n" +
+                    "\tLEFT JOIN kl_concept i2 ON l.end_id = i2.id \n" +
+                    "where l.relation_id=19 AND i1.lib_type=35 AND i2.lib_type=33 AND l.is_deleted='N'";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            fw = new FileWriter(path + "graph_vital_convert.dict");
+            while (rs.next()) {
+                r1 = rs.getString(1);//体征结果
+                r2 = rs.getString(2);//体征指标
+                fw.write(encrypDES.encrytor(r1 + "|" + r2));
+                fw.write("\n");
+            }
+            fw.close();
+            //疾病科室信息
+            sql = "SELECT k1.lib_name diag_name, k2.lib_name dept_name FROM kl_concept_common kcc, kl_concept k1, kl_concept k2 " +
+                    "where kcc.concept_id = k1.id and kcc.dept_id = k2.id " +
+                    "and k1.lib_type = 18 and kcc.dept_id  is not null";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            List<Map.Entry<String, String>> libaryList = rsToMap(rs, true);
+            fw = new FileWriter(path + "graph_diag_2_dept.dict");
+            for (Map.Entry<String, String> entry : libaryList) {
+                fw.write(encrypDES.encrytor(entry.getKey() + "|" + entry.getValue()));
+                fw.write("\n");
+            }
+            fw.close();
+
+            sql = "SELECT g.diag_level1,g.diag_level2,g.diag_level3 FROM `kl_disease_normalize` g ";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            fw = new FileWriter(path + "graph_diag_normalize.dict");
+            while (rs.next()) {
+                r1 = rs.getString(1);
+                r2 = rs.getString(2);
+                r3 = rs.getString(3);
+                fw.write(encrypDES.encrytor(r1+ "|" + r2+ "|" + r3));
+                fw.write("\n");
+            }
+            fw.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            nlpJdbc.close(rs, st, conn);
+        }
+    }
+
+    public void createBigDataCacheFile() {
+        createBigDataCacheFile(path);
+    }
+
+    public void createBigDataCacheFile(String path) {
+        MysqlJdbc nlpJdbc = new MysqlJdbc(user, password, url);
+        Connection conn = nlpJdbc.connect();
+        Statement st = null;
+        ResultSet rs = null;
+        try {
+            EncrypDES encrypDES = new EncrypDES();
+            //疾病科室
+            String sql = "SELECT k1.lib_name diag_name, k2.lib_name dept_name FROM kl_concept_common kcc, kl_concept k1, kl_concept k2 " +
+                    "where kcc.concept_id = k1.id and kcc.dept_id = k2.id " +
+                    "and k1.lib_type = 18 and kcc.dept_id  is not null";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            List<Map.Entry<String, String>> libraryList = rsToMap(rs, true);
+
+            FileWriter fw = new FileWriter(path + "bigdata_diag_2_dept.dict");
+            for (Map.Entry<String, String> entry : libraryList) {
+                fw.write(encrypDES.encrytor(entry.getKey() + "|" + entry.getValue()));
+                fw.write("\n");
+            }
+            fw.close();
+
+            //性别年龄
+            sql = "SELECT k1.lib_name, k1.lib_type, kcc.sex_type, kcc.min_age, kcc.max_age " +
+                    "FROM kl_concept_common kcc, kl_concept k1 " +
+                    "where kcc.concept_id = k1.id " +
+                    "and k1.lib_type in (1, 18)";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            fw = new FileWriter(path + "bigdata_sex_age_filter.dict");
+
+            String r1, r2, r3, r4, r5;
+            while (rs.next()) {
+                r1 = rs.getString(1);
+                r2 = rs.getString(2);
+                r3 = rs.getString(3);
+                r4 = rs.getString(4);
+                r5 = rs.getString(5);
+                if ("18".equals(r2)) {
+                    r2 = "2";
+                }
+                fw.write(encrypDES.encrytor(r1 + "|" + r2 + "|" + r3 + "|" + r4 + "|" + r5));
+                fw.write("\n");
+            }
+            fw.close();
+        } catch (IOException ioe) {
+            ioe.printStackTrace();
+        } catch (SQLException sqle) {
+            sqle.printStackTrace();
+        }  catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            nlpJdbc.close(rs, st, conn);
+        }
+    }
+
+    private List<Map.Entry<String, String>> rsToMap(ResultSet rs, boolean isJoin) throws SQLException{
+        String r1 = "";
+        String r2 = "";
+        Map<String, String> libraryMap = new HashMap<>(10);
+        while (rs.next()) {
+            r1 = rs.getString(1);
+            r2 = rs.getString(2);
+            if (libraryMap.get(r1) == null) {
+                libraryMap.put(r1, r2);
+            } else if (isJoin && libraryMap.get(r1) != null) {
+                libraryMap.put(r1, libraryMap.get(r1) + "," + r2);
+            }
+        }
+
+        List<Map.Entry<String, String>> libraryList = new ArrayList<Map.Entry<String, String>>(libraryMap.entrySet());
+        Collections.sort(libraryList, new Comparator<Map.Entry<String, String>>() {
+            public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
+                return o1.getKey().compareTo(o2.getKey());
+            }
+        });
+
+        return libraryList;
+    }
+}

+ 2 - 2
graph/src/main/java/org/diagbot/graph/jdbc/Neo4jAPI.java

@@ -2691,7 +2691,7 @@ public class Neo4jAPI {
 
         } catch (Exception ex) {
             ex.printStackTrace();
-            System.out.println("返回带得分需要计算的量表时出了问题!---->getScaleCalc");
+            logger.error("返回带得分需要计算的量表出了问题!---->getScaleCalc2");
         } finally {
             CloseSession(session);
             return scaleStructure;
@@ -2787,7 +2787,7 @@ public class Neo4jAPI {
             }
         } catch (Exception ex) {
             ex.printStackTrace();
-            System.out.println("返回不带得分不需要计算的量表出了问题!---->getScaleNoCalc");
+            logger.error("返回不带得分不需要计算的量表出了问题!---->getScaleNoCalc");
         } finally {
             CloseSession(session);
             return scaleStructure;

+ 67 - 31
graph/src/main/java/org/diagbot/graph/util/CacheUtil.java

@@ -9,7 +9,6 @@ import java.util.List;
 import java.util.Map;
 
 public class CacheUtil {
-    public static Map<String,String> lexionMap=null;
     public static Map<String,Map<String,String>> sexAgeMap=null;
     public static Map<String,String> vitalMap=null;
     public static Map<String,String> disgSortMap=null;
@@ -20,7 +19,14 @@ public class CacheUtil {
 
     //疾病科室,获取缓存
     public static Map<String,String> getDiagDepartCache(){
-        String path = "doc_result_mapping_diag.dict";
+        if (doc_result_mapping_diag_map == null) {
+            createDiagDepartCache();
+        }
+        return doc_result_mapping_diag_map;
+    }
+
+    public static Map<String,String> createDiagDepartCache(){
+        String path = "graph_diag_2_dept.dict";
         Configuration configuration = new DefaultConfig();
         if(doc_result_mapping_diag_map == null){
             doc_result_mapping_diag_map = new HashMap<>();
@@ -35,19 +41,29 @@ public class CacheUtil {
 
     //疾病分级解析,获取缓存
     public static Map<String,Integer> getDiagClassifyJiCache(){
-        String path = "diagClassify.dict";
+        if (diagClassifyJiMap == null) {
+            createDiagClassifyJiCache();
+        }
+        return diagClassifyJiMap;
+    }
+
+    public static Map<String,Integer> createDiagClassifyJiCache(){
+        String path = "graph_diag_normalize.dict";
         Configuration configuration = new DefaultConfig();
         if(diagClassifyJiMap == null){
             diagClassifyJiMap = new HashMap<>();
             List<String> contentList = configuration.readFileContents(path);
             String diagName =null,bigdiagName=null;
-            String[] diagSort =null;
+            String[] diagSort =null;String[] split = null;
             for (String s:contentList) {
                 String[] splits = s.split("\\|");
                 if (splits.length >= 2) {
                     diagName = splits[0].trim();//疾病本体
                     bigdiagName = splits[1].trim();//疾病大类
-                    diagClassifyJiMap.put(bigdiagName, 2);
+                    split = bigdiagName.split("\\、");
+                    for (String dis:split) {
+                        diagClassifyJiMap.put(dis, 2);
+                    }
                     diagClassifyJiMap.put(diagName,1);
                     if (splits.length == 3) {
                         diagSort = splits[2].split("\\、");
@@ -62,21 +78,34 @@ public class CacheUtil {
         }
         return diagClassifyJiMap;
     }
+
     //疾病归一解析,获取缓存
     public static Map<String,String> getDiagClassifyCache(){
-        String path = "diagClassify.dict";
+        if (diagClassifyMap == null) {
+            createDiagClassifyCache();
+        }
+        return diagClassifyMap;
+    }
+
+    public static Map<String,String> createDiagClassifyCache(){
+        String path = "graph_diag_normalize.dict";
         Configuration configuration = new DefaultConfig();
         if(diagClassifyMap == null){
             diagClassifyMap = new HashMap<>();
             List<String> contentList = configuration.readFileContents(path);
             String diagName =null,bigdiagName=null;
-            String[] diagSort =null;
+            String[] diagSort =null;String[] split =null;
             for (String s:contentList) {
                 String[] splits = s.split("\\|");
                 if (splits.length >= 2) {
                     diagName = splits[0].trim();//疾病本体
                     bigdiagName = splits[1].trim();//疾病大类
-                    diagClassifyMap.put(bigdiagName, diagName);
+                    split = bigdiagName.split("\\、");
+                    for (String dis:split
+                            ) {
+                        diagClassifyMap.put(dis, diagName);
+                    }
+
                     if (splits.length == 3) {
                         diagSort = splits[2].split("\\、");
                         for (String dis : diagSort) {
@@ -92,36 +121,35 @@ public class CacheUtil {
     }
 
     public static Map<String,String> getDiagSortCache(){
-        String path = "diagSort.dict";
-        Configuration configuration = new DefaultConfig();
         if(disgSortMap == null){
-            disgSortMap = new HashMap<>();
-            List<String> contentList = configuration.readFileContents(path);
-            for (String s:contentList) {
-                String[] splits = s.split("\\|");
-                String diagName = splits[0];
-                String diagType = splits[1];
-                disgSortMap.put(diagName,diagType);
-            }
+            createDiagSortCache();
         }
         return disgSortMap;
     }
-    public static Map<String,String> getLexionCache(){
-        String path = "lexicon.dict";
-        Configuration configuration = new DefaultConfig();
-        if(lexionMap == null){
-            lexionMap = new HashMap<>();
-            List<String> contentList = configuration.readFileContents(path);
-            for (String s:contentList) {
-                String[] splits = s.split("\\|");
-                lexionMap.put(splits[0],splits[1]);
-            }
+    public static Map<String,String> createDiagSortCache(){
+        disgSortMap = new HashMap<>();
 
+        String path = "graph_diag_classify.dict";
+        Configuration configuration = new DefaultConfig();
+        List<String> contentList = configuration.readFileContents(path);
+        for (String s:contentList) {
+            String[] splits = s.split("\\|");
+            String diagName = splits[0];
+            String diagType = splits[1];
+            disgSortMap.put(diagName,diagType);
         }
-        return lexionMap;
+        return disgSortMap;
     }
+
     public static Map<String,Map<String,String>> getSexAgeCache(){
-        String path = "sexAge.dict";
+        if (sexAgeMap == null) {
+            createSexAgeCache();
+        }
+        return sexAgeMap;
+    }
+
+    public static Map<String,Map<String,String>> createSexAgeCache(){
+        String path = "graph_sex_age_filter.dict";
         Configuration configuration = new DefaultConfig();
         if(sexAgeMap == null){
             sexAgeMap = new HashMap<>();
@@ -140,8 +168,16 @@ public class CacheUtil {
         }
         return sexAgeMap;
     }
+
     public static Map<String,String> getVitalCache(){
-        String path = "vital.dict";
+        if (vitalMap == null) {
+            createVitalCache();
+        }
+        return vitalMap;
+    }
+
+    public static Map<String,String> createVitalCache(){
+        String path = "graph_vital_convert.dict";
         Configuration configuration = new DefaultConfig();
         if(vitalMap == null){
             vitalMap = new HashMap<>();

+ 1 - 5
graph/src/main/resources/bolt.properties

@@ -5,14 +5,10 @@ pass_235 = diagbot@20180822
 
 # neo4j bolt credentials
 #\u7EBF\u4E0A\u4F7F\u7528
-bolt.uri=bolt://192.168.2.233
+bolt.uri=bolt://192.168.2.232
 bolt.user=neo4j
 bolt.passwd=root
 
-#\u533B\u5B66\u672F\u8BED\u4F7F\u7528
-bolt232.uri=bolt://192.168.2.232
-bolt232.user=neo4j
-bolt232.passwd=root
 
 #\u6D4B\u8BD5\u4F7F\u7528
 bolt112.uri=bolt://192.168.3.112

+ 16 - 83
graph/src/main/resources/diagClassify.dict

@@ -1,85 +1,18 @@
-de3O9146cmVps3llnokVH/VEHVNVSAf28NI2uzoIb1z+V0UU9rhi8c3bJ7ybsBJaPe8Dwi16GCWsj2KV4MFGvM2XHsPM5/7vsdnMld18khWHuidZqDP+S0Wp2ks4E38XyKOlDzIs7nh+60vzmgZck5I2f4ckLQ9q42uDOadsTHSQBwvCoRnyrEpgEZ36UZf7
-de3O9146cmXZ5vyqQrfGtukh+7ztl8Scn6MXF+Z9t7fx4lhYgvw9OMPL84gmGlXsfs16bsXBopowp2rr+8BdkLp8TLAofH0HdJu/Z+f8mccjaiE1wLfZ+x8Giqn81mC6mdV44oVYWXs9HDN2zZEu56/KAMhd1mfFgjLDcveXrBQ=
-RjlHunEZKP2G6qnHcET7YTx6dEKKWoowYO2o3LGxGdY23pVlp5apnLVBc+kE13yRZTyV0HA939d+2CGuyJ4UnIpLC2SKAD9H8AYG2/+cSQ24Sb7MZ3N6O5RkShZvNXKYmtLrLqmUWy/SL0jCg7w0/lscz3JraR1+3VaP952Z3DTcLM1uKWDR6A==
-RjlHunEZKP02Kkkiv0cRsiGHkf3LOZUbZI/MOgENdU2bEOW86axfL7to9BzcCtKahNoLIiRKQB8VPtQeE0un6in3rGXqQ9cgmDhL+xvjqaO3QuGz77WkKFKzqC2ioHZHcJFNOdGnR2UwvUHjuaLnow==
-RjlHunEZKP1GqRWsmFqF81oMQ9o6jaGMqgbmc8d/drwHpeF8StNMmLqkgcaEPLA2NmRR3v2oqUiIlPb4AjSslFRhE/a8+rwPeiS9ZqV5MvouV2aR/RfOvAK52fy6HUOW
-RjlHunEZKP1f+Xw9ovIrqcMr3qlunGaOWLjpsZqBN36EAj7YjHwO5qdyxmZIFYPUaZnjn25t1FT1SMSdWfQ/gVv+iloFmS1z3Rp/oMp3XHix/kIn2HDUIvHEcMY6pkofs4F4is8JibLcSDgtAdzlN3bdEINoILZYreaFev21BvOHzlGaNyDwBE5apQIQsswN
-E0zofMTBmeiphs0iC7vrYX7YIa7InhScmITlQMM4zbJKYBGd+lGX+w==
-E0zofMTBmehahrKxgKIgQX7YIa7InhScmITlQMM4zbJKYBGd+lGX+w==
-tQqyk3JtpQSNfLuFP5mqIW/uRY6g7LFfAGUEiTffJOyEpbnjoZrXUYLNngz5p3CVTdIEyhnewGKCzZ4M+adwlfqfhjFiqMCHN8t1HUmMTUA=
-tQqyk3JtpQSrwHa0tVAPXG/uRY6g7LFfwzwjLiQhaQ0=
-QY8HRySr7Iwnp75iBJ/VjxOIU+zd8rQ7cYUk/dpHC/JKYBGd+lGX+w==
-QY8HRySr7Iwnp75iBJ/VjxOIU+zd8rQ7tWx+IEiJ7o0H1mThJ7gSoQ==
-QY8HRySr7Iwnp75iBJ/VjxOIU+zd8rQ7Tdp+mfnukBbq1KNjixCbjqzLO3h9qz3/
-QY8HRySr7Iwnp75iBJ/Vj6EartQd+Ruay09JTFOMHIhDrVTSChjG5A==
-QY8HRySr7Iwnp75iBJ/Vj6EartQd+RuaGIuDViimEJ0H1mThJ7gSoQ==
-QY8HRySr7Iwnp75iBJ/Vj1JJXUSpiAOlcH7SKfLT/pRKYBGd+lGX+w==
-QY8HRySr7Iwnp75iBJ/Vj+3XaTjV4VFOlsI/pFsgIb0u2WJVxeidQQ==
-8+/D6NypjddUIm92l3iN1Uuc/0bs8CvPrxAz4u4zi3IpsfANTRsS4dsQ+5pETXBQ
-8+/D6NypjddUIm92l3iN1RMRyZFpCIgsrxAz4u4zi3IpsfANTRsS4dsQ+5pETXBQ
-8+/D6NypjddUIm92l3iN1YWxPHbyuaEKIuydduvnnjTfijPDjIJtLyQOE5CeChrCuipopyTOKsSI5/HVtv3JTB6mtWVDEwMM17fWhB9R3z3h5IIo8JsBGQ==
-kRGK26rRVysm9pMK7wBhWY2iGQ2rccVyPBQSiGlnxKE=
-kRGK26rRVyu7GwwTQ0WXNg46yEXvENcfIVOt7Mod6Ps5mxVKRDBSCg==
-kRGK26rRVysbQDyBW1xUyY2iGQ2rccVyPBQSiGlnxKE=
-2jobYaE9hqn8wIoqdezhvDzj8cdKEnQiQD7P1WAVSwE=
-2jobYaE9hqnnX/mA/TOQdzzj8cdKEnQiQD7P1WAVSwE=
-2jobYaE9hqnnO9xH0Ng8qDzj8cdKEnQiQD7P1WAVSwE=
-2jobYaE9hqkdrVgoS621cI2iGQ2rccVyQD7P1WAVSwE=
-R9zWPlPSlOpvMc6gf+vo7Efc1j5T0pTq3wJeT9uIdw05t9ci1V8G6Nw5/wmoKh/O5CMgpfNuLotH3NY+U9KU6oWv11PkPSA5s81M06l2LDO6wJm6v4silcFa8MKldzceUmuF4sVj1cJ/Jdns96y0KQ==
-R9zWPlPSlOop+RSWAxFgMUfc1j5T0pTqKfkUlgMRYDGhFIZjGCZUD7nsKOkjGOTnVS+ckNNMZizw7oZqIGR94V6Xsia9y8izND5C1/8FKOcgYT3Owlb7u7nsKOkjGOTneIBrCjmIqzU=
-IMHDeNUnTX3SlsLfTPun+tNTGLrlDClHlXCORo2NvvVMWLNz9VqNyoF8LbGqawR/o+AtTpkfT0fV2ph/NDZqdx9PJEtEyOk0Pyiqohw0HR5KYBGd+lGX+w==
-IMHDeNUnTX1u8/ancQDeY9NTGLrlDClHp8xbmibDDV4hZB/+Q/mDHohTLf8Zf1l0yGZD8NTwpOWFRcQAa4tQJ3X/rgUvMKpTs0PSXx3SYXQ=
-oRqu1B35G5r1/K/2KIYDNKfNXG7WEEJn702NvF+A5Xg5mxVKRDBSCg==
-oRqu1B35G5ogwCx/aPoyzbss9owqky3e702NvF+A5Xg5mxVKRDBSCg==
-oRqu1B35G5pqKPvVOJ6IDY6ePH8PSWuRjAZ7I7cMHAK73XHYC6Akpw==
-oRqu1B35G5rjlkbWMKMO6yDKFNAVOJBp702NvF+A5Xg5mxVKRDBSCg==
-VC7rkUAh+6IOJyqFdqvYFmjLG7423xrFESItu0JlyWy73XHYC6Akpw==
-VC7rkUAh+6IOJyqFdqvYFmHwQjShON9fhw48h4qdOM5KYBGd+lGX+w==
-VC7rkUAh+6IOJyqFdqvYFi/gyc0psbeQKR0EVmN5m61Rim+G22KkXKzLO3h9qz3/
-VC7rkUAh+6IOJyqFdqvYFmY/MQi6NG5NyZd8+R27AhUvph5mChmg9A==
-VC7rkUAh+6IOJyqFdqvYFhOHROczP9gSXVtBpnZT9jSWsjKN6/+kCA==
-VC7rkUAh+6IOJyqFdqvYFkadxTWJUjJdyAUIJrCEc/BKYBGd+lGX+w==
-VC7rkUAh+6IOJyqFdqvYFn+AbILNUy1H15zd/uzdHgu4+VkLqXY4pHscRNkoXg8TU6UFXXTaYukdes/JyFc0OX+PGO+FqW9GTXFiR5BKDCwCHXX318BY8w==
-8n8zV92Zv6l9KDxIQfEX1nZbyBjxZ5kKV/Hp2+gZRugZ2wSwovQtcSypSfvlaemr
-8n8zV92Zv6l9KDxIQfEX1gYGst0L0VxA+txv0nfiE8G7v2Ten8/zVKzLO3h9qz3/
-8n8zV92Zv6nu8xwJpBGB7iXzbbppK2Zs+txv0nfiE8F1Lzfp/5wLX6zLO3h9qz3/
-8n8zV92Zv6nu8xwJpBGB7qfcarVHiWLlnIJ40LYYnBZhG8ICDAGyzA==
-8n8zV92Zv6nu8xwJpBGB7n3e0abfH1gY+txv0nfiE8F1Lzfp/5wLX6zLO3h9qz3/
-lIV9YVV9QehYSuC/ANfdSTha8zxf3Hy7
-lIV9YVV9Qej64m/3BU/YLywD+mrUh5SymQWPqo/kQAvJ8Mk28bf8YWNK4ficpU19HZrzGFpPxwNTSceGqFwPgFflxwowVkH331fFGRCNymrCQD6zKKakDtiy4sQDGnt4qX1QP1Y2Xg1RFT0vSlnegD3cQA4BkkoHiZ50/t0z8Fnlob2Ye8rbnw==
-LAP6atSHlLIAuzNm8LfUwIa0FqldZgW45bV/y/cbl+A=
-LAP6atSHlLLt63zkPn/paYa0FqldZgW45bV/y/cbl+A=
-aoyMNdWOkHezBcuWAN69djha8zxf3Hy7
-lIV9YVV9QejkIyCl824uizha8zxf3Hy7
-LAP6atSHlLJw2EZUYZ9TOTha8zxf3Hy7
-LAP6atSHlLIqGEwAN87XepyzLvIGtX+Ol1M+9nQLrYQtpHqBV1Ei4WVeX46M4V00m0CcuRvPf+M=
-BklPGQplmWLohT4jcppA9F7IHDS5I2/n
-BklPGQplmWJrhbPpUhe2EArZxL5wy5xjb0zp3pbRbBgPSkwiuy+mJg==
-BklPGQplmWJrtdU0KGYRIKzLO3h9qz3/
-p9xqtUeJYuV763zk1n7SVFIPcgQwW0ctynkGSrhDIiOM60xJYFx0aQ==
-p9xqtUeJYuV763zk1n7SVPMvMCS4x4x/YiRu1ikKWf8Z2wSwovQtcRqv2V2sZD8x
-RDRqSmn8EECp5vSNnZ4Fp31H6jXXJjK2ht920Hnr08U=
-RDRqSmn8EEDnUswlzsbKMH1H6jXXJjK2ht920Hnr08U=
-RDRqSmn8EEARd2pG51aaHUQ0akpp/BBARZe8TU7WYyk=
-RDRqSmn8EEA0qE5jtnOUjH1H6jXXJjK2ht920Hnr08U=
-98gWtMm+tR625dg6mP2VTBRy4eqkKuM8Gavn/kkrqRE=
-98gWtMm+tR46By2e/5n/HhRy4eqkKuM82XJkOa9sRAG2GAYTx8FRgmG2db34U5XxuszESNIk33Clx351wwlsKK83lcSVJXQ9d1XUEvmLHidKYBGd+lGX+w==
-98gWtMm+tR6I6KaHZWPikBRy4eqkKuM8Gavn/kkrqRE=
-98gWtMm+tR4//yRAg62teBRy4eqkKuM8Gavn/kkrqRE=
-h381cyp+EIIktrquGmmwyM6srNo8HVLf
-Ss1fTwot0QhJWGMMdctgt86srNo8HVLf
-Ss1fTwot0QgPiXOCKP2zFM6srNo8HVLf
-8RfFan0pKMpvMc6gf+vo7PEXxWp9KSjKkAeuGME68RI=
-8RfFan0pKMop+RSWAxFgMfEXxWp9KSjKkAeuGME68RI=
-HoHtYSLcpapg4HdcdQdA3A+XWTgi8fuftWfOFeoJahFpwVFdsPOEkpg+d/HNBOcC8gqP/AVGyqdsq5QnV6lVQt4sQpkPgSzN
-HoHtYSLcpapyT1zqnSuFf1/0FM8ps6hPqcrbsmg5p84dJBcpwoJo/JFg8AHwKyJ0/ICc9j/VEAY=
+kQHtQ28+jmQArPJrd/bUjJEB7UNvPo5kaH9Yc7Wy6H+RAe1Dbz6OZHuruyPH85zpkQHtQ28+jmSSecxn6PopWA==
+9K+PZ38Hd/1bK60dslh9jD08xZT/RFfX6nQY8kcF6f6Q3pCfQMdEPfSvj2d/B3f9Tj6O+pMPrIRmq1tUfM7NXEw+ew7Midqlfcmfdvs36w05mxVKRDBSCg==
+csx+mzURhJ9wBHXy23rFCqELYR/Ge6SfJguv40zsenLdteW2LzNMtrg0JQEm9dDbB1G+0rUX/fo=
+bK8Zpab/PptNYls6bckCK2qOH6CihZwfKfesZepD1yCYOEv7G+Opo+vBv5hwZW/eVnsuGILD+YJwkU050adHZc9nrcMQ3QcNfldHWCrTN51y47LOmx/liqE23F9pxjrKlKBI0b+VWyI=
+B6XhfErTTJgvNY+AQau22C5XZpH9F868vBWNDVn69QQR0SGjmGqDDcCM58ZMX4o+ZXyFPMW0ii/Ny1CxCM0j0dpXXmClQOUaVGET9rz6vA+1//CUvL5M1g==
+ZBlMqkWFMgGKhXne6fxyMKv5big2S+NWojkRSVpz0yn6WMgWKDhc0+g7aXmzxY+BfWBnTB7jgAc=
+vtDo+c8/v9LFD8Zgufoub1pWh1AgRr/9GnymXXqYoBWbuNje0T36Dr3Q7oysbBqkX1Y5k+9viFNKYBGd+lGX+w==
+vGTRMHlT7dVn8NkcapuUf41gFgiCfJ2oDDOh4hMlCBwOIv27jCqunbxk0TB5U+3VD7FeNuUlO7/XGFua8Lqaah7XrZ4qqRttcq02pXq78Czy339ugWe7+R7XrZ4qqRttjLsAdbyDm5W+WpmiJ+a8SfqpmsxeaqFV
 x9PLCfVsCr/aY475fTCHFGhMbsgdvFwEdAst9qQci0LWQamxDzw1E7qpIkwJx9YsGlVBbqLl3urSDDpehmH9129vfFiy9pH8kCx6xYUnv5FKYBGd+lGX+w==
 x9PLCfVsCr/aY475fTCHFPXiKHRRn5b1dAst9qQci0IbixSDt+/ibotub2c2nK7+hNNemi/HhvrIKGxpbjCvzM5Kw2EKXOmOZvQ0DrEA+9k=
-WEck0+cxgSIjbkhvE0jRPBw91EHpsWRO
-WEck0+cxgSIjbkhvE0jRPJTYEeFyhgm3JxzpZJtLMQNKYBGd+lGX+w==
-Liq4+z+iHBbQC3hom0PzAIso9V888m13KiDzJFJhabu03GZdWL8lkDx5HY77PTBpcNQEpTpRXla03GZdWL8lkET0g0IOo8TG
-Liq4+z+iHBYKw1llIDNuU5Qw++y19ijkrrOwRuaa87u03GZdWL8lkJbWROriztT4xcrxFBQsXlC03GZdWL8lkET0g0IOo8TG
-9K+PZ38Hd/1bK60dslh9jD08xZT/RFfX3Xy+aWqbuA9KYBGd+lGX+w==
-9K+PZ38Hd/0lZB4l/ViRPT08xZT/RFfX3Xy+aWqbuA9KYBGd+lGX+w==
-entv5lp5ztFvMc6gf+vo7Hp7b+Zaec7RkAeuGME68RI=
-entv5lp5ztEp+RSWAxFgMXp7b+Zaec7RkAeuGME68RI=
+hUAdePKw8Fat5bAa8jA4IbW7c/rMKpvdCZ6MHlCTW0VVL5yQ00xmLGaoAlsMAZo7JB2Cqxd7RUo5mxVKRDBSCg==
+CfPzXQ015jpvMc6gf+vo7Anz810NNeY6bzHOoH/r6OwhBdCms1xkEXTyLF4g0UYOUWF4i03SHY1baeFjtzyIA230oq1zrgjpJNvo5Ld6H+No5oiZjWu7jg==
+CfPzXQ015jop+RSWAxFgMQnz810NNeY6kAeuGME68RI=
+AhKA2vBf73VVXxJdQdnvopTfpFBJIh3ZVRNG119aBmmWCEFlJOjxbFtp4WO3PIgDoqpU4KSD1ReQ3pCfQMdEPTS99G7VuQMc
+anqc376RwxF+Tyu5VoFlKqXxSD+f1O2vC5YOy19B3S1HJbFtXbY5u4s87+ChjgP9RyWxbV22ObuxUtK/+6g5z6zLO3h9qz3/
++8iGrGjQRQXLJRvWtAt1iYU809Pr5+wg80e6b34+k3qaoMeR3HYQyn6/oN57/v4WReElQJ+Fc6O3OV7VztniKXRpb7y0gLlK8W4jXgAgFfPwHLNp0tAohzUX4TxTFrGq
+8n8zV92Zv6lIoOZPZs0HwgrZxL5wy5xjD7Bi/O7j4pT7gtDvhBGfLPJ/M1fdmb+pEWTgRjnEzOg=
+u9VShjNiQLYp+RSWAxFgMbvVUoYzYkC2ltZE6uLO1Pi1rPvw0grsulq9P1+cZSODCwy1ps4giW8=

文件差異過大導致無法顯示
+ 21151 - 21151
graph/src/main/resources/sexAge.dict


文件差異過大導致無法顯示
+ 1138 - 1141
graph/src/main/resources/vital.dict


+ 1 - 1
graph/src/test/java/org/diagbot/graph/CacheFile.java

@@ -46,7 +46,7 @@ public class CacheFile {
     }
     //疾病分类归一
     public void diagClassifyMaping(){
-        MysqlJdbc nlpJdbc = new MysqlJdbc("root", "diagbot@20180822", "jdbc:mysql://192.168.2.235:3306/med-s?useUnicode=true&characterEncoding=UTF-8");
+        MysqlJdbc nlpJdbc = new MysqlJdbc("root", "lantone", "jdbc:mysql://192.168.2.121:3306/med?useUnicode=true&characterEncoding=UTF-8");
         Connection conn = nlpJdbc.connect();
         Statement st = null;
         ResultSet rs = null;

+ 1 - 1
graphdb/src/main/resources/application.yml

@@ -6,7 +6,7 @@ spring:
     active: local
   data:
     neo4j:
-      uri: bolt://192.168.2.233:7687
+      uri: bolt://192.168.2.232:7687
       username: neo4j
       password: root
 

+ 2 - 0
nlp/src/main/java/org/diagbot/nlp/participle/cfg/DefaultConfig.java

@@ -83,6 +83,8 @@ public class DefaultConfig implements Configuration {
         try {
             if (StringUtils.isEmpty(path)) path = DEFAULT_PATH;
             is = this.getClass().getClassLoader().getResourceAsStream(path);
+//            File file = new File(this.getClass().getResource(path).getFile());
+//            is = new FileInputStream(file);
             if (is == null) {
                 throw new RuntimeException(path + ".......文件未找到!!");
             }

+ 5 - 2
nlp/src/main/java/org/diagbot/nlp/util/NlpCache.java

@@ -31,12 +31,12 @@ public class NlpCache {
 
     public static void createSegmentCache() {
         Configuration configuration = new DefaultConfig();
-        segment_cache = configuration.loadMainDict("tc.dict");
+        segment_cache = configuration.loadMainDict( "tc.dict");
     }
 
     public static void createPushCache() {
         Configuration configuration = new DefaultConfig();
-        standard_info_push_map = configuration.loadMapDict("push-tc.dict");
+        standard_info_push_map = configuration.loadMapDict( "push-tc.dict");
     }
 
     public static void createSynonymCache() {
@@ -59,11 +59,13 @@ public class NlpCache {
 
     public static void createClassifyCache() {
         Configuration configuration = new DefaultConfig();
+        String path = configuration.getClass().getClassLoader().getResource("").getPath();
         standard_info_classify_map = configuration.loadMapDict("classify.dict");
     }
 
     public static void createChronicCache() {
         Configuration configuration = new DefaultConfig();
+        String path = configuration.getClass().getClassLoader().getResource("").getPath();
         standard_info_chronic_map = configuration.loadMapDict("chronic.dict");
     }
 
@@ -74,6 +76,7 @@ public class NlpCache {
 
     public static void createPropertyPairCache() {
         Configuration configuration = new DefaultConfig();
+        String path = configuration.getClass().getClassLoader().getResource("").getPath();
         List<String> lines = configuration.readFileContents("relation.dict");
 
         extract_relation_property_pair_map = new HashMap<>();

+ 23 - 23
nlp/src/main/resources/push-tc.dict

@@ -27,10 +27,11 @@ olBfBBlxWjycJfkSrHWjXx7XxndCZTPS
 RwfaZMa+tcIhXzxcl4+Idb9VMd3r2VAj2/BLLbx/+4pXpbNURAoHMosMluUE2o11
 RwfaZMa+tcJkNVRINR3RaEcH2mTGvrXCRf+adBOnJwQ=
 UkldRKmIA6WAwg1Wq5Vn63crFXTS2iAzA8iI/B1bd7NBz9sS2ov5oh5KTBNr3PIC
+UkldRKmIA6UaPwhFqEJmrMX7M3NIrxfraiEsqO85sLgzwSWeiYa9dQ==
 UkldRKmIA6VnDBewcIhcpngRzj1NxjWsI49cPLsdnslNM37bA6HHygFsDcrhWfuKNAbK+74+adtKYBGd+lGX+w==
-UkldRKmIA6XTeO8h3KzbE/1CIPowQycv8DqlBsEDrXmeL9kgB0JCLg==
 rM6axi/XjaYWBU8GO7hsC046DgCgaagT9YQ8RM5gOiY=
 LYzBUSplh3VqKHv9aeUo9RkUk5HkxzuvB451+nWReBM=
+LYzBUSplh3U+qOXat531ucqtUJ0mpJv3
 vQS1yCOfVdikij2yDrKxDe6Qh3TPngC/FWN3xRThYNo=
 +nnls/lOkLPVWstjEKg9e7jn0JrAS1kkryKysOD+KUY=
 bS7l/RK1jZNgshyonVW0t+moofYVr0mL9YQ8RM5gOiY=
@@ -112,7 +113,7 @@ fX2inCV4aRo2inrp+yDvLLPvFObbr4H8B451+nWReBM=
 PfmwFMkSgnaK1zhbluODDTgDx8qs11DG
 M/HvoT4H8rksDNIz63sDMzqrdimkS9GzrUh2he+KdNk=
 tS4IBGYFq54luM2Oe2mKmFjLajL1b5kzLKfEtSxDdD2vsFqAZYBWaQ==
-tS4IBGYFq57pSgcoVE4Lbab0TFIDFrR5LKfEtSxDdD2vsFqAZYBWaQ==
+tS4IBGYFq57pSgcoVE4LbcCbeVHeLFEfLKfEtSxDdD2vsFqAZYBWaQ==
 T25M+lo10YvqFtaQbY6b0jgDx8qs11DG
 KWJC+jP3MmrsHjkUuXPUcdutwFpX2NqsWJR/aEzNaJK6+7a927Mlpw==
 KWJC+jP3MmrYw40ayuCnk78h54ct0pGn/q8HAwDYbMw=
@@ -166,7 +167,8 @@ TAeuC8oKKcArucN2NjKvr0OOPTE6p5v3
 Tdogv7Jugv2K1zhbluODDTgDx8qs11DG
 VcxQmeoIyVR9H7WEhFjtUAnW3C5Wg3qZB1jjWBOdWDE5Rw3NtFh+7A==
 VcxQmeoIyVTUnAlh270+3AM7oB/AV+xgWJR/aEzNaJK6+7a927Mlpw==
-oRqu1B35G5rbxfAeY2EVMMX7M3NIrxfraiEsqO85sLgzwSWeiYa9dQ==
+oRqu1B35G5o4r2XHT1h+EizhO9/sW2ZDEWtLgLSKG1o288pnTvZ0luzSwRJA5gyR
+oRqu1B35G5qbHeo7szvfgg2GQNoJDXDxgymUzeBoiIQSmVi51alVLf1CIPowQycvDG0qAUBoTCWeL9kgB0JCLg==
 0oIJnb71twsZ9j4hcnj5dw==
 XvltMqvZ0rED8lKh69ftvADD7Gn6zRXzatKSiOnQI0Y=
 AWTAoSTdc8bFKhCR9/Q+JH7X50rwxyEViy48LWiKVlE=
@@ -229,7 +231,7 @@ gF3QPZp34YB0Cnu7zg3rWEwEAlMwW4TWaQ8iknc+isabXgLykjqhpQ==
 A5rchc0m68Tbbj8iyg0WWPfrvNk1O06TJVuN0J2NK24=
 +fdIbINFG2E54R3RmIhG3VwoE/Iz9+ln8ykBDurj71SzIoZNbSwKiQ==
 BGL6SBJINCSzbDHIoU2htbskWOWaLi4uZbG8KUhskwQ=
-E4hT7N3ytDvTeO8h3KzbE/1CIPowQycv8DqlBsEDrXmeL9kgB0JCLg==
+E4hT7N3ytDsaPwhFqEJmrMX7M3NIrxfraiEsqO85sLgzwSWeiYa9dQ==
 E4hT7N3ytDtevV6eooplxkjAXydQEyYf32kQDgX44Ia5IbscCkv6s0S6FHPwV2d6
 E4hT7N3ytDuRMvbsctv8GU2kckilPvYvJ3npHh7ywA8=
 sP3baNIBbP5o5mcDrMIXM5aexRmSKyOAn777VwNyqoE=
@@ -369,7 +371,6 @@ LMOMREe6CLzXYl8eOxe0eOf3bxJOe6dS
 21FEZWwAuXd4VtVA2EJzWVFIpO1SKQ8oGVZ4soLkvsjxMWtT7kk4uA==
 yY/+t/uUYeYezPAZR3O6fpcntkx8oz+IOq4FtKDlq5o=
 FVJ6Danz7zv05iCN+nmpsA==
-+xe5CpUw1IYIayJ99X/P37J/FQZxcg3o/2mxBEfNQnM=
 yAs1N414L3aMDOfhS/fJ4g==
 59W1R2nuO4NiEqBrwUf60g==
 bJdd7hGHsxqSpiHNCTvHGcxg2LiwSfHx0Zi/2VsQQhM=
@@ -618,6 +619,7 @@ hJTWPHNwOSXAcvtjdiRQWpAU5GnmxS4yA1p8C3jFxs8=
 7SmXOMjHw4W82j8JYvRvio7EZDbRGh+S4PTHEB/BVKNtY1CEpVlMHg==
 RkUdNfsM27HSIZ2S4eWyLQswdhDImns1ryKysOD+KUY=
 di/lf92orkNtQR1sqAz5AJL5L0pTEc4MDPf2x9M9U8hDUjLgRfYJd7Mihk1tLAqJ
+0e9jJzjD5RO9wQKLGZD07EIHqn6L/+gA/q8HAwDYbMw=
 kb80gvcxzap8cPh5H3HqCH4diksKryCj8euHAclJAyKzIoZNbSwKiQ==
 kb80gvcxzar3vBhNkU59YzZqgIz/f4ngIOF7cx9ohLI=
 AIvTjMd3sKt841qlXVGmBDHm40R9ztCA29PyhLKx2/M=
@@ -636,7 +638,7 @@ R8yxAy9T5+Eq5EFBYU12pAtL5Eok3uWiWRaTFzIkLGM=
 2WHD1DmO54s7ZTIQu2r/3A==
 D5BkMMObp+wL5mGLILBHXZZQX8Skgbf1AGxaLY4tP2M=
 EyqU/EW9b7/dMwuqnRFUGwu83AtfwvRQwLdlewz8HCWzIoZNbSwKiQ==
-HM89DEXwIpbNR2sokIykjPsDs+aLBE4D24QZaZnulHuzIoZNbSwKiQ==
+HM89DEXwIpbNR2sokIykjPsDs+aLBE4DpHp904IlTO0=
 9ON7f+cfbFIiWD+NTcQ07a7xei6OMQavU0LC/8AnQQezIoZNbSwKiQ==
 6ByZH6ejZBR6HE8sMpwENjgDx8qs11DG
 md7FgUY16RRpHAHM1WsmQ83qakX12HuHx2HxBhizdbQ=
@@ -714,6 +716,7 @@ C6UiFAmco8zzPsMGSih9ctLEebb7eZ05H1SR+7PDGTU=
 C6UiFAmco8xuTtegSlfNltLEebb7eZ05H1SR+7PDGTU=
 C6UiFAmco8zjt9gvj0gZAdLEebb7eZ05H1SR+7PDGTU=
 TuGSVxlwRNKYF2Tgr3zBNUpgEZ36UZf7
+MnfivOeWEJsYU7xbNSSDfX4AS0mk96sNWGgkX+sK4nA=
 SJTUzc041vd0JO/NBFpZWnta+BlHs41g7OcTCOGpEhQ=
 UB++3LWUbBdlxfk+Fjr8cCRAkSArWPDFAChUxc1Zoio=
 yregbjAli5gjVPt2N5tn00pgEZ36UZf7
@@ -1000,6 +1003,7 @@ kSBhzNeslY0Gim80mYxZp1dAusfQ4FSIGjFhHUGm/IA=
 l1FS96IkP3l3YPJAFA/h0Q==
 DE7pZV0HcrIHAKOW399UQsiEkif5w7Ir/q8HAwDYbMw=
 DE7pZV0HcrKTjsrYFaiDbjZPBVLDe6xWFreNtoJyFoq6+7a927Mlpw==
+DE7pZV0HcrLKhakr+gkrN3dpNn/X0gcbzugLgdzRhePMRBywog9RW/03uMLuMSSK
 DE7pZV0HcrLCgeHeyn5s2siEkif5w7Ir/q8HAwDYbMw=
 DE7pZV0HcrLc97BEhzokHsiEkif5w7Ir/q8HAwDYbMw=
 TsPvcv3gnZGam9uNjHoBaciEkif5w7Ir/q8HAwDYbMw=
@@ -1131,8 +1135,8 @@ zXN7UFWz47HoX5ogCp3IMxpzF5Gu8W7EOzlGHiOiroWvsFqAZYBWaQ==
 zXN7UFWz47Gy4XKjvUG7z8nmMCUIf53k45dd68uAvZ5KJMpraXADvNXgp+T/6zES
 zXN7UFWz47G0bnYiJzmfSmzpVYz0Oos0OzlGHiOiroWvsFqAZYBWaQ==
 zXN7UFWz47EAve+ENpJj1KR643W73aKxOzlGHiOiroWvsFqAZYBWaQ==
-zXN7UFWz47H/WExCskdiAaOkV7tb9ZLIOzlGHiOiroWvsFqAZYBWaQ==
 zXN7UFWz47HlRy4DpsaxvODcs5iWqdNrOzlGHiOiroWvsFqAZYBWaQ==
+c6UNY9U1NIxLCbY6i7uQFUbOhetaraOrX22hixRRRBw=
 c6UNY9U1NIzLfS5PGDbBIBn/KOr4MFjmZ5WjJulMlEE=
 mAvmI45vfiUgCk21iG9YI/9rOaHJgBfaZbG8KUhskwQ=
 mAvmI45vfiWFkT5//VK/v/mOhHKu3dkEOq4FtKDlq5o=
@@ -1605,7 +1609,6 @@ v4S90bmdTGEqqFf1kGpzN8nSS7FPKNfzXDYoCuF77rs=
 oVV0uxz5T6y55ASlhs7XEcnSS7FPKNfzXDYoCuF77rs=
 qMmIl10EAb1CFGckIRfCZsjtr3b8oYw0WhnOLHtIOY0i6GsYqOa/eQ==
 LDHmY9CxF4eW4vUEgc/vjFzxfdkNX2ptoLlg4+4TkY1k4OSyGWe7y8X7M3NIrxfraiEsqO85sLgzwSWeiYa9dQ==
-LDHmY9CxF4dKOE6iQRaAJflCXsrUxt4QjsdC1Mc5OVTtnQlJXK6cH4Z6/gBieh+YlIVvKeMLJ0I=
 LDHmY9CxF4dKOE6iQRaAJT7v9621ficr3vqLUDNT+hHtnQlJXK6cH4Z6/gBieh+YlIVvKeMLJ0I=
 LDHmY9CxF4e75xBJQ3AG3oCe63E/36Nv32kQDgX44Ia5IbscCkv6s0S6FHPwV2d6
 LDHmY9CxF4fngQF+zzgjMZlPZ5BQfWy73f5xFOgEkWTZ1uHgrtlIM701Dw5DM3Rm90Ibhkol18s=
@@ -1614,8 +1617,7 @@ m77dxTVVhn4O6Ui9EMM/o2EkMSGTUhwrWhnOLHtIOY1krJSJ7APvHQ==
 m77dxTVVhn5hnlf3TZ2VZ38rd04/4iO9elNT+u7Lv/XHwnOh4QrnrUpgEZ36UZf7
 m77dxTVVhn5Ho+tBb+yEizp+TuIAHelCvO/temg+9b8=
 uEm+zGdzejuZnF6DuRckiW27nvnjqQYwZUGUrM6EFsZarS3OPHmNlBkDFDEF5nqI
-RjlHunEZKP0T7ne662LsTqsq5P4L6Ap+/FRS7OcKkCw=
-sBysSN0ZvslTUXjkstSdxwFsDcrhWfuKRU5Mh2Bgbd9KYBGd+lGX+w==
+RjlHunEZKP0T7ne662LsTqsq5P4L6Ap+opMZnluIsotarS3OPHmNlEHRol16I3CH
 mrQsLarKLn8dtC61mpQwxA==
 f0IIhtVP0tY9EtcS5qy2rk+0HfgbM42i32kQDgX44Iay2eWiR3A3rg==
 f0IIhtVP0tbpAUXaWJzMP0mKQQuQ8uypkXS2vYCMEIY=
@@ -1629,6 +1631,7 @@ GqgQYD9jhd9GsAqNnhnTUCYCdMy0fzycBiNf+1YVhVY=
 TPzd3BzerlfCVxlH59kChzTSbCqtQEGVkXS2vYCMEIY=
 vGTRMHlT7dV9d0NcKHMd9TgDx8qs11DG
 uml7dAHhhPhNM37bA6HHygFsDcrhWfuKNAbK+74+adtKYBGd+lGX+w==
+QY8HRySr7Iy5CqOxz3xfQcX7M3NIrxfraiEsqO85sLgzwSWeiYa9dQ==
 7hHMOqKQxsvvI7KZPcwmeZ7M7HpG/M39Zd6ek3iMCyaxIP2O2HY0XUpgEZ36UZf7
 7hHMOqKQxsvvI7KZPcwmeWuYgh2L+C3ENFhro0sIwFyxIP2O2HY0XUpgEZ36UZf7
 iFgq+tSfQTMRR9DGg7KxUilV5SNKcpiRAGxaLY4tP2M=
@@ -2496,7 +2499,7 @@ ZspN/3MJNpJZx1DpPOremjp+TuIAHelCaiEsqO85sLgSnOIeWsmaHQ==
 55V35mSjwlj2cOP5apS8VPRhA8SKpu0P9nDj+WqUvFRVbsQwmcaDOg==
 NjzNjq0emHQgxpjuFWIItG9jx6N5wpQIEWtLgLSKG1oN3sJIAtQssOzSwRJA5gyR
 Ea1wKP55wIBBJxgp/V0FUwnnShbg2FDRaiEsqO85sLgSnOIeWsmaHQ==
-Ea1wKP55wIBBJxgp/V0FU297gaKon4FFTc6/D30UodbtnQlJXK6cH2W1DC/mabkHlIVvKeMLJ0I=
+Ea1wKP55wIBBJxgp/V0FU6DW6dHQYMgNGjrxeeuUyTuK+g6d0LtZ41qtLc48eY2UoykPuw5Y1yE=
 Ea1wKP55wICWHeBoZP38uKSYYgTEh/zVaiEsqO85sLgSnOIeWsmaHQ==
 3ILtAGjsNbUKCbcqBRzYaUbfByG6Sttm6DCQ5I5nj7OCEtjaxV2lFK4eWYTrjK6T
 IB1wf95Xp8sgxpjuFWIItG9jx6N5wpQIEWtLgLSKG1oN3sJIAtQssOzSwRJA5gyR
@@ -2543,7 +2546,6 @@ u+9GWDpvSUqtz9d56rUlCsI503QdVi5x
 pRQvSG4swx7zVD2h4Xnk1g==
 am6mi0e3+dmx5mhrEdvgkf9FTLqPUs8T/FRS7OcKkCw=
 FebRcAE/fk8SCUHQ1MyLLGxWr5eq5YxoZ5WjJulMlEE=
-41X1gwjKRwwXjmg6MsH1sw==
 DY+6ucn6TAR3qBA82Nzce0OOPTE6p5v3
 mQ4O3AWciylg+x0Gyby/lLPvFObbr4H8B451+nWReBM=
 kpvrQRk09gB4PQcWdvLH7PCz5+TnGEsBOV2H9bjVtYg=
@@ -2735,7 +2737,7 @@ GalX2/0vwo9uOnW1bzza2qrHk0o9byPJ+CLPmA1ccPY=
 GalX2/0vwo9sFPLTXAGE/6rHk0o9byPJ+CLPmA1ccPY=
 GalX2/0vwo89T0iNr/Nlm6rHk0o9byPJ+CLPmA1ccPY=
 GalX2/0vwo/n5XbWi7jZqbOcQT2OD2AF/A5dhyaRZVhi3+/2fC3N6Q==
-GalX2/0vwo/8AfzlRMsKDarHk0o9byPJEWuex5tQIeJpDpjDkTP7ZAYjX/tWFYVW
+GalX2/0vwo/8AfzlRMsKDarHk0o9byPJEWuex5tQIeJpDpjDkTP7ZHAVGwy9HPD1g6OlF05hia0GI1/7VhWFVg==
 a2uLSW9rkL3JiovBgBMua49k8+1pbbzC1DJL0Z/lW/Ni3+/2fC3N6Q==
 QUV0SLvhn8MUz5rS2cIO6/uJd3DpNPxvB451+nWReBM=
 fAvCqq32iRFPoQXPGPcW6PO3JEuPMZi4A1p8C3jFxs8=
@@ -2795,7 +2797,6 @@ Szylny1Qdtknt9jrntyzWv2wj6PFLTE7HtVCuogTSCQ=
 7ddpONXhUU44r2XHT1h+EtCCOj3EdQDzZr388ZVzhrxgQzinC9H3vwFsDcrhWfuKh/UqQ9KfOqtKYBGd+lGX+w==
 7ddpONXhUU7BF1wFgXRfytMKqWf6sSQ+DMAfuYJorwSv1S9QGLoyL1qtLc48eY2UoykPuw5Y1yE=
 7ddpONXhUU7BF1wFgXRfytMKqWf6sSQ+gZVzPql2LOGK+g6d0LtZ41qtLc48eY2UoykPuw5Y1yE=
-7ddpONXhUU5s3AGUI6Ug28PZO4GQHK2ATc6/D30UodbtnQlJXK6cH2W1DC/mabkHlIVvKeMLJ0I=
 qJ7cJsG6c/pq0Dl6YtH6bveaDsku/xJJORIlBfs4mLH9n1UW9E7fjXZxll+rG9XW
 qJ7cJsG6c/oLq5HPlw5bfj+3uaK0iz9swC30arIp5iti3+/2fC3N6Q==
 qJ7cJsG6c/odPBI4rIFvVCBRqK3ZiJDzwC30arIp5iti3+/2fC3N6Q==
@@ -2843,7 +2844,6 @@ kmzMoPyp7CCHdWnUtHeRVA==
 obAq2Bngawb4kC/8bj+03TgDx8qs11DG
 c2nhc0EQGOvOGusLuQWkxw==
 s8qsgMb4stA8Ycq7rVC17sgwbO+5tzBXtVS5dZ9BXyE=
-Zh/FB6c5Xm8qqFf1kGpzN8RM58B9KL9J+CLPmA1ccPY=
 rmxr1ubN35M7iNWAuDeeYm/m2yvtUWCRselO3ocz+bYC7U8mFxV2SXZxll+rG9XW
 rmxr1ubN35PDe7j1GWWabq5sa9bmzd+T3AxjFmvhwpI=
 TmdrJ+Pzm7ENmUZ9VlmQr89jiTnzF7ksB451+nWReBM=
@@ -2862,7 +2862,7 @@ KBselXcWfIBX/QfsZiKIzg==
 faTyt4eJKJJkAAsZ14pt/o2WG921W9LEOxgqIHpj3G0=
 zh+yxNdjBUdQBAbMQVNFDFdpciLROtC5n777VwNyqoE=
 ptlalxjKqk41Xk8fp0jcVYGTx2c1ExnYtVS5dZ9BXyE=
-ptlalxjKqk5QgdPGLTCW/dlJZasWCk30XDYoCuF77rs=
+ptlalxjKqk6+HtUt9TJUNWGP/cEmAB0oY4+qAzC0UbI=
 ptlalxjKqk5NUH/IXgtKAMXWaX4xPIY9tVS5dZ9BXyE=
 ptlalxjKqk6xXWaLRG0elRcbmJXzE09CTal85oaGlrti3+/2fC3N6Q==
 IHPdczs3Cv0OjiFZCMQIH4KBWdL/M3D3
@@ -2890,7 +2890,6 @@ B9tE3Kd1HKN2FVEYjB7Q8zgDx8qs11DG
 HVgT/PXpLc+R06ESwVfRnQ==
 kN0EnnpUXEauMNy/T/q5+UpgEZ36UZf7
 rMdqrVZv7EsrfhEt8nTZ9g==
-EhCx9/kQWHypJdZnlbHOk8qtUJ0mpJv3
 D+tfdLhKUGV1u7w/2lfuJKf/VajdNg2L
 D+tfdLhKUGWxGJy16gqo1qf/VajdNg2L
 WH5Yk+VVQ9S4tr0LQSjdmMqtUJ0mpJv3
@@ -2898,7 +2897,7 @@ ROtHs56FpZupJdZnlbHOk8qtUJ0mpJv3
 4olpCXCqvMQMjYluMc8k48qtUJ0mpJv3
 CsDKBKvWfT5bbRy49IYTt8qtUJ0mpJv3
 yBAlgt+1O12PH9XTov2LFMqtUJ0mpJv3
-OWXgXBuFsmYeCfyilvvtHkpgEZ36UZf7
+dMBKQ3aABJ2FTWp79QZZVMqtUJ0mpJv3
 ERbXbxZvj9zbPmlRtahxul9slLa3kKSRiy48LWiKVlE=
 ERbXbxZvj9wK/j8CZZyQGl9slLa3kKSRiy48LWiKVlE=
 VWEz/9FsuzEOV4V3OQ7U5F9slLa3kKSRiy48LWiKVlE=
@@ -3009,6 +3008,7 @@ x8MaX0B3GFmqtlk8nbR2qJn4SyFflNOmGjFhHUGm/IA=
 6oVo0vCUNv3Bu+cSyH2HAC4WoEf83C4cXDYoCuF77rs=
 OW2PVrqNbgtIkRc7oSI9s0XScPMdSYlCtVS5dZ9BXyE=
 5i4S6xm9ScocTScttLEkfMjPdsjefYU+
+5i4S6xm9ScpjxjNESTRTkgQxDfEL/YzVxwl32gyzwrQ=
 rJXrTUmEFUPn78xBmNscahmRgVNuI2GuYt/v9nwtzek=
 4Wm5lBS7Thv8gJz2P9UQBg==
 6FwhU9m4jqmjLlw6uBV9GLZIOoXt8dTAPLDEeB+9LFJnZ1Nzu4rNnKViuayj36sW
@@ -3270,10 +3270,10 @@ vomimJs1Aibe5wYCz9PrCh0AR02N0qTHryKysOD+KUY=
 +b+6rnoi2dkBQ0h9VhmZSD0mrk6zJM28zVnxxIiOuRT+FtqJrdCkOw==
 0pexNpZpFWDm0K2JjRXkUzNuWWI8ZP1NNh5ihIkuBBJKYBGd+lGX+w==
 +toNUZ4f1KG9JGYzuKLI59n1BKQUj3AWn09jHm9FQhU=
-g0zbV1jZvRHKRJ3IiEO6X7LstxGRiX2nDSpMu2eqnX/e09AdZ5BMWfnKC8TK+XUUqlng+sByJCU=
-g0zbV1jZvRFuLpWa4R/pTkK1awf8ITj2DSpMu2eqnX/e09AdZ5BMWfnKC8TK+XUUqlng+sByJCU=
 g0zbV1jZvRENHGz3kc9A6oNM21dY2b0RHLgX7Lhlduk=
 g0zbV1jZvRGBkDItw8pFSoNM21dY2b0RHp+yc9QUjFs=
+vCS9SFBmTxcsF+dG3U5MNK+OyYuJd1WOlrlUg9+v96R3Zc88T6l0hf03uMLuMSSK
+vCS9SFBmTxedsb1tHLoW6K+OyYuJd1WOlrlUg9+v96R3Zc88T6l0hf03uMLuMSSK
 0+IZW+rlen6qkF+7sPRjIDgDx8qs11DG
 mcUbAzct6ncGu3nnzhB7hdCqQrHAG8I6B451+nWReBM=
 su18MMk2rGrHOj3N5N1iQ+yaj8gg7xtQ0Zi/2VsQQhM=
@@ -3365,6 +3365,7 @@ ApmEtMU6smLNX4W7dyv/XAKZhLTFOrJiHMmb9N6xqeI=
 ApmEtMU6smJ4hVm67r0IlqbJ+Q9zv3x5
 jGLfUEE7my1VxrcyS3cww0pgEZ36UZf7
 tdhjaYqFLpRvpRnhbNnBn9N3c0C21SQw0Zi/2VsQQhM=
+A+tVGkWZYiAGCG6QjKDBHGswxPflqwizuQ0hTNbmMnpi3+/2fC3N6Q==
 Z6FI9NC0FvctIG9JYVnk3w==
 hX4JO4ilY+tPEDK2aByXN0bOhetaraOrX22hixRRRBw=
 gOZLe1O7dFShaC9nU4SYCEbOhetaraOrX22hixRRRBw=
@@ -3496,7 +3497,6 @@ X7f5/6c1hQf8kd36tO7FgtcFxgex5lEzpRG3N3i4WePE/N/uZLD4yA==
 wm6ORELi8z2oxXsnTPJBjrMihk1tLAqJ
 sM1X3RNjByMGtBZOKbd/ZChngpsINtgrkBugv1NZm7as5XdJU/RcI7dI+gjZkw2N29PyhLKx2/M=
 xPhLahM0n3/qQFELmxnh1mquLhZ26bbE/PzdaZzvK2pKYBGd+lGX+w==
-4lFXezpkIl+j6Ve8sY3ZKmPArgiGN+TtvgJU7rpjpfE=
 8bdFZ5unPvepYj5/A+CA92PArgiGN+TtvgJU7rpjpfE=
 P2Wg2UfPUZ1L3sXFrmYMBGPArgiGN+TtvgJU7rpjpfE=
 TaRySKU+9i96WKC1tMJp4mPArgiGN+TtvgJU7rpjpfE=
@@ -3505,7 +3505,7 @@ wWyLX1EHEoc58udD8OiJdK0G8MKTcaR11GWarSrUmUgxApjckYqcxEpgEZ36UZf7
 i0dcHtftlVRZi1jad0SKTq1Inu+nAuxWav3bY6gAyDY=
 4CgPGy6SSwn+zBnaEjEHVORQWMhHBjWpB451+nWReBM=
 V8WmK2BLIYoZp9TFNq5Lc3gQVABcyQZYy4x6AQXguls=
-2dplvxJbc3ij6Ve8sY3ZKlp1/J0SIsNSZbG8KUhskwQ=
+2dplvxJbc3ij6Ve8sY3ZKlp1/J0SIsNSk/NcqOK16kCPFwAHcTU48w==
 HJH2CTxTjyKpYj5/A+CA916zwkV6JkCPI9MUVCsia+g=
 0uUyu0EpSXhL3sXFrmYMBP0YtuuI9KIBw29zoqutRRY=
 Eohqgk6k638nWoz0XxR091so5NQaFgHckG57ceWMY4U=
@@ -3529,6 +3529,7 @@ XsRueZvhAyrwfBDgr/gHmwcxszz/nuIIRnQWRwFW37q6+7a927Mlpw==
 XsRueZvhAypJey7tBOLHsC7xMJd4TR16RnQWRwFW37q6+7a927Mlpw==
 ueWzwnpHs3Ysu9VBkLGKtomNQ8mcKCxKI7yCxnTScjzxMWtT7kk4uA==
 Az2U7M6QU8fOwC3N6OckJzgDx8qs11DG
+sGclmiZTHKquJDbDkUxjoJmM9vpTJNSm/q8HAwDYbMw=
 rxOQlNRkqxQM0VNQkwpPrt/DnmnQA+7SB451+nWReBM=
 MJI1yWv8v5pHhboU5dN6AIP9fJ9Imz4IB451+nWReBM=
 bUAnOK8eAaGWeDdwRTBpSemoofYVr0mL9YQ8RM5gOiY=
@@ -3551,7 +3552,6 @@ qgKo9TnGwm8luM2Oe2mKmFjLajL1b5kzLKfEtSxDdD2vsFqAZYBWaQ==
 qgKo9TnGwm8luM2Oe2mKmJ/JLfUaDh8OLKfEtSxDdD2vsFqAZYBWaQ==
 qgKo9TnGwm/pSgcoVE4Lbab0TFIDFrR5LKfEtSxDdD2vsFqAZYBWaQ==
 qgKo9TnGwm/pSgcoVE4LbXVZsMFBY4gmLKfEtSxDdD2vsFqAZYBWaQ==
-qgKo9TnGwm/pSgcoVE4LbaV9mVRnwCQSLKfEtSxDdD2vsFqAZYBWaQ==
 LQ4RQ5c6TvGHAG+z/AJsu9CqQrHAG8I6B451+nWReBM=
 cc5DUa/vIO20bnYiJzmfSr037Tf7S7C0/2mxBEfNQnM=
 t6w+ISmiDJIvB77laEou908j7PTf9QOxiy48LWiKVlE=

文件差異過大導致無法顯示
+ 369 - 391
nlp/src/main/resources/synonym.dict


文件差異過大導致無法顯示
+ 873 - 381
nlp/src/main/resources/tc.dict


+ 48 - 0
push-web/src/main/java/org/diagbot/push/controller/CacheFileManagerController.java

@@ -0,0 +1,48 @@
+package org.diagbot.push.controller;
+
+import org.diagbot.bigdata.common.ApplicationCacheUtil;
+import org.diagbot.common.push.cache.CacheFileManager;
+import org.diagbot.common.work.ResponseData;
+import org.diagbot.graph.util.CacheUtil;
+import org.diagbot.nlp.util.NlpCache;
+import org.diagbot.pub.api.Response;
+import org.diagbot.pub.web.BaseController;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * Created by louhr on 2019/8/16.
+ */
+@Controller
+@RequestMapping("/cache_file_manager")
+public class CacheFileManagerController extends BaseController {
+
+    @RequestMapping(value = "/create_file")
+    @ResponseBody
+    public Response<ResponseData> create(HttpServletRequest request) throws Exception {
+        Response<ResponseData> response = new Response<ResponseData>();
+        CacheFileManager cacheFileManager = new CacheFileManager();
+        cacheFileManager.createCacheFile();
+        //自然语言处理缓存更新
+        NlpCache.createSegmentCache();
+        NlpCache.createPushCache();
+        NlpCache.createClassifyCache();
+        NlpCache.createChronicCache();
+        NlpCache.createPropertyPairCache();
+        //更新图谱缓存
+        CacheUtil.createDiagSortCache();
+        CacheUtil.createSexAgeCache();
+        CacheUtil.createVitalCache();
+        CacheUtil.createDiagClassifyCache();
+        CacheUtil.createDiagClassifyJiCache();
+        CacheUtil.createDiagDepartCache();
+        //更新大数据缓存
+        ApplicationCacheUtil.createDoc_result_mapping_diag_map();
+        ApplicationCacheUtil.createDoc_result_mapping_filter_map();
+        ApplicationCacheUtil.createKl_result_mapping_standword_map();
+        return response;
+    }
+}

+ 16 - 0
push-web/src/main/java/org/diagbot/push/controller/ParticipleController.java

@@ -1,8 +1,13 @@
 package org.diagbot.push.controller;
 
+import org.diagbot.nlp.participle.ParticipleUtil;
+import org.diagbot.pub.api.Response;
 import org.diagbot.pub.web.BaseController;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.io.IOException;
 
 @Controller
 @RequestMapping("/participle")
@@ -14,4 +19,15 @@ public class ParticipleController extends BaseController {
     public String index() {
         return listView;
     }
+
+    @ResponseBody
+    @RequestMapping("/split_and_highlight")
+    public Response splitAndHighlight(String content) throws IOException {
+        Response response = new Response();
+        long start = System.currentTimeMillis();
+        response.setData(ParticipleUtil.participleAndHighlight(content));
+        long end = System.currentTimeMillis();
+        System.out.println("总耗时:........." + (end - start));
+        return response;
+    }
 }

+ 19 - 0
push-web/src/main/java/org/diagbot/push/controller/RelationController.java

@@ -1,8 +1,14 @@
 package org.diagbot.push.controller;
 
+import org.diagbot.nlp.relation.analyze.StructureAnalyze;
+import org.diagbot.nlp.relation.util.OutputInfo;
+import org.diagbot.pub.api.Response;
 import org.diagbot.pub.web.BaseController;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
 
 /**
  * @ClassName org.diagbot.push.controller.RelationController
@@ -26,4 +32,17 @@ public class RelationController extends BaseController {
     public String list() {
         return "/pages/label/list.html";
     }
+
+    @RequestMapping({"/extraction"})
+    @ResponseBody
+    public Response extraction(String content) throws Exception {
+        Response response = new Response();
+        response.start();
+//        RelationAnalyze relationAnalyze = new RelationAnalyze();
+//        List<OutputInfo> outputInfos = relationAnalyze.analyze(content, FeatureType.parse("1"));
+        StructureAnalyze structureAnalyze = new StructureAnalyze();
+        List<OutputInfo> outputInfos = structureAnalyze.extract(content);
+        response.setData(outputInfos);
+        return response;
+    }
 }

+ 6 - 6
push-web/src/main/resources/static/pages/algorithm/list.html

@@ -396,15 +396,15 @@
             $('#diag_list').html("");
             $('#before_combine_diag_list').html("");
             startDiag('/algorithm/page_neural', '#symptom_list', '1', resourceType, '111', '1');
-            startDiag('/algorithm/page_neural', '#vital_list', '3', resourceType, '131', '3');
-            startDiag('/algorithm/page_neural', '#lis_list', '4', resourceType, '141', '4');
-            startDiag('/algorithm/page_neural', '#pacs_list', '5', resourceType, '151', '5');
+            startDiag('/algorithm/page_neural', '#vital_list', '3,2,7', resourceType, '131', '3');
+            startDiag('/algorithm/page_neural', '#lis_list', '4,2,7', resourceType, '141', '4');
+            startDiag('/algorithm/page_neural', '#pacs_list', '5,2,7', resourceType, '151', '5');
 
         } else {
             startDiag('/algorithm/page_neural', '#symptom_list', '1', resourceType, '11', '1');
-            startDiag('/algorithm/page_neural', '#vital_list', '3', resourceType, '31', '3');
-            startDiag('/algorithm/page_neural', '#lis_list', '4', resourceType, '41', '4');
-            startDiag('/algorithm/page_neural', '#pacs_list', '5', resourceType, '51', '5');
+            startDiag('/algorithm/page_neural', '#vital_list', '3,2,7', resourceType, '31', '3');
+            startDiag('/algorithm/page_neural', '#lis_list', '4,2,7', resourceType, '41', '4');
+            startDiag('/algorithm/page_neural', '#pacs_list', '5,2,7', resourceType, '51', '5');
 
             startDiagMapping('/algorithm/page_neural', '#diag_list', '2', resourceType, '21', '2');
             startDiagMapping('/algorithm/page_neural', '#before_combine_diag_list', '2', resourceType, '21', '6');

+ 2 - 2
push-web/src/main/resources/static/pages/relation/sample.html

@@ -343,7 +343,7 @@
                 function _ajax(url) {
                     $.support.cors = true;
                     $.ajax({
-                        url: nlp_web_url + '/participle/split_and_highlight',
+                        url: push_web_url + '/participle/split_and_highlight',
                         data: $("#participle_form").serialize(),
                         dataType: "json",
                         type: "post",
@@ -353,7 +353,7 @@
                     });
 
                     $.ajax({
-                        url: nlp_web_url + url,
+                        url: push_web_url + url,
                         data: $("#participle_form").serialize(),
                         dataType: "json",
                         type: "post",