annotate src/wikigraph/ReadWikiLink.java @ 23:21902773e530 draft

fix ReadWikiLink.java
author one
date Tue, 28 Aug 2012 14:38:13 +0900
parents f9ef906676eb
children 71fe482aaf32
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;
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
4 import java.util.Map;
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
5
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;
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
8 import org.neo4j.graphdb.Path;
20
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.Transaction;
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
11 import org.neo4j.graphdb.traversal.Traverser;
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
12 import org.neo4j.kernel.EmbeddedGraphDatabase;
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
13 import org.neo4j.tooling.GlobalGraphOperations;
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
14
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
15 import wikigraph.LinkToNode.RelTypes;
20
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 ReadWikiLink {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
18
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
19 public static void main(String[] args) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
21 GraphDatabaseService graphDb = new EmbeddedGraphDatabase("wikiLinkDB");
23
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
22 GlobalGraphOperations graphOpe = GlobalGraphOperations.at(graphDb);
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
23 LinkToNode ltn = new LinkToNode(graphDb, graphOpe);
23
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
24 Transaction tx = graphDb.beginTx();
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
25
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
26 try {
23
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
27
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
28 // final long AllNodeNumber = ltn.searchPageTitleAllNodes();
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
29 final long AllNodeNumber = ltn.searchAllNodes();
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
30
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
31 long maxRelCount = 0;
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
32 String tmpKey = "";
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
33 // relHash record number of relationships of each node.
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
34 // Key: page_title value: number of relationships
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
35 HashMap<String, Long> relHash = new HashMap<String, Long>();
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
36
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
37 // relKeyHash
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
38 // key: number of relationships value: ID
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
39 HashMap<Long, Long> relKeyHash = new HashMap<Long, Long>();
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
40
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
41 HashMap<String,WikiPage> wikiHash = ltn.getWikiPageHash();
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
42
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
43 for (String title: wikiHash.keySet()) {
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
44 WikiPage w = wikiHash.get(title);
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
45 long id = w.getId();
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
46
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
47 Node node = graphDb.getNodeById(id);
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
48
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
49 Iterable<Relationship> relIter = node.getRelationships();
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
50 long count = 0;
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
51 // compute number of relationship.
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
52 for (Relationship rel : relIter) {
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
53 if (ltn.isHasLink(rel))
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
54 count++;
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
55 }
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
56 w.setOutLink(count);
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
57
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
58 relHash.put(title, count);
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
59
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
60 if (maxRelCount < count) {
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
61 maxRelCount = count;
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
62 tmpKey = title;
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
63 }
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
64 relKeyHash.put(count, id);
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
65 }
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
66
23
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
67 for (String title: wikiHash.keySet()) {
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
68 System.out.println(title);
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
69 }
23
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
70
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
71 System.out.println("AllNodeNumber = " + AllNodeNumber);
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
72 System.out.println("Most :\n" + tmpKey + ":" + maxRelCount);
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
73
23
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
74 String output = "";
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
75 Node n = graphDb.getNodeById(1);
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
76 Traverser hasLinkTraverser = ltn.getInHasLink(n);
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
77 System.out.println(n.getProperty(LinkToNode.PAGE_TITLE));
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
78 for (Path hasLinkPath : hasLinkTraverser) {
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
79 if (hasLinkPath.length() > 1) break;
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
80 output = "At depth"
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
81 + hasLinkPath.length()
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
82 + " => "
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
83 + hasLinkPath.endNode().getProperty(
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
84 LinkToNode.PAGE_TITLE) + "\n";
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
85 System.out.println(output);
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
86 }
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
87
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
88 System.out.println(output);
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
89
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
90 } catch (Exception e) {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
91 e.printStackTrace();
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
92 } finally {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
93 tx.success();
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
94 tx.finish();
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
95 graphDb.shutdown();
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
96 }
23
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
97
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
98 }
23
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
99
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
100 }