CookBook

NEologd の辞書を使って全文検索を新語に対応させる方法

投稿日:2021-06-09 更新日:

この 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 リポジトリを登録する必要があります。

レシピ

  1. Solr 8.7.0 のソースコードを取得する
  2. ソースコードを展開する
  3. ソースコードにパッチを適用する
  4. NEologd のプロパティファイルに最新の更新日を指定する
  5. ビルドを実行する
  6. ビルドした jar を置き換える
  7. 解析結果の確認を行う

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 の場合の例です。

neologd.version=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 が作成されます。

solr-8.7.0/lucene/build/analysis/kuromoji/lucene-analyzers-kuromoji-ipadic-neologd-8.7.0-SNAPSHOT-20200910.jar

6. ビルドした jar を置き換える

プロダクトダウンロードから取得した Solr サーバの以下ファイルを手順 5. で作成された jar に置き換えます。

solr-8.7.0/server/solr-webapp/webapp/WEB-INF/lib/lucene-analyzers-kuromoji-8.7.0.jar

7. 解析結果の確認を行う

Solr の再起動を行い、ブラウザでアドレスバーに以下の URL を入力し、「Solr 管理画面」を表示します。

http://<HOST>:<PORT>/solr/#/

該当のコアを選択し、左のメニューから「Analysis」を選択します。
「Field Value」に適当な文章を入力し、「FieldType」で「text_morph」を選択します。
「Analysis Values」ボタンをクリックすると、解析結果に NEologd が利用されており、新語に対応した形態素解析が行えていることが確認できます。

-CookBook

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Solr の Docker を作成する。

この CookBook では、Solr の Docker の作成手順について紹介しています。 レシピ ベースイメージの作成 Solr の Docker イメージを作成します 実行します 1. ベースイ …

no image

IM-BloomMaker 設計書出力機能の使用方法

この CookBook では intra-mart Accel Platform 2021 Spring から利用可能になった設計書出力機能について紹介します。 なお設計書出力機能を利用するには wa …

no image

外部連携の後処理で任意のエラーメッセージを表示する

このCookbookでは、外部連携の後処理で任意のエラーメッセージを表示する方法を紹介します。 この方法を活用することにより、外部連携の後処理ででエラーが発生した場合、利用者に内容を通知することができ …

no image

後処理プログラムで画面アイテム「ファイルアップロード」にバリデーションを実行する方法

このCookbookでは、画面アイテム「ファイルアップロード」に添付されたファイルをバリデーションする方法を紹介します。 後処理プログラムを使用してバリデーションを実行することで、画面に表示するエラー …

AdobeSign連携を利用する

このCookBookでは、IM-Signを利用したサンプルを紹介します。 サンプルでは、Workflow/BISの案件に紐づいたAdobe Signの契約書を作成して、署名を依頼します。 署名が行われ …