1

これはおそらく非常に単純ですが、うまくいきません。私は Project クラスにこのタイヤ/エラシックサーチクエリを持っています:

  def self.search(params)
    tire.search(load: true, page: params[:page], per_page: 8) do
      query do
        boolean do
          must { string params[:query], default_operator: "AND" } if params[:query].present?
          must { term :status, "posted" }
          must { term :budget, params[:budget] } if params[:budget].present?
        end
      end
    end
  end

「投稿済み」または「クローズ済み」で検索するステータス用語が必要ですが、これを解決できません。term :status, ["posted", "closed"] を試しましたが、これは結果を返さないため、おそらく AND を実行します。ここで正しいタイヤ構文に感謝します。(NB ここでは jason/elasticsearch 文字列を探していません)どうもありがとう!

4

1 に答える 1

5

必要なのは、配列として渡された用語間termsを実行するクエリです。OR

must { terms :status, ["posted"] }

または動的な値の場合は次のようになります。

# params[:status] can be single value or array
must { terms :status, Array(params[:status]) }

詳細とコンテキストについては、タイヤのドキュメントのこの部分を参照してください。

于 2012-07-25T10:00:06.570 に答える