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

intra-mart WebPlatform の access.log に X-Forwarded-For を出力する方法。

この CookBook では、intra-mart WebPlatform の access.log に X-Forwarded-For を出力する方法について紹介しています。 フロントに Web サ …

IM-FormaDesignerでアップロードしたExcelファイルの内容を画面上に出力する方法

このCookBookでは、IM-FormaDesignerでBISフローの申請画面にてアップロードしたExcelファイルの内容を承認画面にて出力する方法を紹介します。 完成イメージ 完成サンプル 以下 …

BloomMakerでワークフローの添付ファイルを直接編集する画面を作成する

このCookBookでは、BloomMakerで、ワークフローの添付ファイルを直接追加や削除する画面を作成してみました。 本稿で紹介のサンプルのように、BloomMakerを利用することで、ちょっとし …

no image

e Builder から Payara を起動する方法

この CookBook では、e Builder から Payara を起動する方法について紹介しています。 レシピ External Tools を表示します。 Program を追加します。 Pr …

no image

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

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