1

pg_search gem を使用して PostgreSQL の全文検索機能を利用する Rails アプリがあります。

マニュアルには、(たとえば) has_many リレーションを持つモデルの検索について記載されています。

アソシエーションの検索

関連モデルの列を検索することができます。これを行うと、データベースのインデックスで検索を高速化することができなくなることに注意してください。ただし、クロスモデル検索を試すための簡単な方法としてサポートされています。

最後の行は、これが関連付けによる検索をプロトタイプ化するための良い方法であることを示唆しているようです。そして、はい、それは確かに機能します。しかし、通常、結果を返すまでに 10 秒の待ち時間があります。高速なクロスモデル検索を行う方法はありますか?

両方のモデルを別々に検索してから、結果をマージしますか?

4

1 に答える 1

1

回避策として、メイン テーブルに str_* 列を追加し、要素が保存されたときにこの列を更新しました。

  before_validation(on: :save) do
    self.str_abbreviations = join_abbreviations()
    # ... etc, append all columns I'd like to search through ...
    true
  end
于 2013-08-06T19:58:26.100 に答える