2

私は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はラムダを返します。このブールクエリにオプションを追加する別の方法はありますか?

4

1 に答える 1

0

それを理解しました-今のところ、tireは最初にブール値を呼び出したときにのみブール値要求にオプションを追加します。上にリストしたものの前に他のブールクエリがたくさんあったので、私のオプションはエーテルに落ちていました。

于 2012-04-20T21:01:40.733 に答える