Das ist eine Workaround-Lösung, die wir angewendet haben.
Öffnen Sie search_controller.rb und fügen Sie diese Zeile hinzu.
def show
@search_term = params.permit(:q)[:q]
// erlaube type_filter aus Query-Parametern
@type_filter = params.permit(:type_filter)[:type_filter] || 'topic'
...
Fügen Sie offset zu search.rb hinzu.
// das ist ungefähr Zeile 780
def user_search
return if SiteSetting.hide_user_profiles_from_public && !@guardian.user
users = User.includes(:user_search_data)
.references(:user_search_data)
.where(active: true)
.where(staged: false)
.where("user_search_data.search_data @@ #{ts_query("simple")}")
.order("CASE WHEN username_lower = '#{@original_term.downcase}' THEN 0 ELSE 1 END")
.order("last_posted_at DESC")
.offset(offset) // diese Zeile
.limit(limit)
users.each do |user|
@results.add(user)
end
end
Danach können Sie Benutzer mit /search?q=name&type_filter=user&page=1 suchen. Standardmäßig werden 50 Benutzer abgerufen, und Sie verwenden page, um weitere zu erhalten.
Tolle Idee! Wir arbeiten ebenfalls mit der Discourse-API, und als wir versucht haben, die Such-API zu nutzen, sind wir auf dasselbe Problem gestoßen. Ich kann dabei helfen, das zu lösen.