PGroongaを使って自鯖のMisskeyで快適にエゴサする
しなちくシステム氏のノート検索高速化記事 を基に、MisskeyインスタンスのPostgreSQLにPGroongaを導入して快適に全文検索ができるようにする方法をご紹介します。
いつも通りあまり難しい設定は必要ありません。3ステップの簡単な作業で導入できます。
Misskey運用・構築・開発関連記事リスト
1. PGroongaのインストール
公式サイトのドキュメントに従ってインストールしてください。
インストールシェルスクリプトの環境ではUbuntuの公式リポジトリ用の節に従います。
必要な部分のコマンドを下記に引用します。
sudo apt install -y software-properties-common
sudo add-apt-repository -y universe
sudo add-apt-repository -y ppa:groonga/ppa
sudo apt install -y wget lsb-release
wget https://packages.groonga.org/ubuntu/groonga-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt install -y -V ./groonga-apt-source-latest-$(lsb_release --codename --short).deb
echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release --codename --short)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
sudo apt install -y -V postgresql-13-pgdg-pgroonga
(シェルスクリプトでインストールするPostgreSQLバージョンが変更されている場合、postgresql-13-pgdg-pgroonga
の13の部分を変更してください。)
2. PostgreSQLにpgroongaを適用
リスクが伴う作業なので、PostgreSQLの内容をすべてバックアップします。
(pg_dumpallしたものをgzip圧縮しmis.gzとして保存します)
sudo -u postgres pg_dumpall | gzip -c > mis.gz
postgresユーザーでpsqlに入ります。${database}
はMisskeyで使用しているデータベース名に置き換えます。
sudo -u postgres psql ${database}
${database}=#
に入るので、次のコマンドを実行します。
CREATE EXTENSION pgroonga;
\q
3. Misskeyにパッチを適用
最後に、Misskeyに下記のPGroonga対応パッチを適用し、通常通りビルドとマイグレーションを行って起動してください。
パッチ適用はdiffファイルとGitHubブランチのどちらかを頑張って適用してください……。
なお、このパッチではILIKEの代わりに&@~
を使用するようにするため、AND/OR検索といったクエリー構文を利用できます。
*復旧方法
理論上の復旧方法を書いておきますが、試していないので責任は負いかねます……。
mis.sqlはかなり大きいと思うので注意してください。gzipからpg_restoreに直接パイプできるかも?
gzip -c -d mis.gz > mis.sql
pg_restore -c mis.sql