47 lines
943 B
Ruby
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
|