Added groups to search results
This commit is contained in:
parent
3126ba8b3c
commit
81b2c009a1
@ -43,6 +43,7 @@ export default function search(state = initialState, action) {
|
|||||||
accounts: ImmutableList(action.results.accounts.map(item => item.id)),
|
accounts: ImmutableList(action.results.accounts.map(item => item.id)),
|
||||||
statuses: ImmutableList(action.results.statuses.map(item => item.id)),
|
statuses: ImmutableList(action.results.statuses.map(item => item.id)),
|
||||||
hashtags: fromJS(action.results.hashtags),
|
hashtags: fromJS(action.results.hashtags),
|
||||||
|
groups: fromJS(action.results.groups),
|
||||||
})).set('submitted', true);
|
})).set('submitted', true);
|
||||||
default:
|
default:
|
||||||
return state;
|
return state;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class Search < ActiveModelSerializers::Model
|
class Search < ActiveModelSerializers::Model
|
||||||
attributes :accounts, :statuses, :hashtags
|
attributes :accounts, :statuses, :hashtags, :groups
|
||||||
end
|
end
|
||||||
|
@ -5,6 +5,7 @@ class REST::SearchSerializer < ActiveModel::Serializer
|
|||||||
|
|
||||||
has_many :accounts, serializer: REST::AccountSerializer
|
has_many :accounts, serializer: REST::AccountSerializer
|
||||||
has_many :statuses, serializer: REST::StatusSerializer
|
has_many :statuses, serializer: REST::StatusSerializer
|
||||||
|
has_many :groups, serializer: REST::GroupSerializer
|
||||||
|
|
||||||
def hashtags
|
def hashtags
|
||||||
object.hashtags.map(&:name)
|
object.hashtags.map(&:name)
|
||||||
|
@ -4,4 +4,5 @@ class REST::V2::SearchSerializer < ActiveModel::Serializer
|
|||||||
has_many :accounts, serializer: REST::AccountSerializer
|
has_many :accounts, serializer: REST::AccountSerializer
|
||||||
has_many :statuses, serializer: REST::StatusSerializer
|
has_many :statuses, serializer: REST::StatusSerializer
|
||||||
has_many :hashtags, serializer: REST::TagSerializer
|
has_many :hashtags, serializer: REST::TagSerializer
|
||||||
|
has_many :groups, serializer: REST::GroupSerializer
|
||||||
end
|
end
|
||||||
|
@ -16,6 +16,7 @@ class SearchService < BaseService
|
|||||||
results[:accounts] = perform_accounts_search! if account_searchable?
|
results[:accounts] = perform_accounts_search! if account_searchable?
|
||||||
results[:statuses] = perform_statuses_search! if full_text_searchable?
|
results[:statuses] = perform_statuses_search! if full_text_searchable?
|
||||||
results[:hashtags] = perform_hashtags_search! if hashtag_searchable?
|
results[:hashtags] = perform_hashtags_search! if hashtag_searchable?
|
||||||
|
results[:groups] = perform_groups_search!
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -32,6 +33,14 @@ class SearchService < BaseService
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def perform_groups_search!
|
||||||
|
Group.search_for(
|
||||||
|
@query.gsub(/\A#/, ''),
|
||||||
|
@limit,
|
||||||
|
@offset
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
def perform_statuses_search!
|
def perform_statuses_search!
|
||||||
definition = StatusesIndex.filter(term: { searchable_by: @account.id })
|
definition = StatusesIndex.filter(term: { searchable_by: @account.id })
|
||||||
.query(multi_match: { type: 'most_fields', query: @query, operator: 'and', fields: %w(text text.stemmed) })
|
.query(multi_match: { type: 'most_fields', query: @query, operator: 'and', fields: %w(text text.stemmed) })
|
||||||
|
Loading…
x
Reference in New Issue
Block a user