1

こんにちは、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?

しかし、+/- 側の処理方法がわかりません。どうすればこれを達成できますか?

助けてくれてありがとう!

4

1 に答える 1