2016-10-14 68 views
-2

我嘗試通過java控制檯打印查詢,但沒有出現。這是我的代碼有人可以幫助我。 我是OrientDB的新手,我只是在學習。 我需要的查詢是知道兩個節點之間的最短路徑並在Java控制檯上打印此查詢。它不給我任何錯誤,但沒有出現。OrientDB中的查詢

public class Graph { 
    private static final String DB_PATH = "C:/OrientDataBase/shortest_path"; 
    static OrientGraphNoTx DBGraph; 
    static OrientGraphFactory factory; 

public static void main(String[] args) { 
     factory = new OrientGraphFactory("plocal:"+DB_PATH); 
     DBGraph = factory.getNoTx(); 
     HashMap<String, Vertex> nodes = new HashMap<String, Vertex>(); 

    for(int i = 0; i <= 1000; i++) 
    { 
     Vertex v = DBGraph.addVertex("class:V"); 
     v.setProperty("vertexID", i+""); 
     nodes.put(i+"", v); 
    } 


    try(BufferedReader br = new BufferedReader(new FileReader("C:/OrientDataBase/sp1.csv"))) { 
     int i=0; 
     for(String line; (line = br.readLine()) !=null ;) { 
      if(i==0){ 
       i++; 
      } 
      else{ 
      String[] vertices = line.split(","); 
      String vertex1 = vertices[0]; 
      String vertex2 = vertices[1]; 
      String weight= vertices[2]; 
      vertex2 = vertex2.replaceAll(" ", ""); 

      Vertex v1 = nodes.get(vertex1); 
      Vertex v2 = nodes.get(vertex2); 


      Edge eLives = DBGraph.addEdge(null, v1, v2, "belongs"); 
      eLives.setProperty("weight", weight); 
      System.out.println(v1+","+v2+","+weight); 

      String query = "select expand(shortestPath) from (select shortestPath(#10:0,#10:2,BOTH))"; 

      Iterable<OrientVertex> res = DBGraph.command(new OCommandSQL(query)).execute(); 

      while(res.iterator().hasNext()){ 
      OrientVertex v = res.iterator().next(); 
      System.out.println("rid: "+v.getId().toString()+"\tn:"+v.getProperty("n")); 
      } 

      } 
     } 

    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 



} 
} 
+0

請不要破壞你的帖子。請注意,一旦您向本網站發佈問題或回答,這些帖子就成爲其他人對此內容作出貢獻的集體努力的一部分。除非在特殊情況下,否則不應刪除對他人有用的帖子。即使這篇文章對原作者不再有用,這些信息仍然有益於其他將來可能遇到類似問題的人 - 這是Stack Exchange的基本哲學。 – Matt

回答

2

我想你的代碼,你必須把蜱當你做這樣的查詢,就變成:

String query = "select expand(shortestPath) from (select shortestPath(#10:0,#10:2,'BOTH'))"; 

enter image description here

我用這個csv文件。

enter image description here

希望它有幫助。

Regards