Browse Source

添加处理特征词是否能在图谱中找到

kongwz 6 years ago
parent
commit
131d60c680

+ 9 - 0
common-service/src/main/java/org/diagbot/common/work/ResponseData.java

@@ -18,6 +18,15 @@ public class ResponseData {
     private List<FeatureRate> history = new ArrayList<>(10);
     private List<FeatureRate> history = new ArrayList<>(10);
 
 
     private Map<String, Filnlly> treat = new HashMap<>();
     private Map<String, Filnlly> treat = new HashMap<>();
+    private List<FeatureRate> graphWords = new ArrayList<>(10);
+
+    public List<FeatureRate> getGraphWords() {
+        return graphWords;
+    }
+
+    public void setGraphWords(List<FeatureRate> graphWords) {
+        this.graphWords = graphWords;
+    }
 
 
     private Map<String, Map<String, String>> inputs = new HashMap<>(10,0.5f);
     private Map<String, Map<String, String>> inputs = new HashMap<>(10,0.5f);
 
 

+ 14 - 0
graph-web/src/main/java/org/diagbot/graphWeb/work/GraphCalculate.java

@@ -32,6 +32,19 @@ public class GraphCalculate {
             List<String> lisResult = neo4jAPI.AnalysisLISResult(jsonArray);
             List<String> lisResult = neo4jAPI.AnalysisLISResult(jsonArray);
             inputList.addAll(lisResult);
             inputList.addAll(lisResult);
         }
         }
+        //计算提出的词,是否在图谱中找到
+       List<String> grapWords = neo4jAPI.getGrapWords((String[]) inputList.toArray(new String[inputList.size()]));
+        List<FeatureRate> graphWordfeatureRates = new ArrayList<>();
+        if(grapWords.size()>0){
+            for (String word: grapWords ) {
+                FeatureRate featureRate = new FeatureRate();
+                featureRate.setFeatureName(word.replaceAll("\"",""));
+                featureRate.setExtraProperty("");
+                featureRate.setDesc("");
+                featureRate.setRate("");
+                graphWordfeatureRates.add(featureRate);
+            }
+        }
         //计算诊断
         //计算诊断
         Map<String, String> condition = neo4jAPI.getCondition((String[]) inputList.toArray(new String[inputList.size()]));
         Map<String, String> condition = neo4jAPI.getCondition((String[]) inputList.toArray(new String[inputList.size()]));
         List<FeatureRate> featureRates = new ArrayList<>();
         List<FeatureRate> featureRates = new ArrayList<>();
@@ -51,6 +64,7 @@ public class GraphCalculate {
             Map<String, Filnlly> mulDiseaseTreat = neo4jAPI.getMulDiseaseTreat_2(diag, String.join(",", inputList));
             Map<String, Filnlly> mulDiseaseTreat = neo4jAPI.getMulDiseaseTreat_2(diag, String.join(",", inputList));
             responseData.setTreat(mulDiseaseTreat);
             responseData.setTreat(mulDiseaseTreat);
         }
         }
+        responseData.setGraphWords(graphWordfeatureRates);
         responseData.setDis(featureRates);
         responseData.setDis(featureRates);
 //        response.setData(responseData);
 //        response.setData(responseData);
         responseData.setInputs(searchData.getInputs());
         responseData.setInputs(searchData.getInputs());

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

@@ -1382,4 +1382,33 @@ public class Neo4jAPI {
             driver.close();
             driver.close();
         }
         }
     }
     }
+
+    public List<String> getGrapWords(String[] keys) {
+        List<String> graphWordsList = new ArrayList<>();
+        ArrayList<String> fildList = new ArrayList<>();
+        //输出确诊集合
+        Set<String> quezhen = new HashSet<>();
+        for (String fild:keys) {
+            fildList.add("\""+fild.trim()+"\"");
+        }
+        Session session = null;
+        StatementResult result =null;
+        String query = "";
+        try {
+            session = driver.session(AccessMode.WRITE);
+            //判断是否有近义词
+            query="match(d) where d.name in "+fildList+" return distinct d.name as name";
+            result = session.run(query);
+            while (result.hasNext()){
+                Record next = result.next();
+                String word = next.get("name").toString();
+                graphWordsList.add(word);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            CloseSession(session);
+        }
+        return graphWordsList;
+    }
 }
 }