この CookBook では、Solr で利用している形態素解析エンジンである kuromoji に NEologd を取り入れビルドを行い、
既存の kuromoji の実装と差し替えることで、NEologd を利用した全文検索を行う方法について紹介しています。
NEologd は、Web 上の言語資源から得た新語を追加した MeCab 用のシステム辞書です。
NEologd を利用することにより、新語に対応した形態素解析が可能となります。
紹介する内容は 2021 Spring 以降で利用している Apach Solr 8.7.0 を対象としています。
ビルドの前提
ビルドの環境は以下を前提とします。
- OS
- Linux(執筆時は CentOS 8 で実施)
- 必要なライブラリ(dnf などのパッケージ管理システムを利用してあらかじめインストールしておく)
- ant
- git
- mecab
- mecab-devel
- mecab-ipadic
- file
mecab 関連のパッケージのインストールには Groonga リポジトリを登録する必要があります。
レシピ
- Solr 8.7.0 のソースコードを取得する
- ソースコードを展開する
- ソースコードにパッチを適用する
- NEologd のプロパティファイルに最新の更新日を指定する
- ビルドを実行する
- ビルドした jar を置き換える
- 解析結果の確認を行う
1. Solr 8.7.0 のソースコードを取得する
Solr のダウンロードサイトから Solr 8.7.0 のソースコードを取得します。
※2021 Spring 以降で利用している Apach Solr 8.7.0 を対象としているため、ソースコードのバージョンは必ず Solr 8.7.0 としてください。
https://solr.apache.org/downloads.html
2021 年 4 月 1 日 現在では、以下から取得可能です。
https://archive.apache.org/dist/lucene/solr/8.7.0/solr-8.7.0-src.tgz
2. ソースコードを展開する
手順 1. でダウンロードしたソースコードを展開します。
3. ソースコードにパッチを適用する
パッチは以下をダウンロードしてご利用ください。
※ zip ファイルがダウンロードされるので、解凍したファイルをご利用ください。
solr-8.7.0-kuromoji-neologd.patch
解凍したパッチをカレントディレクトリに配置します。
手順 2. で展開したディレクトリに移動後、以下コマンドを実行し、展開したソースコードにパッチを適用します。
patch -p1 < solr-8.7.0-kuromoji-neologd.patch
4. NEologd のプロパティファイルに最新の更新日を指定する
以下より mecab-user-dict-seed.YYYYMMDD.csv.xz の YYYYMMDD を確認します。
https://github.com/neologd/mecab-ipadic-neologd/tree/master/seed
lucene/build.properties の neologd.version に YYYYMMDD を指定します。
以下は YYYYMMDD が 20200910 の場合の例です。
5. ビルドを実行する
solr-8.7.0 の直下のディレクトリで、以下のコマンドを実行します。
ant ivy-bootstrap
ant compile
cd lucene/analysis/kuromoji
ant clone-neologd
ant build-dict
ant jar-core
ビルド後、以下に jar が作成されます。
6. ビルドした jar を置き換える
プロダクトダウンロードから取得した Solr サーバの以下ファイルを手順 5. で作成された jar に置き換えます。
7. 解析結果の確認を行う
Solr の再起動を行い、ブラウザでアドレスバーに以下の URL を入力し、「Solr 管理画面」を表示します。
該当のコアを選択し、左のメニューから「Analysis」を選択します。
「Field Value」に適当な文章を入力し、「FieldType」で「text_morph」を選択します。
「Analysis Values」ボタンをクリックすると、解析結果に NEologd が利用されており、新語に対応した形態素解析が行えていることが確認できます。