資源簡介
本java代碼實現了將部分DBLP數據添加到Neo4j圖數據庫中構成網絡,并實現了用PathSim算法獲得與某個作者最為相似的TopK 個作者

代碼片段和文件信息
package?Neo4j.Neo4jDemo;
import?java.io.BufferedReader;
import?java.io.File;
import?java.io.FileNotFoundException;
import?java.io.FileReader;
import?java.io.IOException;
import?java.util.ArrayList;
import?java.util.Collections;
import?java.util.Comparator;
import?java.util.HashMap;
import?java.util.HashSet;
import?java.util.List;
import?java.util.Map;
import?java.util.Map.Entry;
import?java.util.Set;
import?org.neo4j.graphdb.Direction;
import?org.neo4j.graphdb.DynamicRelationshipType;
import?org.neo4j.graphdb.GraphDatabaseService;
import?org.neo4j.graphdb.Node;
import?org.neo4j.graphdb.Path;
import?org.neo4j.graphdb.Relationship;
import?org.neo4j.graphdb.RelationshipType;
import?org.neo4j.graphdb.ResourceIterable;
import?org.neo4j.graphdb.Transaction;
import?org.neo4j.graphdb.factory.GraphDatabaseFactory;
import?org.neo4j.graphdb.traversal.Evaluator;
import?org.neo4j.graphdb.traversal.Evaluators;
import?org.neo4j.graphdb.traversal.TraversalDescription;
import?org.neo4j.graphdb.traversal.Traverser;
import?org.neo4j.graphdb.traversal.Uniqueness;
import?org.neo4j.graphdb.traversal.UniquenessFactory;
import?org.neo4j.kernel.Traversal;
public?class?Main?{
//作者集合
private?static?HashMap?authorMap?=?null;
//作者的數量
private?static?int?authorSize?=?0;
private?static?int?relativeAuthorSize?=?0;
private?static?HashMap?confMap?=?null;
//會議的數量
private?static?int?confSize?=?0;
public?static?void?main(String?args[]){
//定義Neo4j數據庫,文件夾命名為ac.graphdb,后綴不能舍棄,否則neo4j?community找不到數據位置
GraphDatabaseService?db?=?new?GraphDatabaseFactory().newembeddedDatabase(“D:/Neo4jDB/dblp.graphdb/“);
//創建Neo4j數據庫
createGraphDB(db);
long?authorNodeId?=?getAuthorNodeIdByName(db?“Christos?Faloutsos“);
List>?list?=?calTopKSimilarity(dbauthorNodeId10);
for?(Map.Entry?mapping?:?list)?{??
????????????System.out.println(mapping.getKey()?+?“:“?+?mapping.getValue());??
????????}
}
/**
?*?計算與源作者最為相似的前K個作者
?*?@param?db
?*?@param?authorNodeId
?*?@param?k
?*?@return
?*/
public?static?List>?calTopKSimilarity(GraphDatabaseService?dblong?authorNodeIdint?k){
Map?AuthorSimilarMap?=?new?HashMap();
Map?confsForA?=?getConfsForAuthor(dbauthorNodeId);
//獲得ACA元路徑下相關的作者?NodeId和姓名
Map?relativeAuthorMap?=?getDep2ForAuthor(dbauthorNodeId);
for?(Map.Entry?author?:?relativeAuthorMap.entrySet())?{
//獲得相關作者的發表會議信息
Map?confsForB?=?getConfsForAuthor(dbauthor.getKey());
float?similarity?=?calPathSim(confsForAconfsForB);
AuthorSimilarMap.put(author.getValue()?similarity);
????????}
List>?list?=?sortMap(AuthorSimilarMap);
if(k>relativeAuthorSize){
k=relativeAuthorSize;
}
return?list.subList(0?k);
}
/**
?*?根據作者名稱找到圖數據庫中作者節點的ID
?*?@param?db
?*?@param?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????791??2018-01-06?13:45??Neo4jDemo\.classpath
?????文件????????561??2018-01-06?11:21??Neo4jDemo\.project
?????文件?????????88??2018-01-06?11:24??Neo4jDemo\.settings\org.eclipse.core.resources.prefs
?????文件????????664??2018-01-06?13:45??Neo4jDemo\.settings\org.eclipse.jdt.core.prefs
?????文件?????????90??2018-01-06?11:21??Neo4jDemo\.settings\org.eclipse.m2e.core.prefs
?????文件????1373018??2017-05-20?14:34??Neo4jDemo\data\author.txt
?????文件????2349080??2017-05-18?21:42??Neo4jDemo\data\author_conf.txt
?????文件??????11485??2017-05-20?14:34??Neo4jDemo\data\conf.txt
?????文件????????908??2018-01-06?11:26??Neo4jDemo\pom.xm
?????文件??????11962??2018-01-08?19:22??Neo4jDemo\src\main\java\Neo4j\Neo4jDemo\Main.java
?????文件????????209??2018-01-07?18:47??Neo4jDemo\src\main\java\Neo4j\Neo4jDemo\Relationships.java
?????文件????????222??2018-01-07?09:54??Neo4jDemo\src\main\java\Neo4j\Neo4jDemo\Type.java
?????文件???????1279??2018-01-08?19:22??Neo4jDemo\target\classes\Neo4j\Neo4jDemo\Main$1.class
?????文件??????14017??2018-01-08?19:22??Neo4jDemo\target\classes\Neo4j\Neo4jDemo\Main.class
?????文件???????1051??2018-01-07?18:47??Neo4jDemo\target\classes\Neo4j\Neo4jDemo\Relationships.class
?????文件???????1018??2018-01-07?09:54??Neo4jDemo\target\classes\Neo4j\Neo4jDemo\Type.class
?????文件????????617??2018-01-06?11:21??Neo4jDemo\target\test-classes\Neo4j\Neo4jDemo\AppTest.class
?????目錄??????????0??2018-01-06?17:16??Neo4jDemo\src\main\java\Neo4j\Neo4jDemo
?????目錄??????????0??2018-01-06?11:21??Neo4jDemo\src\main\java\Neo4j
?????目錄??????????0??2018-01-06?20:34??Neo4jDemo\target\classes\Neo4j\Neo4jDemo
?????目錄??????????0??2018-01-06?11:21??Neo4jDemo\target\test-classes\Neo4j\Neo4jDemo
?????目錄??????????0??2018-01-06?11:21??Neo4jDemo\src\main\java
?????目錄??????????0??2018-01-06?13:45??Neo4jDemo\target\classes\Neo4j
?????目錄??????????0??2018-01-06?11:21??Neo4jDemo\target\test-classes\Neo4j
?????目錄??????????0??2018-01-06?11:21??Neo4jDemo\src\main
?????目錄??????????0??2018-01-06?11:24??Neo4jDemo\src\test
?????目錄??????????0??2018-01-06?13:45??Neo4jDemo\target\classes
?????目錄??????????0??2018-01-06?11:21??Neo4jDemo\target\test-classes
?????目錄??????????0??2018-01-06?11:21??Neo4jDemo\.settings
?????目錄??????????0??2018-01-07?16:26??Neo4jDemo\data
............此處省略6個文件信息
評論
共有 條評論