本指南全面概述了 Discourse 的搜索功能,包括筛选器、选项和高级技巧。
所需用户级别:所有用户
Discourse 提供强大的搜索功能,具有多种筛选器和条件。当您使用高级搜索表单时,它会自动将相关语法附加到您的查询中。例如,选择“我的消息中”将在搜索查询中添加 in:personal。
本指南涵盖了 Discourse 中所有可用的搜索选项和功能,并提供了使用搜索功能的有用技巧。
筛选器
Discourse 提供广泛的筛选器,帮助您优化搜索结果。以下是可用筛选器的完整列表:
| 语法 | 描述 |
|---|---|
in:personal-direct |
仅返回两个用户之间的个人消息中的帖子 |
in:all-pms |
|
in:all |
返回公共主题和个人消息中的帖子 |
in:tagged |
返回至少有一个标签的主题中的帖子 |
in:untagged |
返回没有标签的主题中的帖子 |
in:seen |
返回您已查看的帖子(针对已登录用户) |
in:unseen |
返回您未查看的帖子(针对已登录用户) |
in:wiki |
返回 wiki 帖子 |
in:watching |
返回您正在关注的主题中的帖子 |
in:tracking |
返回您正在跟踪的主题中的帖子 |
posts_count:X |
返回正好有 X 篇帖子的主题中的帖子 |
min_posts:X |
返回至少有 X 篇帖子的主题中的帖子 |
max_posts:X |
返回最多有 X 篇帖子的主题中的帖子 |
min_views:X |
返回至少有 X 次查看的主题中的帖子 |
max_views:X |
返回最多有 X 次查看的主题中的帖子 |
badge:name_or_id |
返回与特定徽章授予相关的帖子 |
created:@username |
返回由 username 创建的主题中的帖子 |
group:group_name |
返回 group_name 组内用户的帖子 |
group_messages:group_name |
返回发送给 group_name 组的个人消息中的帖子 |
personal_messages:username |
|
-tags:tag1,tag2,tag3 |
返回未标记为 tag1、tag2 或 tag3 的帖子 |
filetypes:ext1,ext2,ext3 |
返回包含 ext1、ext2 或 ext3 文件扩展名上传的帖子 |
categories:category1,category2 |
返回 category1 和 category2 类别中的帖子 |
status:open |
返回未关闭或归档的主题中的帖子 |
status:closed |
返回已关闭主题中的帖子 |
status:archived |
返回已归档主题中的帖子 |
status:noreplies |
返回没有回复的主题中的帖子 |
status:single_user |
返回只有一个用户帖子的主题中的帖子 |
status:public |
返回公共类别中主题的帖子 |
before:YYYY-MM-DD |
返回在指定日期之前创建的帖子 |
after:YYYY-MM-DD |
返回在指定日期之后创建的帖子 |
with:images |
返回包含图像的帖子 |
排序
您可以使用以下排序选项对搜索结果进行排序:
| 语法 | 描述 |
|---|---|
order:latest |
按最新到最旧排序结果(快捷方式:l) |
order:oldest |
按最旧到最新排序结果 |
order:latest_topic |
按主题日期排序结果,从最新到最旧 |
order:oldest_topic |
按主题日期排序结果,从最旧到最新 |
order:views |
按查看次数排序结果 |
order:likes |
按点赞次数排序结果 |
order:read |
(仅限登录用户)按您上次访问主题的日期排序(快捷方式:r) |
别名
Discourse 提供了一些别名,使搜索更轻松:
| 语法 | 等效语法 |
|---|---|
l |
order:latest |
in:personal |
in:messages |
min_post_count: |
min_post: |
in:mine |
in:created |
category: |
categories: |
# |
可根据上下文用于类别和标签 |
user: |
@ |
@me |
@your_own_username |
f |
in:first |
t |
in:title |
搜索精确词语
Discourse 使用一种称为词干提取的技术来查找相关词语。虽然这通常很有帮助,但有时您可能希望搜索精确的词语。您可以通过将词语用空格和双引号括起来来实现,如下所示:" term "。
这确保它只搜索“term”一词,并排除其他相关词语。
请注意,由于空格被视为搜索词的一部分,如果“term”是帖子的第一个或最后一个词,它将不会被返回,因为它前面或后面没有空格。
示例:搜索 @提及
目前,不支持直接搜索 @提及。但是,您可以使用精确词语搜索方法来实现这一点:
https://meta.discourse.org/search?q="%20%40username%20"
这之所以有效,是因为
%20是 URL 中空格的编码方式,而%40是@符号的编码方式。
此查询将专门查找 @username(用空格括起来)。
组合搜索选项
您可以组合多个搜索选项来创建更具体的查询。例如:
-
status:open category:support tag:urgent after:2023-01-01 order:latest
这将搜索在 2023 年 1 月 1 日之后创建的、标记为紧急的开放式支持主题,并按最新帖子对结果进行排序。 -
@jane_doe in:watching min_posts:5 with:images
这将搜索您正在关注的主题中 Jane Doe 的帖子,这些主题至少有 5 篇帖子,并且包含图像。
权限和限制
某些高级搜索选项可能需要特定的用户权限,或者可能仅限于特定用户角色。例如:
in:all-pms仅对管理员可用,不对普通用户或版主可用。personal_messages:username仅对管理员可用。
在使用高级搜索选项时,请始终考虑您的用户角色和权限。
搜索替代方案:主题列表筛选器
有一个实验性的/filter 功能支持多种筛选器类型。您可以在官方主题上了解更多信息:Experimental topics list filter feature
源文件
有关这些选项的更技术性视图,所有搜索筛选器和参数都可以在 search.rb 中找到 - 查找 advanced_filter 方法。
附加提示
-
您还可以搜索 Bug 等标签的提及:https://meta.discourse.org/search?q="%20%23bug"
-
某些筛选器可能由插件添加。例如,Solved 插件添加了:
status:solved: 返回已解决主题中的帖子status:unsolved: 返回允许标记已解决的类别中未解决主题的帖子
-
Topic Voting 插件添加了一个额外的排序选项:
order:votes: 按包含帖子的主题的得票数对结果进行排序
花些时间尝试不同的筛选器和选项组合,以找到最适合您需求的搜索策略。

