Apache Solrを急遽始めました(1): NEologdを組み込んだSolr7対応のkuromojiを作ってみた。

By | 2018年8月1日 , Last update: 2019年6月8日

はじめに

いろいろと理由(ワケ)あって、Apache Solrを始めることにしました。最終的には本サイトの文章の解析をしてゴニョゴニョすることが目標です。(`・ω・´)

ということで、ゼロからいろいろなWebサイトをあたり始めたわけです。

そしてなんだかよくわからないままいろいろと読み漁ること数日間…

「managed-schemaってのがナウいのか。」

とか、

「データ構造はcurlでカスタマイズするのか。」

というような情報も仕入れつつ、Solrがもともと持っている辞書が古いようだという情報がちらほらとあって、最終的には参考文献[1]の文章に行き当たりましたが、これもSolr6であって7ではないわけです。

「でも、6と7なら近そうだから何とかなるんじゃね?」

と思ったので、Solr7対応のkuromojiで、かつNEologdを組み込んだもの(以下「kuromoji-NEologd」と書きます。)を作ってみることにしました。

この記事ではその顛末について書いていきます。

スポンサーリンク

kuromoji-NEologdの作成に用いた環境

まず、kuromoji-NEologdの作成に用いた環境について詳らかにしておきます。

  • OS(というかディストリビューション): Fedora 28
  • Java: OpenJDK-1.8.0-171
  • Apache Solrのバージョン: 7.4.0

作成の手順

以下の手順で作ります。

  1. MeCabがインストールされていない場合には、root権限で以下のコマンドを実行してインストールします。
    # dnf install mecab mecab-devel mecab-ipadic

    スポンサーリンク

     

  2. Apache Antがインストールされていない場合も、手順1と同様にroot権限で以下のコマンドを実行してインストールします。
    # dnf install ant

     

  3. Apache Solrのダウンロードのページからソースコード(この記事を最初に書いている時点(2018年7月)の最新版は7.4.0です。以下、7.4.0をダウンロードしたものとして記述します。)をダウンロードします。"solr-7.4.0-src.tgz"という名前のファイルをFedora 28が稼働しているPC(以下、単に「Fedora PC」と書きます。)にダウンロードします。
  4. Fedora PC上で以下のコマンドを実行し、手順3でダウンロードしたソースコードを展開します。
    $ tar zxvf solr-7.4.0-src.tgz

     
    すると、solr-7.4.0という名前のディレクトリが作成されて、その下にソースコードが展開されます。

  5. こちらにあるNEologd組み込み用パッチをダウンロードします。なお、ZIPファイルをダウンロードした場合にはunzipコマンド等を用いて展開しておきます。
  6. 手順4で展開した際に作成されたsolr-7.4.0という名前のディレクトリがあるディレクトリ上で以下のコマンドを実行し、ソースコードにパッチを当てます。
    $ cd solr-7.4.0
    $ patch -p1 < lucene-kuromoji-neologd.patch  

  7. スポンサーリンク

  8. NEologdのGitHubでNEologdの最新の更新日を確認します。NEologdのトップページ(下図)の赤矢印のあたりに書いてあることが多いようです。
  9. 手順7で確認した更新日を年4桁、月2桁(左ゼロ詰め)、日2桁(左ゼロ詰め)の8桁で表した文字列をlucene/build.propertiesのneologd.propertiesに指定します。指定例を以下に示します。
    neologd.version=20180726

     

  10. solr-7.4.0の直下のディレクトリで以下のコマンドを実行します。ちょっと時間がかかるかもしれませんが、辛抱強く待ちます。
    $ ant ivy-bootstrap
    $ ant compile
    $ cd lucene/analysis/kuromoji
    $ ant clone-neologd
    $ ant build-dict
    $ ant jar-core

     

  11. lucene/build/analysis/kuromojiの下に以下のような名前のjarファイルが作成されます。
    lucene-analyzers-kuromoji-ipadic-neologd-<lucene version>-SNAPSHOT-<creation date of neologd>.jar

     

インストールの方法

以下の手順でインストールします。

  1. Apache Solrが稼働中の場合は、実行環境のトップディレクトリ"solr-7.4.0"が含まれているディレクトリ上で以下のコマンドを実行して、いったん停止させます。
    $ ./solr-7.4.0/bin/solr stop

     

  2. 前項で作成したjarファイルをApache SolrのWebアプリケーションがデプロイされているディレクトリのWEB-INF/libの下にコピーします。なお、Apache Solrのデプロイ時と同じ権限であればroot権限でなくても構いません。
  3. 手順3のコピー先のディレクトリにはNEologdが組み込まれていないkuromojiがありますので、これを削除します。万が一の自体に備えてrenameすべきところかもしれませんが、ここは男らしく削除します(ただし、その結果得られた結果については責任は負えません)。
  4. 実行環境のトップディレクトリ"solr-7.4.0"が含まれているディレクトリ上で以下のコマンドを実行し、Apache Solrを起動します。使用するメモリ量についてはお好みで設定します。
    $ ./solr-7.4.0/bin/solr start -m 4g

     

スポンサーリンク

まとめ

ここまでの手順で、NEologdが組み込まれたkuromojiをApache Solrにデブロイすることができます。

NEologdはこの記事を書いている時点(2018年8月)では週に2回更新されているとのことなので、業務などで使うシステムのサブシステムとして使うのであればcronなどを使って自動更新するのもありかもしれませんが、本サイトで使う程度であればそこまでの厳密さは求めなくても良いので、当面は今回作ったJARファイルを使って様子を見ることにします。

いろいろと調べてみると、Apache Solrは各メジャーバージョン間でのクラスの改廃が激しいようで、先人の皆様方が公開されているコードが最新版のApache Solrではそのままでは動かないといったことが、割と普通に発生します。この記事を書いている時点(2018年8月)ではSolr7についての日本語の記事が見当たらなかったので、メモ書きレベルではありますが、書いてみました。参考にしていただけると幸いです。

この記事は以上です。

参考文献