or 演算子を使用したこのような思考のスフィンクス検索条件があります。
Oil.search "(@oiliness #{params[:oiloiliness].gsub(/[^0-9A-Za-z]/, '')} | @oiliness #{params[:oiloiliness]}) | (@description #{params[:descr]})
ただし、or 演算子を使用できるように変更する必要がありますが、条件に if ステートメントを追加することもできます。たとえば、params[:descr] は空なので、@description で検索する必要はありませんでしたエラーをスローします)。
if params[:descr] then did not use this part (@description #{params[:descr]}) のようなものが必要です。しかし、これを行う最善の方法は何ですか?
たぶん、次のような条件「構文」を使用する方が簡単です。
Oil.search :conditions => {oiliness: "#{params[:oiloiliness].gsub(/[^0-9A-Za-z]/, '')} | #{params[:oiloiliness]}", params[:descr].present? ? description: "#{params[:descr]" : nil}
このようなもの...
また:
ThinkingSphinx::Index.define :oil, :with => :active_record do
indexes :oiliness
indexes :structure
indexes :manufacturer
indexes :capacity
indexes :description
end
また、私は試します:
@pre_oils = Oil.search :conditions => {oiliness: "#{params[:oiloiliness].gsub(/[^0-9A-Za-z]/, '')} | #{params[:oiloiliness]}", description: "#{params[:oiloiliness].gsub(/[^0-9A-Za-z]/, '')} | #{params[:oiloiliness]}", capacity: params[:oilsize], manufacturer: params[:oilbrand]}