module ElasticsearchAble extend ActiveSupport::Concern private def default_options { debug: Rails.env.development?, highlight: highlight_options, body_options: body_options, page: page, per_page: per_page } end def keyword params[:keyword].to_s.strip.presence || '*' end def highlight_options { fragment_size: EduSetting.get('es_highlight_fragment_size') || 30, tag: '', fields: { '*' => { type: 'plain', number_of_fragments: 3 } } } end def body_options hash = {} hash[:min_score] = (EduSetting.get('es_min_score') || 10) if keyword != '*' hash end def per_page per_page = params[:per_page].to_s.strip.presence || params[:limit].to_s.strip.presence per_page.to_i <= 0 ? 20 : per_page.to_i end def page params[:page].to_i <= 0 ? 1 : params[:page].to_i end end