annotate src/wikigraph/LinkToNode.java @ 24:71fe482aaf32 draft

fix LinkToNode.java
author one
date Tue, 28 Aug 2012 15:27:35 +0900
parents 21902773e530
children fbf0cf550b06
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
1 package wikigraph;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
2
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
3 import java.util.HashMap;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
4
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
5 import org.neo4j.graphdb.Direction;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
6 import org.neo4j.graphdb.GraphDatabaseService;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
7 import org.neo4j.graphdb.Node;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
8 import org.neo4j.graphdb.Path;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
9 import org.neo4j.graphdb.Relationship;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
10 import org.neo4j.graphdb.RelationshipType;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
11 import org.neo4j.graphdb.traversal.Evaluators;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
12 import org.neo4j.graphdb.traversal.TraversalDescription;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
13 import org.neo4j.graphdb.traversal.Traverser;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
14 import org.neo4j.kernel.Traversal;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
15 import org.neo4j.tooling.GlobalGraphOperations;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
16
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
17 import wikigraph.Neo4jTest.RelTypes;
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
18
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
19
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
20 public class LinkToNode {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
21
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
22 GraphDatabaseService graphDb;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
23 GlobalGraphOperations graphOpe;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
24
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
25 public final static String PAGE_TITLE = "page_title";
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
26 public final static String PAGE_RANK = "page_rank";
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
27 private HashMap<String,Long> pageIdTable = new HashMap<String,Long>();
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
28 private HashMap<String,Long> pageRankTable = new HashMap<String,Long>();
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
29
23
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
30 private HashMap<String,WikiPage> wikiPageHash = new HashMap<String,WikiPage>();
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
31 private long AllNodeNumber;
23
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
32
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
33 public enum RelTypes implements RelationshipType {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
34 HAS_LINK
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
35 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
36
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
37 LinkToNode(GraphDatabaseService graphDb) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
38 this.graphDb = graphDb;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
39 this.graphOpe = GlobalGraphOperations.at(graphDb);
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
40 AllNodeNumber = 0;
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
41 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
42
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
43 LinkToNode(GraphDatabaseService graphDb, GlobalGraphOperations graphOpe) {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
44 this.graphDb = graphDb;
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
45 this.graphOpe = graphOpe;
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
46 AllNodeNumber = 0;
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
47 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
48
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
49 void setGraphDb(GraphDatabaseService graphDb) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
50 this.graphDb = graphDb;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
51 this.graphOpe = GlobalGraphOperations.at(graphDb);
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
52 AllNodeNumber = 0;
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
53 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
54
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
55 Long getId(String pageTitle) {
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
56 return pageIdTable.get(pageTitle);
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
57 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
58
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
59 boolean isHasLink(Relationship rel) {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
60 return rel.isType(RelTypes.HAS_LINK);
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
61 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
62
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
63 private Node createNode() {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
64 return graphDb.createNode();
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
65 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
66
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
67 private Node createNodeWithProperty(String key, Object value) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
68 Node node = createNode();
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
69 node.setProperty(key,value);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
70 return node;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
71 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
72
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
73 void initAllNodePageRank() {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
74 for (Node node : graphOpe.getAllNodes()) {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
75 setPageRank(node, 0);
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
76 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
77 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
78
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
79
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
80 String getPageTitle(Node node) {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
81 return (String) node.getProperty(PAGE_TITLE);
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
82 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
83
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
84 Long getPageRank(Node node) {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
85 return (Long) node.getProperty(PAGE_RANK);
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
86 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
87
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
88 Node createNodeWithPageTitle(String pageTitle){
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
89 Node node = createNodeWithProperty(PAGE_TITLE, pageTitle);
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
90 pageIdTable.put(pageTitle, node.getId());
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
91 return node;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
92 }
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
93
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
94 Node setPageRank(Node node, long rank) {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
95 node.setProperty(PAGE_RANK, rank);
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
96 return node;
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
97 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
98
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
99 Node getNode(String name) {
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
100 long id = pageIdTable.get(name);
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
101 return graphDb.getNodeById(id);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
102 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
103
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
104 void setRelationship(Node node1, Node node2, RelTypes type) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
105 node1.createRelationshipTo(node2, type);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
106 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
107
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
108 void setHasLink(Node node1, Node node2) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
109 setRelationship(node1, node2, RelTypes.HAS_LINK);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
110 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
111
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
112 long searchAllNodes() {
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
113 AllNodeNumber = 0;
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
114 for (Node n: graphOpe.getAllNodes()) {
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
115 if (n.hasProperty(PAGE_TITLE)) {
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
116 WikiPage wiki = new WikiPage(n);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
117 wikiPageHash.put((String)n.getProperty(PAGE_TITLE), wiki);
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
118 pageIdTable.put((String)n.getProperty(PAGE_TITLE), n.getId());
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
119 pageRankTable.put((String)n.getProperty(PAGE_TITLE), (Long) n.getProperty(PAGE_RANK));
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
120 wiki.setInLink(computeInHasLink(n));
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
121 wiki.setOutLink(computeOutHasLink(n));
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
122
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
123 AllNodeNumber++;
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
124 }
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
125 }
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
126 return AllNodeNumber;
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
127 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
128
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
129 HashMap<String,WikiPage> getWikiPageHash() {
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
130 return wikiPageHash;
23
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
131 }
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
132
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
133 HashMap<String,Long> getPageIdTable() {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
134 return pageIdTable;
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
135 }
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
136
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
137 HashMap<String,Long> getPageRankTable() {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
138 return pageRankTable;
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
139 }
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
140
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
141 public void printAllNodes() {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
142 for (Node n: graphOpe.getAllNodes()) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
143 System.out.println("ID="+ n.getId());
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
144 for (String key: n.getPropertyKeys()) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
145 System.out.println(key + "=" + n.getProperty(key));
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
146 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
147 Iterable<Relationship> relIter = n.getRelationships(RelTypes.HAS_LINK);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
148 for (Relationship rel : relIter ) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
149 System.out.println(rel);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
150 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
151 System.out.println("--");
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
152 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
153
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
154 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
155
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
156 private Traverser getTraverser(final Node node, final Direction rel) {
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
157 TraversalDescription td = Traversal.description()
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
158 .breadthFirst()
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
159 .relationships( RelTypes.HAS_LINK, rel )
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
160 .evaluator( Evaluators.excludeStartPosition());
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
161 return td.traverse( node );
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
162
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
163 }
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
164
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
165 public Traverser getOutHasLinkTraverser( final Node node) {
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
166 return getTraverser(node, Direction.OUTGOING);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
167 }
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
168
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
169 public Traverser getInHasLinkTraverser( final Node node) {
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
170 return getTraverser(node, Direction.INCOMING);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
171 }
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
172
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
173 public long computeOutHasLink(final Node node) {
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
174 long count = 0;
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
175 Traverser hasLinkTraverser = getOutHasLinkTraverser(node);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
176 for (Path hasLinkPath : hasLinkTraverser) {
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
177 if (hasLinkPath.length() > 1) break;
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
178 count++;
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
179 }
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
180 return count;
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
181 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
182
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
183 public long computeInHasLink(final Node node) {
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
184 long count = 0;
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
185 Traverser hasLinkTraverser = getInHasLinkTraverser(node);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
186 for (Path hasLinkPath : hasLinkTraverser) {
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
187 if (hasLinkPath.length() > 1) break;
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
188 count++;
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
189 }
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
190 return count;
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
191 }
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
192
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
193
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
194 public void searchHasLinkOut(final Node node) {
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
195 int numberOfLinkPages = 0;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
196 String output = node.getProperty(PAGE_TITLE) + " have link pages:\n";
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
197 Traverser hasLinkTraverser = getOutHasLinkTraverser( node );
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
198 for ( Path hasLinkPath : hasLinkTraverser) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
199 output += "At depth " + hasLinkPath.length() + " => "
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
200 + hasLinkPath.endNode()
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
201 .getProperty(PAGE_TITLE) + "\n";
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
202 numberOfLinkPages++;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
203 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
204 output += "Number of link pages: " + numberOfLinkPages + "\n";
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
205 System.out.println(output);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
206 }
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
207
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
208 public long computePageRank(Node node) {
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
209 long sum = 0;
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
210 long pageRank = 0;
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
211 String title = getPageTitle(node);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
212 WikiPage wiki = wikiPageHash.get(title);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
213
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
214 Traverser hasLinkTraverser = getInHasLinkTraverser(node);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
215 for (Path hasLinkPath: hasLinkTraverser) {
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
216 if (hasLinkPath.length() > 1) break;
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
217 Node n = hasLinkPath.endNode();
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
218 sum += (Long)n.getProperty(PAGE_RANK);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
219 }
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
220 pageRank = (long) (sum/wiki.getInLink() * 0.85
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
221 + 1 / AllNodeNumber * 0.15);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
222
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
223 wiki.setRank(pageRank);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
224 node.setProperty(PAGE_RANK, pageRank);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
225 return pageRank;
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
226 }
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
227
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
228
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
229 }