# HG changeset patch # User one # Date 1346411869 -32400 # Node ID cfbab7d871881de3b9a672cc8b496c6e8da3d1ee # Parent fbf0cf550b069deea6fc55e178ae4789c1406111 Page Rank in ascendiang order in ReadWikiLin.java diff -r fbf0cf550b06 -r cfbab7d87188 src/wikigraph/LinkToNode.java --- a/src/wikigraph/LinkToNode.java Thu Aug 30 23:23:24 2012 +0900 +++ b/src/wikigraph/LinkToNode.java Fri Aug 31 20:17:49 2012 +0900 @@ -14,8 +14,6 @@ import org.neo4j.kernel.Traversal; import org.neo4j.tooling.GlobalGraphOperations; -import wikigraph.Neo4jTest.RelTypes; - public class LinkToNode { GraphDatabaseService graphDb; @@ -117,16 +115,13 @@ long searchAllNodes() { AllNodeNumber = 0; for (Node n : graphOpe.getAllNodes()) { - - n.setProperty(PAGE_RANK,(double)0.0); - if (n.hasProperty(PAGE_TITLE) || n.hasProperty(PAGE_RANK)) { WikiPage wiki = new WikiPage(n); pageIdTable.put((String) n.getProperty(PAGE_TITLE), n.getId()); pageRankTable.put((String) n.getProperty(PAGE_TITLE), (Double) n.getProperty(PAGE_RANK)); - wiki.setInLink(computeInHasLink(n)); - wiki.setOutLink(computeOutHasLink(n)); + wiki.setInHasLink(computeInHasLink(n)); + wiki.setOutHasLink(computeOutHasLink(n)); wikiPageHash.put((String) n.getProperty(PAGE_TITLE), wiki); AllNodeNumber++; } @@ -141,8 +136,8 @@ pageIdTable.put((String) n.getProperty(PAGE_TITLE), n.getId()); pageRankTable.put((String) n.getProperty(PAGE_TITLE), (Double) n.getProperty(PAGE_RANK)); - wiki.setInLink(computeInHasLink(n)); - wiki.setOutLink(computeOutHasLink(n)); + wiki.setInHasLink(computeInHasLink(n)); + wiki.setOutHasLink(computeOutHasLink(n)); wikiPageHash.put((String) n.getProperty(PAGE_TITLE), wiki); AllNodeNumber++; } @@ -214,17 +209,36 @@ return count; } - public void searchHasLinkOut(final Node node) { + public void printOutHasLink(final Node node, int depth) { int numberOfLinkPages = 0; - String output = node.getProperty(PAGE_TITLE) + " have link pages:\n"; + String output = node.getProperty(PAGE_TITLE) + " outHasLink pages:"; + System.out.println(output); Traverser hasLinkTraverser = getOutHasLinkTraverser(node); for (Path hasLinkPath : hasLinkTraverser) { - output += "At depth " + hasLinkPath.length() + " => " - + hasLinkPath.endNode().getProperty(PAGE_TITLE) + "\n"; + if (depth < hasLinkPath.length()) break; + String depthOutput = "At depth " + hasLinkPath.length() + " => " + + hasLinkPath.endNode().getProperty(PAGE_TITLE); + System.out.println(depthOutput); numberOfLinkPages++; } - output += "Number of link pages: " + numberOfLinkPages + "\n"; + String numOutput = "Number of link pages: " + numberOfLinkPages; + System.out.println(numOutput); + } + + public void printInHasLink(final Node node, int depth) { + int numberOfLinkPages = 0; + String output = node.getProperty(PAGE_TITLE) + " inHasLink pages:"; System.out.println(output); + Traverser hasLinkTraverser = getInHasLinkTraverser(node); + for (Path hasLinkPath : hasLinkTraverser) { + if (depth < hasLinkPath.length()) break; + String depthOutput = "At depth " + hasLinkPath.length() + " => " + + hasLinkPath.endNode().getProperty(PAGE_TITLE); + System.out.println(depthOutput); + numberOfLinkPages++; + } + String numOutput = "Number of link pages: " + numberOfLinkPages + "\n"; + System.out.println(numOutput); } public double computePageRank(Node node) { @@ -240,10 +254,10 @@ Node n = hasLinkPath.endNode(); sum += (Double) n.getProperty(PAGE_RANK); } - if (wiki.getOutLink() == 0) { + if (wiki.getOutHasLink() == 0) { pageRank = (double) ((double) 1 / AllNodeNumber * weight2); } else { - pageRank = (double) ((double)sum / wiki.getOutLink() * weight1) + pageRank = (double) ((double)sum / wiki.getOutHasLink() * weight1) + (double) ((double) 1 / AllNodeNumber * weight2); } @@ -251,5 +265,20 @@ node.setProperty(PAGE_RANK, pageRank); return pageRank; } + + public void printNodeInfo(int nodeId) { + Node node = graphDb.getNodeById(nodeId); + String title = getPageTitle(node); + double rank = getPageRank(node); + long inHasLink = computeInHasLink(node); + long outHasLink = computeOutHasLink(node); + + System.out.println("id:"+nodeId+" title:"+title+" rank:"+rank); + System.out.println("inHasLink:"+inHasLink+" outHasLink:"+outHasLink); + + printInHasLink(node, 1); + printOutHasLink(node, 1); + + } } diff -r fbf0cf550b06 -r cfbab7d87188 src/wikigraph/ReadWikiLink.java --- a/src/wikigraph/ReadWikiLink.java Thu Aug 30 23:23:24 2012 +0900 +++ b/src/wikigraph/ReadWikiLink.java Fri Aug 31 20:17:49 2012 +0900 @@ -2,6 +2,9 @@ import java.io.FileOutputStream; import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.LinkedList; import java.util.Map; @@ -28,13 +31,44 @@ try { + // initALlNodePageRank(); final long AllNodeNumber = ltn.searchAllNodes(); HashMap wikiHash = ltn.getWikiPageHash(); +// ltn.printNodeInfo(2); - int nodeIds[] = {1, 2, 3}; + + WikiPage maxW = new WikiPage(); + ArrayList list = new ArrayList(); + for (String title : wikiHash.keySet()) { + WikiPage w = wikiHash.get(title); + list.add(w); + if (maxW.getRank() < w.getRank() ) { + maxW = w; + } + } + + Collections.sort(list, new Comparator(){ + public int compare(WikiPage w1, WikiPage w2) { + return (int)(w2.getRank()*Math.pow(10, 6)) - (int)(w1.getRank()*Math.pow(10,6)); + } + }); + + FileOutputStream fos = new FileOutputStream("./resource/wikipage2.log"); + + for (WikiPage w : list) { + w.printInfo(fos); + } + fos.close(); + + System.out.println("\nMax Page Rank"); + maxW.printInfo(); + + + +/* + final int nodeIds[] = {4, 5, 6}; LinkedList fosList = new LinkedList(); - for (int i: nodeIds) { String filename = String.format("./resource/NodeId_%d.dat", i); FileOutputStream fos = new FileOutputStream(filename); @@ -53,26 +87,11 @@ } } - for (FileOutputStream fos: fosList) { fos.close(); } - /* - String title = "ブラックホール"; - FileOutputStream fos = new FileOutputStream("./resource/nodePageRank.dat"); - fos.write(("# page title: "+title+"\n").getBytes()); - - WikiPage w = wikiHash.get(title); - for (int i = 0; i < 50; i++) { - for (Node node : graphOpe.getAllNodes()) { - ltn.computePageRank(node); - } - double rank = w.getRank(); - printPageRankLog(fos, i, rank); - fos.flush(); - } - fos.close(); -*/ + */ + } catch (Exception e) { e.printStackTrace(); } finally { diff -r fbf0cf550b06 -r cfbab7d87188 src/wikigraph/WikiPage.java --- a/src/wikigraph/WikiPage.java Thu Aug 30 23:23:24 2012 +0900 +++ b/src/wikigraph/WikiPage.java Fri Aug 31 20:17:49 2012 +0900 @@ -1,5 +1,8 @@ package wikigraph; +import java.io.FileOutputStream; +import java.io.IOException; + import org.neo4j.graphdb.Node; public class WikiPage { @@ -7,32 +10,31 @@ private String title; private long id; private Double rank; - private long outLink; - private long inLink; + private long outHasLink; + private long inHasLink; WikiPage() { this.title = null; this.id = -1; this.rank = -1.0; - this.outLink = 0; - this.inLink = 0; + this.outHasLink = 0; + this.inHasLink = 0; } WikiPage(Node node) { this.title = (String) node.getProperty(LinkToNode.PAGE_TITLE); this.id = node.getId(); this.rank = (Double)node.getProperty(LinkToNode.PAGE_RANK); - this.rank = 0.0; - this.outLink = 0; - this.inLink = 0; + this.outHasLink = 0; + this.inHasLink = 0; } WikiPage(String title, long id, Double rank) { this.title = title; this.id = id; this.rank = rank; - this.outLink = 0; - this.inLink = 0; + this.outHasLink = 0; + this.inHasLink = 0; } String getTitle() { @@ -47,12 +49,12 @@ return rank; } - long getOutLink() { - return outLink; + long getOutHasLink() { + return outHasLink; } - long getInLink() { - return inLink; + long getInHasLink() { + return inHasLink; } void setTitle(String title) { @@ -67,12 +69,23 @@ this.rank = rank; } - void setOutLink(long num) { - this.outLink = num; + void setOutHasLink(long num) { + this.outHasLink = num; + } + + void setInHasLink(long num) { + this.inHasLink = num; } - void setInLink(long num) { - this.inLink = num; + void printInfo() { + System.out.println("id:"+id+" title:"+title+" rank:"+rank); + System.out.println("outHasLink:"+outHasLink+" inHasLink:"+inHasLink); + } + + void printInfo(FileOutputStream fos) throws IOException { + fos.write(("id:"+id+" title:"+title+" rank:"+rank+"\n").getBytes()); + fos.write(("outHasLink:"+outHasLink+" inHasLink:"+inHasLink+"\n").getBytes()); + fos.flush(); } }