【Zulipの魅力】日本語を含む多言語全文検索の設定方法

この記事は約4分で読めます。

※この記事にはプロモーションが含まれています。

Zulipは魅力あるチャットです。その内容はこちら

でも、そのままでは日本語の全文検索機能が使えません。

Zulip自体は全文検索をサポートしていますが、デフォルトでは英文テキストのみなのです。

本記事を読めば、日本語の全文検索機能が使えるZulipにアップグレードできます(^.^)

PGroongaを使う

PGroonga(ピージールンガ)とは?

PostgreSQLの組み込み全文検索機能は一度に1つの言語(Zulipの場合は英語)しかサポートされていません。

PGroongaの全文検索エンジンは日本語や中国語を含むすべての言語を同時にサポートしています。

PGroongaを有効にする手順

以下は、VPS等でZulipをセルフホストし、SSHが使用できる環境にあることを前提のした説明です。

すべての手順は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の優位性は、高速であることです。

参考までにベンチマークの結果を添付します。

出典:PGroongaについて
誠ちゃん
誠ちゃん

セルフホストする場合、エックスサーバーVPSがおすすめです。もちろん、弊社で運用する『https://zulip.hoshihara.co.jp/』も上記VPSで日本語全文検索対応済です!

ホスティングサービスに関するご相談は、弊社へお問い合わせくださいませ。

error: Content is protected !!
タイトルとURLをコピーしました