我正在使用带有 elasticsearch 的轮胎,我很难过如何使用 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 返回一个 lambda。有没有另一种方法可以将选项添加到这个布尔查询?