Send searches to FASP...

...to backfill accounts that might be missing.

Sadly, this has no effect on the search performed, but has the
potential to improvde future searches.
This commit is contained in:
David Roetzel 2025-02-27 17:12:30 +01:00
parent 103475edc1
commit c83ff20d12
No known key found for this signature in database
2 changed files with 31 additions and 0 deletions

View File

@ -152,6 +152,12 @@ class AccountSearchService < BaseService
'search.backend' => Chewy.enabled? ? 'elasticsearch' : 'database'
)
# Trigger searching accounts using providers.
# This will not return any immediate results but has the
# potential to fill the local database with relevant
# accounts for the next time the search is performed.
Fasp::AccountSearchWorker.perform_async(@query)
search_service_results.compact.uniq.tap do |results|
span.set_attribute('search.results.count', results.size)
end

View File

@ -0,0 +1,25 @@
# frozen_string_literal: true
class Fasp::AccountSearchWorker
include Sidekiq::Worker
sidekiq_options queue: 'fasp', retry: 0
def perform(query)
return unless Mastodon::Feature.fasp_enabled?
account_search_providers = Fasp::Provider.with_capability('account_search')
return if account_search_providers.none?
params = { term: query, limit: 10 }.to_query
fetch_service = ActivityPub::FetchRemoteActorService.new
account_search_providers.each do |provider|
Fasp::Request.new(provider).get("/account_search/v0/search?#{params}").each do |uri|
next if Account.where(uri:).any?
fetch_service.call(uri)
end
end
end
end