Exemple #1
0
 //The following two functions are written by Shi Qiao on loading the database to memory and run the query.
 private List <Dictionary <int, string> > RunQuery(Dictionary <int, string> vertexLabel, List <GBE.Core.EdgeID> edgeLabel, string dbname)
 {
     try{
         //run query function.
         loadDatabase(dbname);
         DataTable queryGraph = new DataTable();
         queryGraph.Columns.Add("ID1", typeof(int));
         queryGraph.Columns.Add("Node1", typeof(string));
         queryGraph.Columns.Add("ID2", typeof(int));
         queryGraph.Columns.Add("Node2", typeof(string));
         foreach (GBE.Core.EdgeID a in edgeLabel)
         {
             queryGraph.Rows.Add(a.ID1, vertexLabel[a.ID1], a.ID2, vertexLabel[a.ID2]);
         }
         Dictionary <string, List <int> > intervalForString = intervalString.intervalStringGeneration(vertexLabel, VertexIDLabel.database);
         List <Dictionary <int, int> >    resultsID         = new List <Dictionary <int, int> >();
         resultsID = GBEBasedOnOneLevelTreeForThreeHops.componentMatchingResult(queryGraph, vertexLabel, VertexIDLabel.database, VertexIDLabel.NBindex, intervalForString);
         List <Dictionary <int, string> > resultsString = new List <Dictionary <int, string> >();
         Dictionary <int, string>         labelID       = new Dictionary <int, string>();
         foreach (Dictionary <int, int> result in resultsID)
         {
             Dictionary <int, string> resultStringTemp = new Dictionary <int, string>();
             foreach (KeyValuePair <int, int> pair in result)
             {
                 if (labelID.ContainsKey(pair.Value))
                 {
                     resultStringTemp.Add(pair.Key, labelID[pair.Value]);
                 }
                 else
                 {
                     DataRow[] label      = VertexIDLabel.database.Select("px= " + pair.Value);
                     string    labelForID = null;
                     foreach (DataRow row in label)
                     {
                         labelForID = (string)row["Node"];
                     }
                     resultStringTemp.Add(pair.Key, labelForID);
                     labelID.Add(pair.Value, labelForID);
                 }
             }
             resultsString.Add(resultStringTemp);
         }
         return(resultsString);
     }catch (Exception e) {
         return(null);
     }
 }