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.
47 lines
972 B
47 lines
972 B
5 years ago
|
module Searchable::Memo
|
||
|
extend ActiveSupport::Concern
|
||
|
|
||
|
included do
|
||
|
searchkick language: 'chinese', callbacks: :async
|
||
|
|
||
|
scope :search_import, -> { includes(:descendants) }
|
||
|
end
|
||
|
|
||
|
def searchable_title
|
||
|
subject
|
||
|
end
|
||
|
|
||
|
def should_index?
|
||
|
hidden.zero? && root_id.blank? && parent_id.blank?
|
||
|
end
|
||
|
|
||
|
def search_data
|
||
|
{
|
||
|
name: subject,
|
||
|
content: Util.extract_content(content)[0..Searchable::MAXIMUM_LENGTH],
|
||
|
}.merge!(searchable_descendants_data)
|
||
|
end
|
||
|
|
||
|
def searchable_descendants_data
|
||
|
{
|
||
|
descendants_contents: Util.map_or_pluck(descendants, :content)
|
||
|
.map { |content| Util.extract_content(content)[0..Searchable::MAXIMUM_LENGTH] }
|
||
|
}
|
||
|
end
|
||
|
|
||
|
def to_searchable_json
|
||
|
{
|
||
|
id: id,
|
||
|
author_name: author.full_name,
|
||
|
visits_count: viewed_count,
|
||
|
all_replies_count: all_replies_count
|
||
|
}
|
||
|
end
|
||
|
|
||
|
module ClassMethods
|
||
|
def searchable_includes
|
||
|
[:author]
|
||
|
end
|
||
|
end
|
||
|
end
|