Change searching with # to include account index (#25638)

This commit is contained in:
jsgoldstein 2023-07-10 14:58:13 -04:00 committed by GitHub
parent af54bf52c8
commit 99be47f8b9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 15 deletions

View file

@ -133,8 +133,12 @@ class AccountSearchService < BaseService
end end
def must_clause def must_clause
if options[:start_with_hashtag]
fields = %w(text text.*)
else
fields = %w(username username.* display_name display_name.*) fields = %w(username username.* display_name display_name.*)
fields << 'text' << 'text.*' if options[:use_searchable_text] fields << 'text' << 'text.*' if options[:use_searchable_text]
end
[ [
{ {

View file

@ -33,7 +33,8 @@ class SearchService < BaseService
resolve: @resolve, resolve: @resolve,
offset: @offset, offset: @offset,
use_searchable_text: true, use_searchable_text: true,
following: @following following: @following,
start_with_hashtag: @query.start_with?('#')
) )
end end
@ -91,11 +92,11 @@ class SearchService < BaseService
def full_text_searchable? def full_text_searchable?
return false unless Chewy.enabled? 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 end
def account_searchable? def account_searchable?
account_search? && !(@query.start_with?('#') || (@query.include?('@') && @query.include?(' '))) account_search? && !(@query.include?('@') && @query.include?(' '))
end end
def hashtag_searchable? def hashtag_searchable?

View file

@ -68,7 +68,7 @@ describe SearchService, type: :service do
allow(AccountSearchService).to receive(:new).and_return(service) allow(AccountSearchService).to receive(:new).and_return(service)
results = subject.call(query, nil, 10) 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]) expect(results).to eq empty_results.merge(accounts: [account])
end end
end end
@ -92,15 +92,6 @@ describe SearchService, type: :service do
expect(Tag).to_not have_received(:search_for) expect(Tag).to_not have_received(:search_for)
expect(results).to eq empty_results expect(results).to eq empty_results
end 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 end
end end