1

レシピモデル内の複数の列を検索する検索フォームがあります。現時点では、完全な文字列ベースでのみ結果が返されるため、ラザニアを検索すると結果が得られますが、ラザニアを検索すると何も返されません。むしろそれがa=を行うと考えるのは正しいですか?検索私はLIKE検索を行う必要がありますか?もしそうなら、私はこれを達成するための構文がわかりません。

私の現在のクエリは次のようになります

@countrysearch = Recipe.where("dish_name = ? OR country_of_origin = ? OR difficulty = ? OR preperation_time = ?",
params[:search],
params[:search],
params[:search],
params[:search]

)。

これを部分的なテキストで検索するにはどうすればよいですか?または、使用する構文をアドバイスするリソースを誰かに教えてもらえますか?

助けていただければ幸いです

ありがとう

4

3 に答える 3

1

これは、テーブルに大量のデータが含まれない場合に機能します。大量のレシピがある場合LIKE、大規模なデータセットに対する多数のクエリはすぐに行き詰まる可能性があります。

あいまい検索を可能にする、Rails 用のいくつかの検索エンジン統合を確認することをお勧めします。Rails モデルとの緊密な統合を可能にするいくつかの優れたオプションがあるため、モデルを更新するたびに検索インデックスも更新されます。

私のお気に入りは、Rails でタイヤを使用するElasticsearchですが、多くの人は Solr や Thinking Sphinx などを信頼しています。Railscastsでいくつかの優れた検索オプションを確認してください。いずれも問題を解決します。

于 2012-11-10T08:21:48.540 に答える
1

私は答えを見つけたと思いますが、誰かがより良い解決策を持っている場合はアドバイスしてください

コントローラー内で私は今持っています

    q = "%#{params[:search]}%"
    @countrysearch = Recipe.where("dish_name LIKE ? OR country_of_origin LIKE ? OR difficulty LIKE ? OR preperation_time LIKE?",
q,
q,
q,
q

)

于 2012-11-10T08:07:47.900 に答える
0

postgresql データベースを使用している場合は、pg_search gem を確認してください。これは、多くの便利なオプションを備えた全文検索をサポートしています。

于 2012-11-10T14:05:59.347 に答える