本文来自:http://app.cnzer.cn/html-83146-1.html

两篇文章分别总结了各自的wikipedia数据导入过程,来不及学习,故先转载:

(一)wmdumper.jar

from: GipSky

本文试图总结架设Wikipedia镜像的过程。

准备工作

首先需要安装Mediawiki软件,以及Mediawiki所依赖的软件,Apache,Php5,Mysql等,这里就不详细讲解了。对于懒人,有两个选择:

第一是安装Debian[1],这样apt-get install mediawiki就可以完成软件的安装。

第二是下载VMWare Player[2]和一个预安装Mediawiki的虚拟机[3]。

其次需要安装Java[4],因为导入数据的工具[5]是用Java实现的。

然后是硬盘,如果是英文wikipedia[6],需要准备大概10G的空间,如果是中文[7],需要1G左右的空间。注意Mysql数据库文件(典型的安装会使用/var/lib/mysql这个目录)所在的分区应具有足够的空闲空间。

最后,也是最重要的是,想办法下载wikipedia的数据文件,由于数据文件的网站[8],和导入数据文件的工具及其使用说明[9]都被封锁,这个就得自己想办法,各显神通了。由于数据文件很多,记得我们需要的文件名字看起来像是:

enwiki-20061130-pages-articles.xml.bz2 [10],

或zhwiki-20061130-pages-articles.xml.bz2 [11]

另外,在制作镜像的过程中,需要对Apache的配置[12]、Mysql的管理[13]和Php[14]有一个简单的了解。假设我们想要镜像英文Wikipedia,那么准备工作完成之后,我们有一个安装好了Mediawiki,以及下面两个文件:

数据文件:enwiki-20061130-pages-articles.xml.bz2

导入工具:mwdumper.jar [5]

初始化Wikipedia

安装Mediawiki软件后,需要完成初始化配置。建立镜像的初始化的过程和安装一个新的Wikipedia没有什么不同。我们假设初始化使用以下的参数:

Mediawiki的URL:http://localhost/mediawiki

Mediawiki的安装目录:/var/www/mediawiki

Mediawkik的配置文件位于/var/www/mediawiki/LocalSettings.php

Mysql数据库为wikidb,用户wikiuser,密码123456

清空数据库

初始化过程不但建立了Wikipedia所需要的数据库Table,而且还加入了一些初始记录。为了导入Wikipedia的镜像数据,我们需要首先清空数据库的部分表格。

下面的内容基本参考自某人的镜像过程[15]:

$ mysql -p wikidb

Password: ******

mysql> delete from page;

mysql> delete from revision;

mysql> delete from text;

配置mysql

数据倒入过程会使用很长的SQL语句,以及生成大量数据库的Undo记录。所以需要事先对mysql数据库进行配置。先编辑/etc/mysql/my.cnf,在合适位置加上下面内容:

[mysqld]

max_allowed_packet = 128M

innodb_log_file_size = 100M

[mysql]

max_allowed_packet = 128M

重启动mysql

# /etc/init.d/mysql restart

导入数据

用下面的命令倒入数据,大概需要1天的时间才能全部导入完毕。导入完毕之后,这个Wikipedia镜像就可以使用了。

java -Xmx600M -server -jar mwdumper.jar --format=sql:1.5

enwiki-20061130-pages-articles.xml.bz2 | mysql -u wikiuser -p wikidb

可选:清空Undo日志

导入过程不但会生成10G的数据库文件,也会生成大约10G的Undo log,检查你的Mysql数据库的日志目录(典型的值是/var/log/mysql),及该目录所在的分区,注意不要把分区写满。导入过程中,我们如 果发现即将写满分区,可以用Mysql的管理命令清空Undo日志(需要用mysql超级帐号登入)。

$ mysql -u root reset master;

可选:修复数据

导入过程中可能会有一些数据表出错,包括pagelinks,templatelinks,page表,我们可以在导入数据完成后,用mysql的修复命令:

$ mysql -p wikidb

mysql> repair table pagelinks extended;

mysql> repair table page extended;

mysql> repair table templatelinks extended;

修复过程可能会很慢,耐心等待。

安装扩展项

此时,虽然可以访问Wikipedia,但很多页面的部分内容不能正常显示,这是因为Wikipedia依赖很多mediawiki的扩展项才能够正常工作,而这些扩展项默认不会安装。Wikipedia所需的全部扩展项详见官方文档[16]。

首先检查是否安装Subversion,然后需要突破封锁下载到mediawiki extensions。

$ svn co -r REVISION /

http://svn.wikimedia.org/svnroot/mediawiki/trunk/e xtensions /

~/extensions

其中REVISION是你所安装的Mediawiki软件对应的版本号,如果是mediawiki1.7,则将REVISION替换为15387,如果是其他版本的mediawiki,自己查。

虽然官方的Wikipedia使用很多扩展,但如果只想完成Wikipedia镜像,我们只需要关心少数几个扩展。下面的命令把这些extension安装到/var/www/mediawiki目录里。

$ cd ~/extensions

$ mkdir /var/www/mediawiki/extensions/ParserFunctions

$ cd ParserFunctions

$ cp Expr.php ParserFunctions.php

/var/www/extensions/ParserFunctions

$ cd ..

$ cd Cite

$ cp Cite.php Cite.i18n.php

/var/www/mediawiki/extensions/

$ cd ..

$ cp -a CategoryTree/ /var/www/mediawiki/extensions/

* pages-articles.xml

o Contains current version of all article pages, templates, and other pages

o Excludes discussion pages ('Talk:') and user "home" pages ('User:')

o Recommended for republishing of content.

* pages-meta-current.xml

o Contains current version of all pages, including discussion and user "home" pages.

* pages-meta-history.xml

o Contains complete text of every revision of every page (can be very large!)

o Recommended for research and archive

所以,一般选择 pages-articles.xml 下载就行了。它是bz2文件,用bzip2 -d "文件名" 打开,最后会得到个 ".xml"。

在继续下一步之前,完成以下工作:

cp php.ini php-cli.ini ,这样“命令行”执行php代码时,自动使用 php-cli.ini 的配置信息。

把 php-cli.ini 中的

max_execution_time = 30 ; Maximum execution time of each script, in seconds

memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)

这两行改高一点,不妨设 300/ 80M , 这样保证长时间命令行运行不出事。

用 webroot/maintenance/importDump.php "那个.xml" 导入数据库,一个zh_wiki 一般要导好几个小时。可以: nohup php importDump.php xxx.xml & 挂在无终端后台去run.

之后,运行 webroot/maintenance/refreshLinks.php ,这是为了重建wiki数据之间的相互关联,这个时间更长,所以也挂后台。

3.其他

修改你的wiki首页,可以选择转向到适当的页面,不过最简单的方法是,copy zh.wikipedia.org的首页内容。

这样一个文本的wikipedia就好了,不过没有图片。我也看了资料,好像wikipedia.org目前没有提供对图片的dump. 只能凑合用了。

参考文献:http://meta.wikimedia.org/wiki/Data_dumps

wikipedia的使用

普通使用,看wikipedia页面上的 “帮助”

例:

在 web上访问 http://site-url/index.php/MediaWiki:Monobook.css, 然后 "编辑"这个条目,把别的wiki网站的copy过来,你就有了一个新的缺省页面样式(皮肤)了。

要想重订向,就 #REDIRECT [[where to be go]] , eg.#REDIRECT [[Documentation:Administration#Updating_the_softwa re]] 注:#Updating_the_software 是个锚。

系统调整,要修改 LocalSettings.php

例:

如何修改主页左上角的标徽图?

修改 $wgLogo 变量。

如何改变浏览器地址栏中的网站小图标?

MediaWiki会用网页中输出指向传统/favicon.ico的链接,即网页默认图标。如果想用独特的图标,可修改/includes /Skin.php文件,将'href' => '/favicon.ico'改为'href' =>'/path/to/your/favicon.ico'即可。

如何完全锁定数据库?

在 LocalSettings.php中设置$wgReadOnlyFile指向锁定信息的文件名,并在文件中书写锁定原因,此后试图编辑wiki文本时就 会显示这个提示。注意这个操作并不能绝对保证安全;如果需要完全禁止MediaWiki写入数据,需要在数据库上进行设置(例如禁止wiki用户进行 UPDATE,INSERT,DELETE操作,或者将MySQL设为只读模式)

参考资 源:http://www.allwiki.com/wiki/Mediawiki%E5%B8%B8%E8% A7%81%E9%97%AE%E9%A2%98%E8%A7%A3%E7%AD%94 http://meta.wikimedia.org/wiki/Documentation:Admin istration

性能如何

这样的一个wiki中文站,如果不允许写入,在只读模式,那一般能撑起一个访问量在 2w pageviews,同时并发<20的网站(机器就是一般的x86 server),还是比较安全的。

如果太高了,还是要做cache的, 比如用 squid 或 apache 反向代理来cache.

如果没有比较好的机器,写入状态还是别打开了,因为 mediawiki 这方面切实太慢了,mediawiki的 languages/LanguageZh.php(在测试中,这个.php被认为是慢代码) 中有 preg_match, preg_replace 这种全文匹配的事情,所以不光mysql受不了的问题,cpu也吃不消。

Aether是简单的 Haskell API,用于从 Wikipedia 查找和访问 数据 。 搜索 维基百科 、获取搜索建议、获取文章摘要等等! Aether 让的强大功能触手可及。 让我们在玩 Aether。 首先,让我们 导入 Aether。 ghci > import Aether 让我们尝试一些基本的 Aether 函数。 ghci > summary " Blue " " Blue is the colour of the clear sky and the deep sea. " ghci > search " entropy law " [ " Second law of thermodynamics " , " Entropy " , " Laws of thermodynamics " , " Thermodynami cs " , " Non-equilib 使用和将 维基百科 类别 数据 、信息框 数据 和第一句 数据 获取到 freebase 中,并带有负责任的 QA 过滤和警告 还可以轻松完成“if-this-than-that”推理任务,例如“所有歌剧类型都是戏剧类型”。 要使用,请将您的放入 ./credentials(该文件中的说明)并运行node auth/authenticate.js并按照这些说明获取您的 oauth 访问令牌 然后像这样构建规则和过滤器: rules = { cat : "Category:Bridges_in_Canada" , key : CREDENTIALS . API_KEY , access_token : CREDENTIALS . WRITE_TOKEN , depth : 2 , filter : { not_types : [ "/transp 每次使用 维基百科 需要科学上网或者使用镜像站,科学上网比较麻烦,镜像站常常会失效,且前述方法都需要需要网络,总之,使用起来不是特别方便。最近发现维基官方提供离线阅读的方法,而且现在手机和电脑的存储空间都很大,不如将这些空间利用起来,让手机变成一个本地的 维基百科 ,随时随地都能查询,非常方便。具体的方法就是,在官方网站下载一个zim文件。 维基百科 网站的内容都被打包压缩存储在这个zim格式的文件中。然后,我们就可以用专用的阅读器“kiwix”,阅读zim文件的内容,实现离线阅读。能够随身携带完整的 维基百科 ! 将Wikipedia 数据 储XML 导入 Elasticsearch。 [注意]这是运行脚本的最跨平台的方式。 有关加载时间的2-4倍优化,请参见下面的“更快地运行它”部分。 下载页面文章XML 储,找到上的链接。 您需要pages-articles.xml.bz2。 不要解压缩BZ2文件。 在发布页面上,下载 在BZ2文件上运行jar: java -jar -Xmx3g -Xms3g wikiparse-0.2.1.jar --es http://localhost:9200 /var/lib/elasticsearch/enwiki-latest-pages-articles.xml.bz2 数据 将被索引到名为en-wikipedia的索引(默认情况下)。 可以使用--index参数更改。 更快地运行 运行此代码的最快方法是在此存储库中使用run-fas 这篇文章是我前面一篇文章的后续(https://blog.csdn.net/xiaobai1_1/article/details/103261272) 前面一篇文章已经把从 维基百科 下载的xml格式的 数据 换成了json格式的文件。这里我们就用 换好的json文件开始下面的工作: 1、 mysql 数据库 连接 import py mysql def prem(db): cursor = db.curs... 本文小编将带大家从零开始搭建一个属于你自己的wiki系统。 开源的wiki系统有很多,比如:小编选择使用的是MkDocs,因为它部署和使用都非常的简便,特别适合作为个人wiki知识管理系统。简单的说MkDocs就是将Markdown文件 换成静态的HTML网站,然后既可以在本地直接访问,也可以托管到服务器或者GitHub。实战开始1.安装MkDocs1.1 Ubuntu系统sudo apt-get... 第一步 下载 数据 集到本地下载链接:https://pan.baidu.com/s/15belo01keGvFri43K8TxFQ 提取码:9h3u存储位置:C:/用户/用户名/.keras/datasets(用户名不同人不一样,可能电脑不一样存储位置也略有差异)第二步 导入 数据 集import kerasimport numpy as np# load datafrom keras.datasets... wikidata 旅游旅客 (Traveling tourist) After a short summer break, I have prepared a new blog series. In this first part, we will construct a knowledge graph of monuments located in Spain. As you might kno... 文章目录1. page2. revis ion 3. text4. wb_terms5. wb_changes6. wb_changes_dispatch7. wb_changes_subscript ion 8.wb_id_counter9.wb_items_per_site10.wb_property_info11.wbc_entity_usage12.actor13.archive14.user15... 能够将 维基百科 导入 Neo4j 数据库 是不是很酷?   Neo4j是NoSQL的一个代表,它是一个嵌入式,基于磁盘的,支持完整事务的Java持久化引擎,它在图像中而不是表中存储 数据 。Neo4j提供了大规模可扩展性,在一台机器上可以处理数十亿节点/关系/属性的图像,可以扩展到多台机器并行运行。相对于关系 数据库 来说,图形 数据库 善于处理大量复杂、互连接、低结构化...