我们有一个以前端应用为核心使用 Discourse 的项目,现在想要实现带有分页的用户搜索功能。
目前,我没有看到该 API(/search?q=name)支持 type_filter: user。请问有什么建议可以实现这一功能吗?
我们有一个以前端应用为核心使用 Discourse 的项目,现在想要实现带有分页的用户搜索功能。
目前,我没有看到该 API(/search?q=name)支持 type_filter: user。请问有什么建议可以实现这一功能吗?
这是我们采用的一个临时解决方案。
search_controller.rb 并添加以下代码行。def show
@search_term = params.permit(:q)[:q]
// 允许从查询参数中获取 type_filter
@type_filter = params.permit(:type_filter)[:type_filter] || 'topic'
...
search.rb 中添加 offset。 // 大约在 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) // 这一行
.limit(limit)
users.each do |user|
@results.add(user)
end
end
之后,你就可以通过 /search?q=name&type_filter=user&page=1 搜索用户了。默认情况下,每次会获取 50 个用户,并使用 page 参数来获取更多内容。
希望这能帮到你!![]()
好主意!我们也使用 Discourse API,当我们尝试使用搜索 API 时,也遇到了这个问题。我可以帮忙解决。