You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

31 lines
1.0 KiB

module DocumentSearch
def document_search(search_params)
fulltext_fields = %i[reference_number title short_title].freeze
search = Cdao::Document.search do
fulltext search_params[:q], fields: fulltext_fields, query_phrase_slop: 1 if search_params[:q].present?
fulltext_fields.each do |field|
fulltext search_params[field], fields: [field], query_phrase_slop: 1 if search_params[field].present?
end
with(:year, search_params[:year].to_i) if search_params[:year].present?
without(:id).any_of(search_params[:exclude_ids]) if search_params[:exclude_ids].present?
with(:citation_finders_names).any_of([search_params[:citation_finder]]) if search_params[:citation_finder].present?
with(:is_only_in_premium_libraries, false)
if search_params[:sort_by].blank?
order_by :search_year, :desc
order_by :reference_number, :desc
order_by :search_doc_date, :desc
end
paginate page: search_params[:page] || 1, per_page: search_params[:per_page] || 20
end
search
end
end