私はelasticsearchでtireを使用していますが、minimum_number_should_matchオプションを使用してブールクエリを作成すると同時に、ブロックに格納されている一連のクエリをスローする方法に困惑しています。
ので、私は持っています
options = {:minimum_number_should_match => 1}
s = Tire.search 'variations' do |search|
search.query do |query|
query.boolean options, &keyword_query(params[:keyword]) unless params[:keyword].blank?
end
end
def keyword_query(keyword)
lambda do |boolean|
boolean.should { string "name:*#{keyword}*"}
boolean.should { string "number:*#{keyword}*"}
boolean.should { string "nrf:*#{keyword}*"}
boolean.should { string "base_color:*#{keyword}*"}
boolean.should { string "skus:*#{keyword}*"}
boolean.should { string "color_name:*#{keyword}*"}
end
end`
ただし、このオプションはElasticSearchへのクエリ終了リクエストに追加されていません。keyword_queryはラムダを返します。このブールクエリにオプションを追加する別の方法はありますか?