module JurisprudenceSearch def jurisprudence_search(search_params) fulltext_fields = %i[reference_number title short_title].freeze search = Cdao::Jurisprudence.search do fulltext search_params[:q], fields: fulltext_fields if search_params[:q].present? fulltext_fields.each do |field| fulltext search_params[field], fields: [field] if search_params[field].present? end with(:year, search_params[:year].to_i) if search_params[:year].present? with(:subject_ids).any_of(search_params[:subject_ids].split(",").map(&:strip).map(&:to_i)) if search_params[:subject_ids].present? order_by :doc_date, :desc order_by :year, :desc paginate page: search_params[:page] || 1, per_page: search_params[:per_page] || 20 end search end end