资源说明
文件名 | 词条内容 |
---|---|
zhwiki-latest-pages-articles.xml.bz2 | 词条正文 |
zhwiki-latest-redirect.sql.gz | 词条重定向(同义词) |
zhwiki-latest-pagelinks.sql.gz | 词条页面内容外链 |
zhwiki-latest-page.sql.gz | 词条标题及摘要 |
zhwiki-latest-categorylinks.sql.gz | 词条开放分类连接 |
Neo4j是NoSQL的一个代表,它是一个嵌入式,基于磁盘的,支持完整事务的Java持久化引擎,它在图像中而不是表中存储数据。Neo4j提供了大规模可扩展性,在一台机器上可以处理数十亿节点/关系/属性的图像,可以扩展到多台机器并行运行。相对于关系数据库来说,图形数据库善于处理大量复杂、互连接、低结构化的数据,这些数据变化迅速,需要频繁的查询——在关系数据库中,这些查询会导致大量的表连接,因此会产生性能上的问题。
Neo4j重点解决了拥有大量连接的传统RDBMS在查询时出现的性能衰退问题。通过围绕图形进行数据建模,Neo4j会以相同的速度遍历节点与边,其遍历速度与构成图形的数据量没有任何关系。此外,Neo4j还提供了非常快的图形算法、推荐系统和OLAP风格的分析,而这一切在目前的RDBMS系统中都是无法实现的。
英国的软件工程师Mirko Nasato同样意识到这点,并使用批处理导入技术创建了Graphipedia(注:graphipedia是一个将维基百科页面和超链接导入图形数据库的工具集)。
Graphipedia使用Java编写,如果你专注于Ruby,并不擅长使用Java,下面的教程将会手把手的教你如何完成这些步骤。
首先,复制这个项目并打开:
git clone git://github.com/mirkonasato/graphipedia.git
cd graphipedia 如果发现pom.xml文件意味着你需要下载Maven并创建项目。
sudo apt-get install maven2
mvn install 你将看到一串代码滚动,这是相关文件在下载,运行到最后你将看到如下代码:
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] ------------------------------------------------------------------------
[INFO] Graphipedia Parent .................................... SUCCESS [1:08.932s]
[INFO] Graphipedia DataImport ................................ SUCCESS [1:16.018s]
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 minutes 25 seconds
[INFO] Finished at: Thu Feb 16 11:36:55 CST 2012
[INFO] Final Memory: 28M/434M
[INFO] ------------------------------------------------------------------------ 下面将需要下载的维基百科文件通过wget下载下来:
wget dumps.wikimedia.org/enwiki/late… 这足足有7.6G的文件,我们先尝试一个较小的数据:Peesi tali fiefia词条,然后解压缩该词条的维基百科文件。
wget dumps.wikimedia.org/towiki/late…
bzip2 -d towiki-latest-pages-articles.xml.bz2 以下是两个步骤,首先创建一个只包含页面标题和链接的较小的中间XML文件:
java -classpath ./graphipedia-dataimport/target/graphipedia-dataimport.jar org.graphipedia.dataimport.ExtractLinks towiki-latest-pages-articles.xml towiki-links.xml 显示如下:
Parsing pages and extracting links...
..
2835 pages parsed in 0 seconds. 然后运行批处理导入该文件,将内容存储在图形数据库目录下。
java -Xmx3G -classpath ./graphipedia-dataimport/target/graphipedia-dataimport.jar org.graphipedia.dataimport.neo4j.ImportGraph towiki-links.xml graph.db 将会出现以下代码:
Importing pages...
..
2835 pages imported in 0 seconds.
Importing links...
.....
5799 links imported in 0 seconds; 6383 broken links ignored 打开并查看neostore文件夹:
cd graph.db
ls 重写/neo4j/data/graph.db文件夹,将该文件夹覆盖任何原有Neo4j数据库。
Parsing pages and extracting links...
.................................................. 50k
.................................................. 100k
...
...
.................................................. 2050k
.................................................. 2100k
.................................................. 2150k
............................................
2194550 pages parsed in 93 seconds.
Connected to the target VM, address: '127.0.0.1:49909', transport: 'socket'
Importing pages...
.................................................. 50k
.................................................. 100k
...
...
.................................................. 2100k
.................................................. 2150k
............................................
2194550 pages imported in 10 seconds.
Importing links...
.................................................. 50k
.................................................. 100k
...
...
.................................................. 23000k
.................................................. 23050k
.................................................. 23100k
...........................................
23143808 links imported in 521 seconds; 6088342 broken links ignored
Disconnected from the target VM, address: '127.0.0.1:49909', transport: 'socket'
Process finished with exit code 0