2

我正在使用带有 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。有没有另一种方法可以将选项添加到这个布尔查询?

4

1 回答 1

0

想通了 - 截至目前,轮胎仅在您第一次调用布尔值时向布尔请求添加选项。在我上面列出的那个之前,我还有一堆其他的布尔查询,所以我的选择被丢在了以太中。

于 2012-04-20T21:01:40.733 回答