annotate 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
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
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
17 public class LinkToNode {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
18
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
19 GraphDatabaseService graphDb;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
20 GlobalGraphOperations graphOpe;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
21
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
22 public final static String PAGE_TITLE = "page_title";
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
23 public final static String PAGE_RANK = "page_rank";
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
24 private HashMap<String, Long> pageIdTable = new HashMap<String, Long>();
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
25 private HashMap<String, Double> pageRankTable = new HashMap<String, Double>();
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
26
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
27 private HashMap<String, WikiPage> wikiPageHash = new HashMap<String, WikiPage>();
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
28 private long AllNodeNumber;
23
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
29
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
30 private final double weight1 = 0.85;
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
31 private final double weight2 = 0.15;
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
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 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
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 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
58
21
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 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
62
20
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 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
66
20
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();
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
69 node.setProperty(key, value);
20
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 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
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()) {
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
75 setPageRank(node, 0.0);
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
76 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
77 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
78
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
79 String getPageTitle(Node node) {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
80 return (String) node.getProperty(PAGE_TITLE);
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
81 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
82
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
83 Double getPageRank(Node node) {
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
84 return (Double) node.getProperty(PAGE_RANK);
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
85 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
86
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
87 Node createNodeWithPageTitle(String pageTitle) {
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
88 Node node = createNodeWithProperty(PAGE_TITLE, pageTitle);
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
89 pageIdTable.put(pageTitle, node.getId());
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
90 return node;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
91 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
92
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
93 Node setPageRank(Node node, Double rank) {
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
94 node.setProperty(PAGE_RANK, rank);
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
95 return node;
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
96 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
97
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
98 Node getNode(String name) {
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
99 long id = pageIdTable.get(name);
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
100 return graphDb.getNodeById(id);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
101 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
102
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
103 Node getNode(int nodeId) {
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
104 return graphDb.getNodeById(nodeId);
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
105 }
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
106
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
107 void setRelationship(Node node1, Node node2, RelTypes type) {
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
108 node1.createRelationshipTo(node2, type);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
109 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
110
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
111 void setHasLink(Node node1, Node node2) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
112 setRelationship(node1, node2, RelTypes.HAS_LINK);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
113 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
114
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
115 long searchAllNodes() {
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
116 AllNodeNumber = 0;
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
117 for (Node n : graphOpe.getAllNodes()) {
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
118 if (n.hasProperty(PAGE_TITLE) || n.hasProperty(PAGE_RANK)) {
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
119 WikiPage wiki = new WikiPage(n);
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
120 pageIdTable.put((String) n.getProperty(PAGE_TITLE), n.getId());
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
121 pageRankTable.put((String) n.getProperty(PAGE_TITLE),
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
122 (Double) n.getProperty(PAGE_RANK));
26
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
123 wiki.setInHasLink(computeInHasLink(n));
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
124 wiki.setOutHasLink(computeOutHasLink(n));
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
125 wikiPageHash.put((String) n.getProperty(PAGE_TITLE), wiki);
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
126 AllNodeNumber++;
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
127 }
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
128 }
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
129 return AllNodeNumber;
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
130 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
131
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
132 void searchRegiNodes(Node n) {
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
133
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
134 if (n.hasProperty(PAGE_TITLE) || n.hasProperty(PAGE_RANK)) {
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
135 WikiPage wiki = new WikiPage(n);
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
136 pageIdTable.put((String) n.getProperty(PAGE_TITLE), n.getId());
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
137 pageRankTable.put((String) n.getProperty(PAGE_TITLE),
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
138 (Double) n.getProperty(PAGE_RANK));
26
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
139 wiki.setInHasLink(computeInHasLink(n));
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
140 wiki.setOutHasLink(computeOutHasLink(n));
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
141 wikiPageHash.put((String) n.getProperty(PAGE_TITLE), wiki);
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
142 AllNodeNumber++;
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
143 }
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
144 }
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
145
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
146 HashMap<String, WikiPage> getWikiPageHash() {
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
147 return wikiPageHash;
23
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
148 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
149
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
150 HashMap<String, Long> getPageIdTable() {
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
151 return pageIdTable;
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
152 }
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
153
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
154 HashMap<String, Double> getPageRankTable() {
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
155 return pageRankTable;
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
156 }
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
157
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
158 public void printAllNodes() {
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
159 for (Node n : graphOpe.getAllNodes()) {
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
160 System.out.println("ID=" + n.getId());
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
161 for (String key : n.getPropertyKeys()) {
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
162 System.out.println(key + "=" + n.getProperty(key));
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
163 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
164 Iterable<Relationship> relIter = n
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
165 .getRelationships(RelTypes.HAS_LINK);
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
166 for (Relationship rel : relIter) {
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
167 System.out.println(rel);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
168 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
169 System.out.println("--");
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
170 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
171
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
172 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
173
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
174 private Traverser getTraverser(final Node node, final Direction rel) {
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
175 TraversalDescription td = Traversal.description().breadthFirst()
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
176 .relationships(RelTypes.HAS_LINK, rel)
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
177 .evaluator(Evaluators.excludeStartPosition());
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
178 return td.traverse(node);
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
179
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
180 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
181
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
182 public Traverser getOutHasLinkTraverser(final Node node) {
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
183 return getTraverser(node, Direction.OUTGOING);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
184 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
185
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
186 public Traverser getInHasLinkTraverser(final Node node) {
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
187 return getTraverser(node, Direction.INCOMING);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
188 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
189
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
190 public long computeOutHasLink(final Node node) {
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
191 long count = 0;
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
192 Traverser hasLinkTraverser = getOutHasLinkTraverser(node);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
193 for (Path hasLinkPath : hasLinkTraverser) {
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
194 if (hasLinkPath.length() > 1)
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
195 break;
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
196 count++;
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
197 }
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
198 return count;
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
199 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
200
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
201 public long computeInHasLink(final Node node) {
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
202 long count = 0;
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
203 Traverser hasLinkTraverser = getInHasLinkTraverser(node);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
204 for (Path hasLinkPath : hasLinkTraverser) {
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
205 if (hasLinkPath.length() > 1)
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
206 break;
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
207 count++;
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
208 }
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
209 return count;
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
210 }
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
211
26
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
212 public void printOutHasLink(final Node node, int depth) {
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
213 int numberOfLinkPages = 0;
26
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
214 String output = node.getProperty(PAGE_TITLE) + " outHasLink pages:";
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
215 System.out.println(output);
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
216 Traverser hasLinkTraverser = getOutHasLinkTraverser(node);
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
217 for (Path hasLinkPath : hasLinkTraverser) {
26
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
218 if (depth < hasLinkPath.length()) break;
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
219 String depthOutput = "At depth " + hasLinkPath.length() + " => "
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
220 + hasLinkPath.endNode().getProperty(PAGE_TITLE);
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
221 System.out.println(depthOutput);
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
222 numberOfLinkPages++;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
223 }
26
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
224 String numOutput = "Number of link pages: " + numberOfLinkPages;
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
225 System.out.println(numOutput);
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
226 }
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
227
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
228 public void printInHasLink(final Node node, int depth) {
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
229 int numberOfLinkPages = 0;
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
230 String output = node.getProperty(PAGE_TITLE) + " inHasLink pages:";
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
231 System.out.println(output);
26
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
232 Traverser hasLinkTraverser = getInHasLinkTraverser(node);
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
233 for (Path hasLinkPath : hasLinkTraverser) {
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
234 if (depth < hasLinkPath.length()) break;
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
235 String depthOutput = "At depth " + hasLinkPath.length() + " => "
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
236 + hasLinkPath.endNode().getProperty(PAGE_TITLE);
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
237 System.out.println(depthOutput);
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
238 numberOfLinkPages++;
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
239 }
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
240 String numOutput = "Number of link pages: " + numberOfLinkPages + "\n";
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
241 System.out.println(numOutput);
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
242 }
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
243
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
244 public double computePageRank(Node node) {
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
245 double sum = 0;
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
246 double pageRank = 0;
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
247 String title = getPageTitle(node);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
248 WikiPage wiki = wikiPageHash.get(title);
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
249
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
250 Traverser hasLinkTraverser = getInHasLinkTraverser(node);
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
251 for (Path hasLinkPath : hasLinkTraverser) {
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
252 if (hasLinkPath.length() > 1)
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
253 break;
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
254 Node n = hasLinkPath.endNode();
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
255 sum += (Double) n.getProperty(PAGE_RANK);
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
256 }
26
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
257 if (wiki.getOutHasLink() == 0) {
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
258 pageRank = (double) ((double) 1 / AllNodeNumber * weight2);
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
259 } else {
26
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
260 pageRank = (double) ((double)sum / wiki.getOutHasLink() * weight1)
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
261 + (double) ((double) 1 / AllNodeNumber * weight2);
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
262 }
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
263
24
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
264 wiki.setRank(pageRank);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
265 node.setProperty(PAGE_RANK, pageRank);
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
266 return pageRank;
71fe482aaf32 fix LinkToNode.java
one
parents: 23
diff changeset
267 }
26
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
268
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
269 public void printNodeInfo(int nodeId) {
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
270 Node node = graphDb.getNodeById(nodeId);
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
271 String title = getPageTitle(node);
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
272 double rank = getPageRank(node);
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
273 long inHasLink = computeInHasLink(node);
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
274 long outHasLink = computeOutHasLink(node);
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
275
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
276 System.out.println("id:"+nodeId+" title:"+title+" rank:"+rank);
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
277 System.out.println("inHasLink:"+inHasLink+" outHasLink:"+outHasLink);
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
278
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
279 printInHasLink(node, 1);
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
280 printOutHasLink(node, 1);
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
281
cfbab7d87188 Page Rank in ascendiang order in ReadWikiLin.java
one
parents: 25
diff changeset
282 }
25
fbf0cf550b06 fix ReadWikiLink.java
one
parents: 24
diff changeset
283
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
284 }