Herokuで運営しているサービスの高速化のために全文検索について調査していましたが、どうもHerokuのPostgresqlだけでは完結できそうもない、というところまでわかったので、どんなことを調べたのかメモしときます。
まず、Postgresqlでの日本語の全文検索はできますが、pg_bigm拡張、もしくはpg_trgm拡張が必要のようです。
個別のサーバ環境であれば、それを入れることができますが、Herokuの場合は難しそうです。pg_bigmは入れられません。そして、pg_trgmは有効にできますが、HerokuのPostgresqlの場合だと、検索対象になるデータがアルファベットと数字のみのようで、日本語はダメっぽいです。
参考リンク:
heroku dev center: Extensions, PostGIS, and Full Text Search Dictionaries on Heroku Postgres
Groongaという全文検索エンジンを使う方法もあるようでした。Rubyで扱えるRroongaを使うと簡単でHerokuでも動くし、Addonを必要としないのが利点のようです。buildpackを使ってGroongaがインストールされたDynoを作り、そこにGroongaのデータも持たせるということのようです。
しかし、Dynoは容量制限があるので、Groongaのデータがおそらく多く持てないということで、万が一不具合が起きても困るので(Dynoが持てる容量を増やすとかできないし)、ちょっと今回はパスしたいです。
参考リンク:
株式会社クリアコード: Heroku用Groongaのビルド方法
SlideShare: HerokuでGroonga
となると、残るはElasticsearchを使う方法になりそう。
誰かこうやったらHerokuのPostgresqlだけでいけるよとか、いい方法をご存知でしたら教えてください…。