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

WebServer へのリクエスト情報から動的に BaseURL を決定する方法(Apache 編)

ここでは、WebServer(Apache)へのリクエスト情報から BaseURL を動的に決定する方法を BaseUrlProvider のサンプル実装、Apache との連携例と共に紹介します。 …

スプレッドシートにフロー毎の未処理件数を表示するポートレットの作成方法

このクックブックでは、スプレッドシートにフロー毎の未処理件数を表示するポートレットの作成方法をご紹介します。 ポートレットは、スプレッドシートとIM-Workflow REST APIを利用して作成し …

no image

承認ノードの画面アイテムに任意の初期値を設定する方法

このCookBookでは、BISワークフローにおいて、承認ノードの画面アイテムに任意の初期値を設定する方法を紹介します。 画面アイテムに任意の初期値を設定する方法としては、画面アイテムプロパティである …

IM-BloomMaker リッチテーブルのセルにアイコンを表示する方法

このCookBookでは、リッチテーブルのセルに Font Awesome 5 や CSS Sprite Image List のアイコンを表示する方法について紹介しています。 intra-mart …

no image

Docker Compose で Accel Platform 環境を構築する。

この CookBook では、Docker Compose を利用して Accel Platform 環境を構築する手順について紹介しています。 この CookBook では、以下の記事で作成した D …