view 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
line wrap: on
line source

package wikigraph;

import java.util.HashMap;
import java.util.Map;

import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Path;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.traversal.Traverser;
import org.neo4j.kernel.EmbeddedGraphDatabase;
import org.neo4j.tooling.GlobalGraphOperations;

import wikigraph.LinkToNode.RelTypes;

public class ReadWikiLink {

	
	public static void main(String[] args) {
		

		GraphDatabaseService graphDb = new EmbeddedGraphDatabase("wikiLinkDB");
		GlobalGraphOperations graphOpe =  GlobalGraphOperations.at(graphDb);
		LinkToNode ltn = new LinkToNode(graphDb, graphOpe);
		Transaction tx = graphDb. beginTx();		

		try {
			
		final long AllNodeNumber = ltn.searchPageTitleAllNodes();
		
		// Key: page_title  value: Node ID
		HashMap<String,Long> pageIdHash = ltn.getPageIdTable();
		HashMap<String,Long> pageRankHash = ltn.getPageRankTable();
		
		long maxRelCount = 0;
		String tmpKey="";
		// relHash record number of relationships of each node.
		// Key: page_title  value: number of relationships
		HashMap<String,Long> relHash = new HashMap<String,Long>();
		
		// relKeyHash
		// key: number of relationships  value: ID
		HashMap<Long,Long> relKeyHash = new HashMap<Long,Long>();
		
		for (String key : pageIdHash.keySet()) {
			long id = pageIdHash.get(key);
			Node node = graphDb.getNodeById(id);
			
			Iterable<Relationship> relIter = node.getRelationships();
			long count = 0;
			for (Relationship rel : relIter) {
				if ( ltn.isHasLink(rel))
					count++;
			}
			relHash.put(key, count);

			if (maxRelCount < count ) {
				maxRelCount = count;
				tmpKey = key;
			}
			relKeyHash.put(count, id);
		}
		
		System.out.println("AllNodeNumber = "+ AllNodeNumber);
		System.out.println("Most :\n"+tmpKey+":"+maxRelCount);
		

		
		String output = "";
		Node n = graphDb.getNodeById(1);
		Traverser hasLinkTraverser = ltn.getInHasLink( n );
		System.out.println(n.getProperty(LinkToNode.PAGE_TITLE));
		for (Path hasLinkPath : hasLinkTraverser) {
			output = "At depth" + hasLinkPath.length() + " => "
					+ hasLinkPath.endNode().getProperty(LinkToNode.PAGE_TITLE) + "\n";
			System.out.println(output);
		}
		
		System.out.println(output);

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			tx.success();
			tx.finish();
			graphDb.shutdown();
		}
		
	}
	
}