Wikipedia の本文データは、XML形式で公開されています。
(詳しい内容は、Wikipediaのダウンロードできるデータファイル一覧 | mwSoft が参考になります)
これをデータベースに投入する手順として、xml2sqlを使う方法がよく紹介されていますが、Wikimedia では「これを使ったやり方は推奨しない」と明記されています。
かといって、importDump.php を使うには PHP 環境を用意しなくていけません。
なので、Java で動く MWDumper を使って jawiki-latest-pages-articles.xml.bz2 (Wikipedia の本文データ)を投入してみました。
ダウンロード
- データベース定義 (tables.sql)
- Wikipedia の本文データ (jawiki-latest-pages-articles.xml.bz2) *1
- MWDumper (mwdumper.jar)
- JDBC Driver for MySQL (mysql-connector-java-5.1.25-bin.jar)
上記をダウンロードして、カレントディレクトリにまとめて置いておいてください。
手順
echo "CREATE DATABASE wikidb;" | mysql -u root
データベース定義を投入します。
mysql -u root wikidb < tables.sql
データを投入します…が、デフォルト設定のままだと com.mysql.jdbc.PacketTooBigException が発生するので、MySQL の設定を変更します。
参考: MySQLで大きなデータを登録しようとするとcom.mysql.jdbc.PacketTooBigException: 発生 - on the center line.
[mysqld] max_allowed_packet = 16M # この行を追加
vi /etc/my.cnf
/etc/init.d/mysql restart
本文データを投入する。
(オプション設定については、 Manual:MWDumper - MediaWiki を参考にしてください)
java -server -classpath mysql-connector-java-5.1.25-bin.jar:mwdumper.jar \ org.mediawiki.dumper.Dumper --output=mysql://127.0.0.1/wikidb?user=root \ --format=sql:1.5 jawiki-latest-pages-articles.xml.bz2
環境にもよりますが、2時間ぐらいかかります。*3
しばらくお待ちください。
終わったら、試しにデータを表示します。
echo "SELECT * FROM text LIMIT 1;" | mysql -uroot wikidb
文字化けせずに無事データが帰ってくれば完了です。
どう使う?
考えてなかった…。