0

私は求人モデルを持っており、キーワード検索である検索機能を実装したいと考えています。つまり、検索にキーワードを入力しても、それが求人テーブルのデータベースに存在する場合、結果を表示する必要があります。

現在、私は1つのフィールド、つまりparams [:category]のように会社名とカテゴリに一致する次のコードを使用しています.Followingは私のjobplacementcontroller/indexアクションのコードです

if params[:search]
      @search_condition = "%" + params[:search] + "%"
      @searchresult = Jobplacement.where(['name LIKE ? and category = ?', @search_condition ,params[:category]])
else 
     @searchresult = ""
end

また、上記のコードでは、カテゴリの条件を指定しましたが、正しく実行されていません。検索すると、名前フィールドに一致する結果が得られますが、params [:category] ​​条件を評価していません。パラメータ[:カテゴリ]。


以下は、私の求人モデルのフィールドです。

t.string   "name"
t.string   "designation"
t.string   "qualification"
t.integer  "years_of_exp"
t.string   "location"
t.integer  "noofpost"
t.string   "jobprofile"
t.string   "salaryoffered"
t.string   "contactperson"
t.string   "employmenttype"
t.text     "address"
t.string   "city"
t.string   "state"
t.string   "country"
t.integer  "contactno"
t.string   "website"
t.text     "aboutcompany"

そのため、検索にキーワードを入力すると、それが任意のフィールドのデータと一致する場合、そのデータが返されます。これを行うにはどうすればよいですか...どうすればこのparams [:category]エラーを解決でき、一致するキーワード検索を行うことができますか1 つのフィールドだけでなく、求人モデルのデータベースに存在するすべてのレコード。

4

2 に答える 2

0

Thinking Sphinxをチェックしてください。問題の解決策があり、部分文字列検索、ワイルド文字のサポートなどの機能が追加されています

于 2012-05-28T06:13:00.257 に答える
0

squeel gem http://erniemiller.org/projects/squeel/を使用すると、次の ように簡単に実行できます。

terms = params[:search].split 
Jobplacement.where {name.eq(params[:category]) & (name.like_any(terms) | designation.like_any(terms) | qualification.like_any(terms) <...>) } 
于 2012-05-28T10:25:15.980 に答える