Zulipは魅力あるチャットです。その内容はこちら!
でも、そのままでは日本語の全文検索機能が使えません。
Zulip自体は全文検索をサポートしていますが、デフォルトでは英文テキストのみなのです。
本記事を読めば、日本語の全文検索機能が使えるZulipにアップグレードできます(^.^)
PGroongaを使う
PGroonga(ピージールンガ)とは?
PGroongaはPostgreSQLを高速に日本語全文検索可能なシステムに拡張する魔法のような拡張機能です。PGroongaの他にも類似の拡張機能はありますが、速度・機能面で他の拡張機能とは一線を画しています。これはPGroongaはバックエンドにGroongaという本格的な全文検索エンジンを使っているためです。
出典:https://groonga.org/ja/
PostgreSQLの組み込み全文検索機能は一度に1つの言語(Zulipの場合は英語)しかサポートされていません。
PGroongaの全文検索エンジンは日本語や中国語を含むすべての言語を同時にサポートしています。
PGroongaを有効にする手順
すべての手順はroot権限で実行します。
PGroongaが有効になるようにデプロイメント設定を変更
crudini --set /etc/zulip/zulip.conf machine pgroonga enabled
デプロイメントを更新
/home/zulip/deployments/current/scripts/zulip-puppet-apply
拙者の場合、ここでエラーが出力されました!
subprocess.CalledProcessError: Command ‘[‘ruby’, ‘-r’, ‘puppet/version’, ‘-e’, ‘puts Puppet.version’]’ returned non-zero exit status 1.
このエラーが出力された場合、『Puppetのgemがインストールされていない』可能性が高いです。
以下、ご参考
トラブルシューティング手順
1.Rubyのインストール確認
ruby -v
これでRubyがインストールされているか確認します。
2.Puppet gemのインストール確認
gem list | grep puppet
Puppet gemがリストに表示されるか確認します。
3.Puppet gemの再インストール(リスト表示されなかった場合は実行します)
gem install puppet
4.puppetのバージョンを確認
ruby -r puppet/version -e 'puts Puppet.version'
エラーメッセージが表示されないかを確認します。バージョンが表示されればOK!
再度、「デプロイメントを更新」を実行します。
PGroongaを有効にするための変数を追加
以下を、/etc/zulip/settings.py の最終行に追加します。
USING_PGROONGA = True
PGroongaのマイグレーションを適用
su zulip -c '/home/zulip/deployments/current/manage.py migrate pgroonga'
処理時間が長くなる場合があります。その間、ユーザーは新しいメッセージを送信できないので注意が必要です。
Zulip を再起動
su zulip -c '/home/zulip/deployments/current/scripts/restart-server'
日本語全文検索の確認
検索窓に検索したいキーワードを入力し、Enter キーを2回(仕様?)叩きます。
検索できるようになりました!
まとめ
PostgreSQLは、デフォルトではアルファベットベースでない言語の全文検索はサポートされていません。
ということは、日本語・中国語・韓国語といったアジアの言語もサポートされていないことになります。
本記事では、これを解決する方法として、PostgreSQLの拡張機能である「PGroonga」を有効にする手順を説明したものになります。
アジアの言語をサポートするサードパーティのモジュールは他にもあります。例えば、「pg_bigm」があります。
PGroongaの優位性は、高速であることです。
参考までにベンチマークの結果を添付します。
セルフホストする場合、エックスサーバーVPSがおすすめです。もちろん、弊社で運用する『https://zulip.hoshihara.co.jp/』も上記VPSで日本語全文検索対応済です!
ホスティングサービスに関するご相談は、弊社へお問い合わせくださいませ。