diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index 3c9e73c12..57e01c091 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -133,8 +133,12 @@ class AccountSearchService < BaseService end def must_clause - fields = %w(username username.* display_name display_name.*) - fields << 'text' << 'text.*' if options[:use_searchable_text] + if options[:start_with_hashtag] + fields = %w(text text.*) + else + fields = %w(username username.* display_name display_name.*) + fields << 'text' << 'text.*' if options[:use_searchable_text] + end [ { diff --git a/app/services/search_service.rb b/app/services/search_service.rb index 05d2d0e7c..778ea85fb 100644 --- a/app/services/search_service.rb +++ b/app/services/search_service.rb @@ -33,7 +33,8 @@ class SearchService < BaseService resolve: @resolve, offset: @offset, use_searchable_text: true, - following: @following + following: @following, + start_with_hashtag: @query.start_with?('#') ) end @@ -91,11 +92,11 @@ class SearchService < BaseService def full_text_searchable? return false unless Chewy.enabled? - statuses_search? && !@account.nil? && !((@query.start_with?('#') || @query.include?('@')) && !@query.include?(' ')) + statuses_search? && !@account.nil? && !(@query.include?('@') && !@query.include?(' ')) end def account_searchable? - account_search? && !(@query.start_with?('#') || (@query.include?('@') && @query.include?(' '))) + account_search? && !(@query.include?('@') && @query.include?(' ')) end def hashtag_searchable? diff --git a/spec/services/search_service_spec.rb b/spec/services/search_service_spec.rb index 497ec7447..123bd4f56 100644 --- a/spec/services/search_service_spec.rb +++ b/spec/services/search_service_spec.rb @@ -68,7 +68,7 @@ describe SearchService, type: :service do allow(AccountSearchService).to receive(:new).and_return(service) results = subject.call(query, nil, 10) - expect(service).to have_received(:call).with(query, nil, limit: 10, offset: 0, resolve: false, use_searchable_text: true, following: false) + expect(service).to have_received(:call).with(query, nil, limit: 10, offset: 0, resolve: false, start_with_hashtag: false, use_searchable_text: true, following: false) expect(results).to eq empty_results.merge(accounts: [account]) end end @@ -92,15 +92,6 @@ describe SearchService, type: :service do expect(Tag).to_not have_received(:search_for) expect(results).to eq empty_results end - - it 'does not include account when starts with # character' do - query = '#tag' - allow(AccountSearchService).to receive(:new) - - results = subject.call(query, nil, 10) - expect(AccountSearchService).to_not have_received(:new) - expect(results).to eq empty_results - end end end end