annotate src/wikigraph/ReadWikiLink.java @ 21:f9ef906676eb draft

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