RailsでPGroongaを使う。サイキョウラインサイキョウラインコンピュータに関係あることとか、ないこととか。RailsでPGroongaを使う。その2RailsでPGroongaを使う。yoshukiRailsでPGroongaを使う。サイキョウライン全文検索そのものと、キーワードのハイライトについてはよかったのですが、pgroonga.score関数でとれるスコアを使ったソートで問題が・・・(つづく)前回の続き、この問題について。端的に言うと、せっかく作ったインデックスを使ってくれずスコアが取れないため、結果として正しくソートが出来ていません。pgroonga.score関数の仕様はこの様になっています。PGroongapgroonga.score関数はインデックスを使わずに全文検索した場合は常に0.0を返します。言い換えると、pgroonga.score関数はシーケンシャルスキャンで全文検索を実行した場合は常に0.0を返します。チュートリアルでは作ったインデックスを使わせる対策として、enable_seqscanをoffにしていました。PGroonga確実にpgroongaインデックスを使うためにシーケンシャルスキャンを無効にします。直にクエリを発行するなら、SELECTの前後でenable_seqscanをoff→DEFAULTと一時的に切り替えてあげればよいと思うのですが、ActiveRecordを使っているとクエリが発行されるのは実際に結果が必要になったタイミングなので、この様に書いても意味がありません。DEFAULT'SELECTの前後にコールバックがあればいいのですが、探してみても用意されてはいないみたい。after_findは期待している動きとはちょっと違う。)かと言って、postgresql.confに書いてしまうのはやり過ぎ、というか全体でシーケンシャルスキャンをoffにしてしまうのは問題だと思います。このような場合、どう実装するのがいいのでしょうか。追記]ActiveRecordが生成するSQLをpsqlで流すとインデックスが使われることは確認できているので、enable_seqscanをどこで切り替えるか、に悩んでいます。Railsタグ:コメントは受け付けていません。RailsでPGroongaを使う。「措法28の2」のやつが延長されている件について。あけましておめでとうございます。