We have frontend application that use Discourse as core and we want to implement user search with pagination.
Currently, I don’t see that this api (/search?q=name) support type_filter: user. Any idea how to implement this one?
We have frontend application that use Discourse as core and we want to implement user search with pagination.
Currently, I don’t see that this api (/search?q=name) support type_filter: user. Any idea how to implement this one?
This is a workaround that we did.
search_controller.rb and add this line.def show
@search_term = params.permit(:q)[:q]
// allow type_filter from query params
@type_filter = params.permit(:type_filter)[:type_filter] || 'topic'
...
offset to search.rb // it is around line 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) // this line
.limit(limit)
users.each do |user|
@results.add(user)
end
end
Then you will be able to search user with /search?q=name&type_filter=user&page=1, by default it will get 50 users and use page to get more.
Hope this help! ![]()
Great idea! we also work with Discourse API and when we try to use search API, we found this problem also. I can help to do this.