MisskeyはMeilisearchという全文検索エンジンに対応しています。
Meilisearchを導入することで、Misskeyの検索が高速になり、AND検索も使えるようになります。
ただし、Misskey(この記事を書いている時点)には、導入前の過去投稿をMeilisearchに登録する機能がありません。
[13.12.0 beta.5]Meilisearchで導入以前の過去のノートを検索できるようにマイグレーションしたい · Issue #10789 · misskey-dev/misskey
そのため、過去投稿の登録を手動で行う必要があります。
今回は登録を手助けするツールaminomeを作ったので紹介します。
対象環境
- Misskey 2023.10.x以降
- aidで動作確認済み。(aidxもおそらく動くはず)
- Postgresql 15.x
- meilisearch 1.4.x
- Ubuntu 22.04
aminomeを使う
Misskeyの投稿をMeilisearchへ登録(インデックス)するツールaminomeを作りました。
Python3が必要です。
dev-hato/aminome: Add all misskey notes to Meilisearch
使い方はREADMEに書いてある通りです。
まずはpip3で必要なパッケージをインストールします。
|
|
次に、aminome.pyを開いてPostgresqlの認証情報を入力します。
(将来的にはMisskeyのconfigファイルを指定したらよしなに実行できるようにしたい。)
|
|
続いてMeilisearchの認証情報を入力します。
api_keyはMeilisearchのAPIキーを記載します。(マスターキーでも動きます)
localhostの部分はMeilisearchを動かしているサーバーのアドレスに直してください。
indexはデフォルトだと、ドットをハイフンに置換したドメイン名です。(Misskeyサーバーのドメインがexample.comならばexample-comになります。)
|
|
最後に python3 ./aminome.py
で実行すれば、過去投稿をMeilisearchへ登録できます。
よくある質問
-
Q. ローカル投稿だけでなく連合の投稿も登録したい。
-
A. urlの指定を削除すれば全投稿をMeilisearchに登録できます。
-
Q.
Attribute createdAt is not sortable.
がログに出て検索が動かない。 -
A. 原因は不明ですがsortableの指定が必要なようです。インスタンスによっては検索できないことがあるをご確認ください。
類似ツール
他にも過去投稿を登録するツールを公開されている方がいるので紹介します。
aminomeより作りは良いです。
- MisskeyIO/misskey-meilisearch-reindex
- misskey.io謹製のツール。2023.10.2以降では動かない。
- noellabo/misskey_meilisearch_importer: Importer of Misskey’s past posts on Meilisearch
- noellaboさん作。2023.10.2以降でも動く。
Meilisearch導入の利点と欠点
本題からずれますが、Meilisearch導入の利点と欠点をざっくり書いておきます。
- 利点
- 検索結果が高速で手に入る。
- AND検索が使える。
- 欠点
- Meilisearchはサーバーリソースを使う。
- 特にストレージ使用量が多い。
- 日本語の検索精度が微妙。(検索に出てこない投稿がある。)
- ミュート機能が効かない。
- バージョンアップのたびに、データのダンプリストアが必要。
- Meilisearchはサーバーリソースを使う。
私は概ね満足していますが、検索精度の微妙さとMeilsearchがストレージをモリモリ使うので、人を選ぶと思います。
中小規模サーバーならば、(Misskeyの改造が必要ですが)PGroonga対応した方が幸せになれそうな気もします。
あとがき
ツールを作った当初は、あまり需要がないのかなと思って放置していましたが、タイムラインを眺めていると意外と困っている方がいたので記事にすることにしました。
困ってる人の助けになれば嬉しく思います。
configがファイルに分かれてなかったり、細かい設定ができなかったり、pythonだったりいけてない点はありますごめんなさい。
欲を言えばMisskey本体に登録機能が実装されたら嬉しいですね。私はNode.jsを書けないためPRを出さずにツールを書いてしまいましたが。