2016-10-14 69 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