From 34a62ff4239efb2193e78491e0d58894b159bd00 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 31 Aug 2020 17:22:04 +0200 Subject: [PATCH] Fix account search showing results from domains hidden by user Fix #8586 --- app/services/account_search_service.rb | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index 43e596040..731c003c4 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?