comparison src/wikigraph/LinkToNode.java @ 26:cfbab7d87188 draft

Page Rank in ascendiang order in ReadWikiLin.java
author one
date Fri, 31 Aug 2012 20:17:49 +0900
parents fbf0cf550b06
children 4c0b10bb5192
comparison
equal deleted inserted replaced
25:fbf0cf550b06 26:cfbab7d87188
12 import org.neo4j.graphdb.traversal.TraversalDescription; 12 import org.neo4j.graphdb.traversal.TraversalDescription;
13 import org.neo4j.graphdb.traversal.Traverser; 13 import org.neo4j.graphdb.traversal.Traverser;
14 import org.neo4j.kernel.Traversal; 14 import org.neo4j.kernel.Traversal;
15 import org.neo4j.tooling.GlobalGraphOperations; 15 import org.neo4j.tooling.GlobalGraphOperations;
16 16
17 import wikigraph.Neo4jTest.RelTypes;
18
19 public class LinkToNode { 17 public class LinkToNode {
20 18
21 GraphDatabaseService graphDb; 19 GraphDatabaseService graphDb;
22 GlobalGraphOperations graphOpe; 20 GlobalGraphOperations graphOpe;
23 21
115 } 113 }
116 114
117 long searchAllNodes() { 115 long searchAllNodes() {
118 AllNodeNumber = 0; 116 AllNodeNumber = 0;
119 for (Node n : graphOpe.getAllNodes()) { 117 for (Node n : graphOpe.getAllNodes()) {
120
121 n.setProperty(PAGE_RANK,(double)0.0);
122
123 if (n.hasProperty(PAGE_TITLE) || n.hasProperty(PAGE_RANK)) { 118 if (n.hasProperty(PAGE_TITLE) || n.hasProperty(PAGE_RANK)) {
124 WikiPage wiki = new WikiPage(n); 119 WikiPage wiki = new WikiPage(n);
125 pageIdTable.put((String) n.getProperty(PAGE_TITLE), n.getId()); 120 pageIdTable.put((String) n.getProperty(PAGE_TITLE), n.getId());
126 pageRankTable.put((String) n.getProperty(PAGE_TITLE), 121 pageRankTable.put((String) n.getProperty(PAGE_TITLE),
127 (Double) n.getProperty(PAGE_RANK)); 122 (Double) n.getProperty(PAGE_RANK));
128 wiki.setInLink(computeInHasLink(n)); 123 wiki.setInHasLink(computeInHasLink(n));
129 wiki.setOutLink(computeOutHasLink(n)); 124 wiki.setOutHasLink(computeOutHasLink(n));
130 wikiPageHash.put((String) n.getProperty(PAGE_TITLE), wiki); 125 wikiPageHash.put((String) n.getProperty(PAGE_TITLE), wiki);
131 AllNodeNumber++; 126 AllNodeNumber++;
132 } 127 }
133 } 128 }
134 return AllNodeNumber; 129 return AllNodeNumber;
139 if (n.hasProperty(PAGE_TITLE) || n.hasProperty(PAGE_RANK)) { 134 if (n.hasProperty(PAGE_TITLE) || n.hasProperty(PAGE_RANK)) {
140 WikiPage wiki = new WikiPage(n); 135 WikiPage wiki = new WikiPage(n);
141 pageIdTable.put((String) n.getProperty(PAGE_TITLE), n.getId()); 136 pageIdTable.put((String) n.getProperty(PAGE_TITLE), n.getId());
142 pageRankTable.put((String) n.getProperty(PAGE_TITLE), 137 pageRankTable.put((String) n.getProperty(PAGE_TITLE),
143 (Double) n.getProperty(PAGE_RANK)); 138 (Double) n.getProperty(PAGE_RANK));
144 wiki.setInLink(computeInHasLink(n)); 139 wiki.setInHasLink(computeInHasLink(n));
145 wiki.setOutLink(computeOutHasLink(n)); 140 wiki.setOutHasLink(computeOutHasLink(n));
146 wikiPageHash.put((String) n.getProperty(PAGE_TITLE), wiki); 141 wikiPageHash.put((String) n.getProperty(PAGE_TITLE), wiki);
147 AllNodeNumber++; 142 AllNodeNumber++;
148 } 143 }
149 } 144 }
150 145
212 count++; 207 count++;
213 } 208 }
214 return count; 209 return count;
215 } 210 }
216 211
217 public void searchHasLinkOut(final Node node) { 212 public void printOutHasLink(final Node node, int depth) {
218 int numberOfLinkPages = 0; 213 int numberOfLinkPages = 0;
219 String output = node.getProperty(PAGE_TITLE) + " have link pages:\n"; 214 String output = node.getProperty(PAGE_TITLE) + " outHasLink pages:";
215 System.out.println(output);
220 Traverser hasLinkTraverser = getOutHasLinkTraverser(node); 216 Traverser hasLinkTraverser = getOutHasLinkTraverser(node);
221 for (Path hasLinkPath : hasLinkTraverser) { 217 for (Path hasLinkPath : hasLinkTraverser) {
222 output += "At depth " + hasLinkPath.length() + " => " 218 if (depth < hasLinkPath.length()) break;
223 + hasLinkPath.endNode().getProperty(PAGE_TITLE) + "\n"; 219 String depthOutput = "At depth " + hasLinkPath.length() + " => "
220 + hasLinkPath.endNode().getProperty(PAGE_TITLE);
221 System.out.println(depthOutput);
224 numberOfLinkPages++; 222 numberOfLinkPages++;
225 } 223 }
226 output += "Number of link pages: " + numberOfLinkPages + "\n"; 224 String numOutput = "Number of link pages: " + numberOfLinkPages;
225 System.out.println(numOutput);
226 }
227
228 public void printInHasLink(final Node node, int depth) {
229 int numberOfLinkPages = 0;
230 String output = node.getProperty(PAGE_TITLE) + " inHasLink pages:";
227 System.out.println(output); 231 System.out.println(output);
232 Traverser hasLinkTraverser = getInHasLinkTraverser(node);
233 for (Path hasLinkPath : hasLinkTraverser) {
234 if (depth < hasLinkPath.length()) break;
235 String depthOutput = "At depth " + hasLinkPath.length() + " => "
236 + hasLinkPath.endNode().getProperty(PAGE_TITLE);
237 System.out.println(depthOutput);
238 numberOfLinkPages++;
239 }
240 String numOutput = "Number of link pages: " + numberOfLinkPages + "\n";
241 System.out.println(numOutput);
228 } 242 }
229 243
230 public double computePageRank(Node node) { 244 public double computePageRank(Node node) {
231 double sum = 0; 245 double sum = 0;
232 double pageRank = 0; 246 double pageRank = 0;
238 if (hasLinkPath.length() > 1) 252 if (hasLinkPath.length() > 1)
239 break; 253 break;
240 Node n = hasLinkPath.endNode(); 254 Node n = hasLinkPath.endNode();
241 sum += (Double) n.getProperty(PAGE_RANK); 255 sum += (Double) n.getProperty(PAGE_RANK);
242 } 256 }
243 if (wiki.getOutLink() == 0) { 257 if (wiki.getOutHasLink() == 0) {
244 pageRank = (double) ((double) 1 / AllNodeNumber * weight2); 258 pageRank = (double) ((double) 1 / AllNodeNumber * weight2);
245 } else { 259 } else {
246 pageRank = (double) ((double)sum / wiki.getOutLink() * weight1) 260 pageRank = (double) ((double)sum / wiki.getOutHasLink() * weight1)
247 + (double) ((double) 1 / AllNodeNumber * weight2); 261 + (double) ((double) 1 / AllNodeNumber * weight2);
248 } 262 }
249 263
250 wiki.setRank(pageRank); 264 wiki.setRank(pageRank);
251 node.setProperty(PAGE_RANK, pageRank); 265 node.setProperty(PAGE_RANK, pageRank);
252 return pageRank; 266 return pageRank;
253 } 267 }
268
269 public void printNodeInfo(int nodeId) {
270 Node node = graphDb.getNodeById(nodeId);
271 String title = getPageTitle(node);
272 double rank = getPageRank(node);
273 long inHasLink = computeInHasLink(node);
274 long outHasLink = computeOutHasLink(node);
275
276 System.out.println("id:"+nodeId+" title:"+title+" rank:"+rank);
277 System.out.println("inHasLink:"+inHasLink+" outHasLink:"+outHasLink);
278
279 printInHasLink(node, 1);
280 printOutHasLink(node, 1);
281
282 }
254 283
255 } 284 }