Mercurial > hg > Members > nobuyasu > TPPageRank
comparison src/pagerank/TPReadWikiLink.java @ 6:8ea2212eaee0 draft
add TPReadWikiLink.java
author | one |
---|---|
date | Wed, 05 Sep 2012 15:39:26 +0900 |
parents | |
children | c7b139ff27e2 |
comparison
equal
deleted
inserted
replaced
5:140272228818 | 6:8ea2212eaee0 |
---|---|
1 package pagerank; | |
2 | |
3 import java.io.BufferedReader; | |
4 import java.io.File; | |
5 import java.io.FileInputStream; | |
6 import java.io.FileNotFoundException; | |
7 import java.io.FileOutputStream; | |
8 import java.io.IOException; | |
9 import java.io.InputStreamReader; | |
10 import java.util.ArrayList; | |
11 import java.util.Collections; | |
12 import java.util.Comparator; | |
13 import java.util.HashMap; | |
14 import java.util.LinkedList; | |
15 | |
16 import com.tinkerpop.blueprints.Graph; | |
17 import com.tinkerpop.blueprints.Vertex; | |
18 import com.tinkerpop.blueprints.impls.tg.TinkerGraph; | |
19 import com.tinkerpop.blueprints.util.io.graphml.GraphMLReader; | |
20 import com.tinkerpop.blueprints.util.io.graphml.GraphMLWriter; | |
21 | |
22 import pagerank.WikiPage; | |
23 | |
24 public class TPReadWikiLink { | |
25 | |
26 public static void main(String[] args) { | |
27 | |
28 final String fileDB = "./resources/tinkerpopDB"; | |
29 | |
30 | |
31 try { | |
32 Graph graph = new TinkerGraph(); | |
33 FileInputStream in = new FileInputStream(new File(fileDB)); | |
34 GraphMLReader.inputGraph(graph, in); | |
35 in.close(); | |
36 LinkToVertex ltv = new LinkToVertex(graph); | |
37 | |
38 final long AllVertexNumber = ltv.searchAllVertices(); | |
39 HashMap<String, WikiPage> wikiHash = ltv.getWikiPageHash(); | |
40 System.out.println("AllVertexNumber = "+AllVertexNumber); | |
41 | |
42 | |
43 for (Vertex v : graph.getVertices() ) { | |
44 String id = (String) v.getId(); | |
45 System.out.println("id:"+id+" title:"+v.getProperty("pageTitle")+" rank:"+v.getProperty("pageRank")); | |
46 } | |
47 /* | |
48 String nodeIds[] = {"1574", "2829", "2850", "3618"}; | |
49 writeComputeTransition(ltv, nodeIds, 30); | |
50 | |
51 FileOutputStream out = new FileOutputStream(new File(fileDB)); | |
52 GraphMLWriter.outputGraph(graph, out); | |
53 out.close(); | |
54 */ | |
55 | |
56 // loop(ltv); | |
57 | |
58 } catch (NumberFormatException e){ | |
59 System.out.println("Program exit"); | |
60 } catch (Exception e) { | |
61 e.printStackTrace(); | |
62 } finally { | |
63 | |
64 } | |
65 | |
66 } | |
67 | |
68 public static void loop(LinkToVertex ltv) throws IOException { | |
69 BufferedReader r = new BufferedReader( new InputStreamReader(System.in), 1); | |
70 System.out.print("\nPlease enter Node Id...>"); | |
71 System.out.flush(); | |
72 String s; | |
73 while ((s = r.readLine()) != null ) { | |
74 int nodeId = Integer.parseInt(s); | |
75 ltv.printVertexInfo(nodeId); | |
76 System.out.print("\nPlease enter Node Id...>"); | |
77 System.out.flush(); | |
78 } | |
79 } | |
80 | |
81 public static void writeComputeTransition(LinkToVertex ltv,final String nodeIds[], int count) throws IOException { | |
82 LinkedList<FileOutputStream> fosList = new LinkedList<FileOutputStream>(); | |
83 for (String i: nodeIds) { | |
84 String filename = "./resources/NodeId_"+i+".dat"; | |
85 FileOutputStream fos = null; | |
86 fos = new FileOutputStream(filename); | |
87 | |
88 Vertex v = ltv.getVertex(i); | |
89 fos.write( ("# Node ID "+i+" "+ (String)ltv.getPageTitle(v)).getBytes()); | |
90 fosList.add(fos); | |
91 } | |
92 | |
93 for (int i=0; i<count; i++) { | |
94 for (Vertex v : ltv.getAllVertices() ) { | |
95 ltv.computePageRank(v); | |
96 } | |
97 | |
98 for (int index=0; index<nodeIds.length; index++){ | |
99 FileOutputStream fos = fosList.get(index); | |
100 printPageRankLog(fos, ltv, nodeIds[index], i); | |
101 } | |
102 } | |
103 for (FileOutputStream fos: fosList) { | |
104 fos.close(); | |
105 } | |
106 | |
107 } | |
108 | |
109 // Write PageRank in descending order to fos. | |
110 public static void descendingOrder(HashMap<String, WikiPage> wikiHash , FileOutputStream fos) throws IOException { | |
111 ArrayList<WikiPage> list = new ArrayList<WikiPage>(); | |
112 for (String title : wikiHash.keySet()) { | |
113 WikiPage w = wikiHash.get(title); | |
114 list.add(w); | |
115 } | |
116 Collections.sort(list, new Comparator<WikiPage>(){ | |
117 public int compare(WikiPage w1, WikiPage w2) { | |
118 return (int)(w2.getRank()*Math.pow(10, 10)) - (int)(w1.getRank()*Math.pow(10,10)); | |
119 } | |
120 }); | |
121 | |
122 for (WikiPage w : list) { | |
123 w.printInfo(fos); | |
124 } | |
125 fos.close(); | |
126 | |
127 } | |
128 | |
129 public static void printPageRankLog(FileOutputStream fos, int x, double rank) throws IOException { | |
130 fos.write( (x+" "+ rank+"\n").getBytes() ); | |
131 fos.flush(); | |
132 } | |
133 | |
134 public static void printPageRankLog(FileOutputStream fos, LinkToVertex ltv, String nodeId, int x) throws IOException { | |
135 double rank = ltv.getPageRank(ltv.getNode(nodeId)); | |
136 fos.write( (x+" "+ rank+"\n").getBytes() ); | |
137 fos.flush(); | |
138 } | |
139 | |
140 } |