フラワー ストアに簡単な検索リクエストを実装しようとしていますが、Tire と ElasticSearch を初めて使用するため、その方法がわかりません。
私は検索可能なモデルProduct
、およびhabtmモデル、、Category
をColour
持っていFlower
ます。私が欲しいのは、各関連付けのチェックボックスで、これに似たリクエストを生成します:
http://example.com/search?q=some%20query&category_names[]=bouquet&category_names[]=marriage&colour_names[]=red&colour_names[]=yellow&colour_names[]=white&flower_names[]=rose&flower_names[]=tulip&price_min=100&price_max=1000
ただし、次のような製品のみを表示する必要があります。
a) prestent in any of the requested categories (OR);
b) have all of the requested colours (AND);
c) have all of the requested flowers (AND);
d) enter the price range between price_min and price_max.
このq
パラメーターは、テキスト フィールドに入力された任意のテキストを関連付けの名前 (たとえば、red roses bouquet
) で検索し、上位の基準でも表示することです。
今のところ私は
class Product
include Mongoid::Document
include Tire::Model::Search
include Tire::Model::Callbacks
has_and_belongs_to_many :categories
has_and_belongs_to_many :colours
has_and_belongs_to_many :flowers
def self.search(params)
tire.search(load: true, page: params[:page], per_page: 8) do |search|
search.query { string params[:query] } if params[:query].present?
end
end
def to_indexed_json
self.to_json(methods: [:category_names, :colour_names])
end
def category_names
self.categories.collect { |c| c.name }
end
def colour_names
self.colours.collect { |c| c.name }
end
end
設定方法がわかりません。filters
とについて読みましfacets
たが、英語が母国語ではないため、何が何をどのように使用するのか理解できません。