@johtaniの日記 2nd

@johtani ‘s blog 2nd edition

日本語Wikipediaをインデクシング(Kuromojiバージョン)

前々回紹介した、日本語Wikipediaのデータをインデックス登録する記事の続きです。

今回は、Kuromojiのアナライザを利用してインデックス登録してみます。

余談(Proxy環境でのプラグインインストール)

ElasticSearchのpluginコマンドはJavaで実装されています。(org.elasticsearch.plugins.PluginManager) プラグインのダウンロードには、java.net.URL.openConnection()から取得URLConnectionを使用しています。

ですので、pluginのインストールを行う際に、Proxy環境にある場合は以下のようにコマンドを実行します。

1
./bin/plugin -DproxyPort=ポート番号 -DproxyHost=ホスト名 -i elasticsearch/elasticsearch-analysis-kuromoji/1.5.0

elasticsearch-analysis-kuromojiのインストール

WikipediaのデータをKuromojiを使って、形態素解析ベースの転置インデックスを作成していきます。 まずは、Kuromojiを利用するために、Analysisプラグインのインストールです。 ElasticSearchのバージョンに対応したプラグインのバージョンがあります。(プラグインのページに対応したバージョンの記載あり) 今回はElasticSearchの0.90.3を利用しているため、1.5.0をインストールします。

1
./bin/plugin -i elasticsearch/elasticsearch-analysis-kuromoji/1.5.0

インストール後は再起動しておきます。 なお、Kuromojiを利用して、Wikipediaのデータを登録するばあい、デフォルトの設定では、ヒープが足りなくなるおそれがあります。 ElasticSearchの起動時に以下のオプションを指定して、最大ヒープサイズを2Gとしておきます。

1
export ES_HEAP_SIZE=2g;./bin/elasticsearch

Indexの作成(デフォルトでKuromojiのAnalyzerを利用する)

Wikipediaのデータを登録する際に、Kuromojiのアナライザを利用したいのが今回の趣旨でした。 一番ラクな方法として、Wikipediaデータのインデックスの設定として、デフォルトのアナライザをKuromojiにしてしまいます。 (きちんと設計する場合は、必要に応じてフィールドごとに指定しましょう)

1
2
3
4
5
6
7
8
9
10
11
curl -XPUT 'localhost:9200/ja-wikipedia-kuromoji' -d '{
    "settings": {
        "analysis": {
            "analyzer": {
                "default" : {
                    "type" : "kuromoji"
                }
            }
        }
    }
}'

これでkuromojiのアナライザがデフォルトで利用される形となります。 あとは、Riverを起動して登録するだけです。

Riverの実行

前回と一緒です。 インデックス名(river/<インデックス名>/meta)だけは、先ほど作成した「ja-wikipedia-kuromoji」に変更してください。

1
2
3
4
5
6
7
8
9
10
curl -XPUT localhost:9200/_river/ja-wikipedia-kuromoji/_meta -d '
{
    "type" : "wikipedia",
    "wikipedia" : {
        "url" : "file:/home/johtani/src/jawiki-latest-pages-articles.xml"
    },
    "index" : {
        "bulk_size" : 10000
    }
}'

あとは、インデックスされるのを待つだけです。

データ量とか

5.8gbになりました。Kuromojiを利用したため、形態素解析により単語にきちんとトークないずされた結果でしょう。 Uni-gramだと、転置インデックスのボキャブラリも単語に対してヒットするドキュメント数も大きくなるため、 インデックスサイズも大きくなっているのかと。

検索クエリのサンプルなどはまた後日。(夜遅いので。。。)

Comments