forgeplus/app/services/concerns/elasticsearch_able.rb

47 lines
943 B
Ruby

module ElasticsearchAble
extend ActiveSupport::Concern
private
def default_options
{
debug: Rails.env.development?,
highlight: highlight_options,
body_options: body_options,
page: page,
per_page: 20
}
end
def keyword
params[:keyword].to_s.strip.presence || '*'
end
def highlight_options
{
fragment_size: EduSetting.get('es_highlight_fragment_size') || 30,
tag: '<span class="highlight">',
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 || per_page.to_i > 20 ? 20 : per_page.to_i
end
def page
params[:page].to_i <= 0 ? 1 : params[:page].to_i
end
end