view src/wikigraph/ReadWikiLink.java @ 25:fbf0cf550b06 draft

fix ReadWikiLink.java
author one
date Thu, 30 Aug 2012 23:23:24 +0900
parents 71fe482aaf32
children cfbab7d87188
line wrap: on
line source

package wikigraph;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedList;
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.searchAllNodes();
			HashMap<String, WikiPage> wikiHash = ltn.getWikiPageHash();


			int nodeIds[] = {1, 2, 3};
			LinkedList<FileOutputStream> fosList = new LinkedList<FileOutputStream>();

			for (int i: nodeIds) {
				String filename = String.format("./resource/NodeId_%d.dat", i);
				FileOutputStream fos = new FileOutputStream(filename);
				fos.write( String.format("# Node ID %d\n",i).getBytes());
				fosList.add(fos);
			}
			
			for (int i=0; i<50; i++) {
				for (Node node : graphOpe.getAllNodes()) {
					ltn.computePageRank(node);
				}

				for (int index=0; index<nodeIds.length; index++){
					FileOutputStream fos = fosList.get(index);
					printPageRankLog(fos, ltn, nodeIds[index], i);
				}
				
			}

			for (FileOutputStream fos: fosList) {
				fos.close();
			}
			/*			
			String title = "ブラックホール";
			FileOutputStream fos = new FileOutputStream("./resource/nodePageRank.dat");
			fos.write(("# page title: "+title+"\n").getBytes());
						
			WikiPage w = wikiHash.get(title);
			for (int i = 0; i < 50; i++) {
				for (Node node : graphOpe.getAllNodes()) {
					ltn.computePageRank(node);
				}
				double rank = w.getRank();
				printPageRankLog(fos, i, rank);
				fos.flush();
			}
			fos.close();
*/
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			tx.success();
			tx.finish();
			graphDb.shutdown();
		}

	}
	
	public static void printPageRankLog(FileOutputStream fos, int x, double rank) throws IOException {
		fos.write( (x+" "+ rank+"\n").getBytes() );		
		fos.flush();
	}
	
	public static void printPageRankLog(FileOutputStream fos, LinkToNode ltn, int nodeId, int x) throws IOException {
		double rank = ltn.getPageRank(ltn.getNode(nodeId));
		fos.write( (x+" "+ rank+"\n").getBytes() );		
		fos.flush();
	}

}