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

IM-BloomMaker レイアウトの作り方(縦に並べる編)

この CookBook では、コンテンツ種別が Bulma のレイアウトを縦に並べる方法を紹介します。また、レイアウトを横に並べる編もありますので、併せてご確認ください。https://dev.int …

no image

BloomMaker 独自の入力チェックでエラーとなった時に入力部品にエラーのハイライトを表示する方法

このCookBookでは、Accel Platform 2021 Springから利用可能になったプロパティ「入力規則エラーハイライト」について紹介しています。 「入力規則エラーハイライト」は、入力さ …

no image

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

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

no image

request.log を Kibana で可視化する方法

この CookBook では、request.log を Kibana で可視化する方法について紹介しています。 方法は色々ありますが、この CookBook では Logstash と logsta …

IM-BloomMaker グラフエレメントの使い方(基本編)

このCookBookでは、intra-mart Accel Platform 2019 Winter から利用可能になった IM-BloomMaker のグラフエレメントの使い方について紹介しています …