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

前回のログイン時刻を表示するポートレットの作成方法

このクックブックでは、前回のログイン時刻を表示するポートレットの作成方法をご紹介します。 具体的には、以下の3つの情報を表示するポートレットを作成します。 前回のログイン時刻 前回ログイン時のIPアド …

no image

IM-BloomMaker 「リッチテーブル」エレメントのサンプル集

この CookBook では、intra-mart Accel Platform 2020 Spring から利用可能になった IM-BloomMaker のリッチテーブルエレメントの活用方法について …

no image

IM-BISで複数のセレクトボックスを連動させて利用する方法

このCookBookでは、セレクトボックスの選択結果によって、他のセレクトボックスの選択肢を絞り込む方法を説明します。 この方法は、IM-BIS導入環境で利用することができます。IM-FormaDes …

no image

intra-martを初めて使う開発者が、まずは e Builder で「Hello world!」する方法

e Builder は、intra-mart Accel Platform で動作するアプリケーションを開発するための開発支援ツールです。 このレッスンでは、intra-martを初めて使う開発者が …

FormaDesignerのユーザプログラム前処理と後処理をロジックフローで作成する方法

このCookBookでは、FormaDesignerのユーザプログラム前処理と後処理をロジックフローで作成する方法を紹介します。 サンプルでは、ユーザプログラム前処理と後処理を利用して、Workflo …