おひとり様MastodonサーバーにElasticsearch+kuromojiを導入したので、備忘録として残しておきます。
なんでElasticsearch+kuromojiなの?
A. Elasticsearchをインストール時にバージョン管理をしてなかったから
kuromojiは公式プラグインなだけあって、Elasticsearchの最新版を入れてもたいてい動くのですが、sudachiだとそうはいきません。2023年5月16日現在、Elasticsearchは7.17.10と8.7.1がリリースされていますが、sudachiは7.17.9と8.6.2までしか対応していません。
つまり、Elasticsearchインストール時にバージョン指定をしていないと、sudachiが対応していないバージョンをインストールしてしまう可能性があるのです。(実際に私がそれをやらかした)
インストールメモ
大まかな流れ
- Mastodonの公式ドキュメントを見ながら、JavaとElasticsearchをインストール
- kuromojiのダウンロード・インストール
- 検索結果の表示設定をいじる
大まかにはこんな感じ。Mastodonの公式ドキュメントではバージョン7のダウンロード・インストールが推奨されているので、素直にバージョン7を導入しました。sudachiの場合は2の部分で辞書のダウンロード・3の設定がより複雑になります。
ここから先は私がつまづいたポイントを備忘録として残します。
Elasticsearchのバージョン指定インストール
apt install
の時にバージョンを指定すればOK。
ついでにバージョンを固定しておくと、アップデートのせいでkuromojiもしくはsudachiが動かなくなったということが無くなるので、やっておくと吉。
$ sudo apt install elasticsearch=7.17.9
$ sudo apt-mark hold elasticsearch
.env.productionの場所
/home/mastodon/live
の中にあります。WinSCPやVimで編集すればOK。
kuromojiのダウンロード・インストール
$ apt install unzip
$ wget https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-kuromoji/analysis-kuromoji-7.17.10.zip
$ /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///root/analysis-kuromoji-7.17.10.zip
上記のコマンドで7.17.10用kuromojiプラグインがダウンロード・インストールできます。他のバージョンを導入する場合、下記のサイトからダウンロードURLを取得します。
https://www.elastic.co/guide/en/elasticsearch/plugins/index.html
「Elasticsearchのバージョン>Analysis Plugins>Japanese(kuromoji) Analysis Plugin」の順で移動し、「Installation」の中にあるzipURLをコピーして、上記のコマンドにコピペすればOK。インストールコマンドのzipファイル名を、該当バージョンに変更することを忘れずに。
検索設定をいじる
検索結果のソートを変更する
/home/mastodon/live/app/services/search_service.rb
を開いて編集します。
def perform_statuses_search!
- definition = parsed_query.apply(StatusesIndex.filter(term: { searchable_by: @account.id }))
+ definition = parsed_query.apply(StatusesIndex.filter(term: { searchable_by: @account.id }))order(id: :desc)
order(id: :desc)
を追加することで、新しい投稿順でソートできるようになります。
該当トゥートの最大表示件数を変更する
/home/mastodon/live/app/controllers/api/v2/search_controller.rb
を開いて編集します。
- RESULTS_LIMIT = 20
+ RESULTS_LIMIT = 50
最大表示件数を20から50に変更しました。このあたりの数字はお好みで。
参考サイト
- Configuring full-text search – Mastodon documentation
- マストドン(mastodon)の全文検索系(Elasticsearch+sudachi)のコードに手を入れてみた(v3.3.0対応) – プログラミングなんてわからないんですけど〜
- Mastodon3.2.1にElasticsearch+sudachiを導入 | blog.asterism.xyz
sudachiの投稿だけど気にしない。というかやってることはほぼsudachiと同じだしね……。