Mercurial > hg > Members > nobuyasu > TestNeo4j
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 } |