diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index 43e59604055342a684d908b3810dd229a912a99c..731c003c46212e0aab85ebcc99326ddacf4c4cfb 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -46,9 +46,19 @@ class AccountSearchService < BaseService return [] if limit_for_non_exact_results.zero? @search_results ||= begin - results = from_elasticsearch if Chewy.enabled? + results = from_elasticsearch if Chewy.enabled? results ||= from_database - results + results.reject { |result| excluded_domains.include?(result.domain) } + end + end + + def excluded_domains + @excluded_domains ||= begin + if account + Set.new(account.excluded_from_timeline_domains) + else + Set.new + end end end @@ -69,8 +79,8 @@ class AccountSearchService < BaseService end def from_elasticsearch - must_clauses = [{ multi_match: { query: terms_for_query, fields: likely_acct? ? %w(acct.edge_ngram acct) : %w(acct.edge_ngram acct display_name.edge_ngram display_name), type: 'most_fields', operator: 'and' } }] - should_clauses = [] + must_clauses = [{ multi_match: { query: terms_for_query, fields: likely_acct? ? %w(acct.edge_ngram acct) : %w(acct.edge_ngram acct display_name.edge_ngram display_name), type: 'most_fields', operator: 'and' } }] + should_clauses = [] if account return [] if options[:following] && following_ids.empty?