こんにちは、sunspot と solr を使用する新しい Rails 開発者です。
これが私の検索可能なブロックです:
searchable do
text :name, :boost => 10
text :description
text :tags do
tags.map(&:name)
end
text :ingredients do
ingredients.map(&:ingredient)
end
string :ingredients, :multiple => true do
ingredients.map(&:ingredient)
end
string :user
end
そして私のコントローラー:
@search = Recipe.search do |query|
query.fulltext params[:search]
query.paginate(:page => params[:page] || 1, :per_page => 20)
end
@recipes = @search.results
レシピ検索エンジンを構築しています。基本的に、今はレシピの名前、材料、レシピに関連付けられたタグを検索して、一致するレシピを表示できるようにしています。
しかし、ご覧のとおり、すでに文字列を作成した食材のファセット検索も作成しようとしています。
私の目標は、現在のようにレシピを検索できるようにすることですが、プラス記号を追加すると、次に材料が続き、検索がファセットされ、マイナス記号も同様になるようにします。たとえば、次のようなクエリがあります。
Chicken Piccata +lemon => searches for chicken piccata with lemon
Chicken Piccata -lemon => searches for chicken piccata without lemon
私はこのようなことを試みてきました:
with(:ingredients, params[:ingredients]) if params[:ingredients].present?
しかし、+/- 側の処理方法がわかりません。どうすればこれを達成できますか?
助けてくれてありがとう!