[Laravel] ElasticSearchとLaravel Scoutで全文検索 (3) – Kuromojiセットアップ

Kuromojiは日本語の形態素解析ライブラリ。これ無しだと、日本語が分かち書きされない状態でインデックス化されてしまうので、日本語の単語で全文しようとしてもうまくヒットしないのだろうと想像する。

Kuromojiに関しては以下の説明が明るい。

Elasticsearchを日本語で使う設定のまとめ – Qiita
http://qiita.com/shin_hayata/items/41c07923dbf58f13eec4

Kuromojiのインストール

kuromoji – japanese morphological analyzer
http://www.atilika.org/

Japanese (kuromoji) Analysis Plugin | Elasticsearch Plugins and Integrations [5.5] | Elastic
https://www.elastic.co/guide/en/elasticsearch/plugins/current/analysis-kuromoji.html

ElasticSearch同梱のユーティリティを使ってインストールする。

Kuromojを設定する

公式サイトを眺めてみたんだけど、はっきりと「設定はコレ」みたいな記事がない。

以下の記事がちょっと古いんだけど設定ファイルの記述があったのでなぞってみる。

Elasticsearch に kuromoji を入れて日本語全文検索をする – Qiita
http://qiita.com/mserizawa/items/8335d39cacb87f12b678

設定ファイル編集してElasticSeachを再起動したらログにエラーが出た。

API経由でインデックスごとに設定しろということらしい。

インデックスの変更前にはインデックスを一旦クローズする必要がある。そして設定を変更してから、インデックスを再度オープンすることで、新しい設定でインデックスが使えるようになる。これ少しハマったので以下記事を覚書リンク。

elasticsearch – error when trying to update the settings – Stack Overflow
https://stackoverflow.com/questions/19758335/error-when-trying-to-update-the-settings

これで設定が変わったので、古い設定のまま作成されているインデックスをいったん削除する。

再び記事をElasticSearchに流し込む。

インデックスのサイズを比べてみる。Kuromoji追加前のインデックスは記事12件で183KB。

Kuromoji追加後のインデックスは記事12件で292.9KB。

形態素解析により日本語が分かち書きされてインデックスされた結果だろう。

日本語の単語で検索したら今度はちゃんとヒットした。良さげ。