我正在使用带有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。还有另一种方法可以将选项添加到此布尔查询中吗?
答案 0 :(得分:0)
想出来 - 截至目前,轮胎只在第一次调用布尔值时向布尔请求添加选项。我在上面列出的那个之前有一堆其他的布尔查询,所以我的选择被放到了以太。