有效搜索内容

:bookmark: 本指南全面概述了 Discourse 的搜索功能,包括筛选条件、选项和高级技巧。

:person_raising_hand: 所需用户级别:所有用户

Discourse 提供强大的搜索功能,具有众多筛选条件和标准。当您使用高级搜索表单时,它会自动将相关的语法附加到您的查询中。例如,选择 \[x\] 在我的消息中 会向您的搜索查询添加 in:personal

本指南涵盖了 Discourse 中所有可用的搜索选项和功能,并提供了使用搜索功能的有用提示和技巧。

筛选条件 (Filters)

Discourse 提供广泛的筛选条件来帮助您精炼搜索结果。以下是可用筛选条件的完整列表:

| 语法 | 描述 |
|—|—|
| in:personal-direct | 仅返回两个用户之间的私人消息中的帖子 |
| in:all-pms | :information_source: 仅限管理员
返回所有私人消息中的帖子,包括您未参与的 |
| in:all | 返回来自公共主题和私人消息中的帖子 |
| in:replies | 仅返回作为回复的帖子,排除主题发起人 (OP) |
| in:all-posts | 返回与查询匹配的每个帖子,即使在同一主题中有多个匹配的帖子 |
| in:tagged | 返回至少有一个标签的主题中的帖子 |
| in:untagged | 返回没有标签的主题中的帖子 |
| in:seen | 返回您已查看的帖子(针对已登录用户) |
| in:unseen | 返回您尚未查看的帖子(针对已登录用户) |
| in: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 | :information_source: 仅限管理员
返回指定用户的私人消息中的帖子 |
| -tags:tag1,tag2,tag3 | 返回未标记为 tag1tag2tag3 的帖子 |
| filetypes:ext1,ext2,ext3 | 返回包含 ext1ext2ext3 文件扩展名上传的帖子 |
| categories:category1,category2 | 返回 category1category2 类别中的帖子 |
| status:open | 返回未关闭或未存档的主题中的帖子 |
| status:closed | 返回已关闭的主题中的帖子 |
| status:archived | 返回已存档的主题中的帖子 |
| status:noreplies | 返回没有回复的主题中的帖子 |
| status:single_user | 返回仅有一个用户发帖的主题中的帖子 |
| status:public | 返回公共类别中主题的帖子 |
| before:YYYY-MM-DD | 返回在指定日期之前创建的帖子 |
| after:YYYY-MM-DD | 返回在指定日期之后创建的帖子 |
| with:images | 返回包含图片的帖子 |

排序 (Order)

您可以使用以下排序选项对搜索结果进行排序:

| 语法 | 描述 |
|----|----|
| order:latest | 按最新到最旧排序结果(快捷方式:l) |
| order:oldest | 按最旧到最新排序结果 |
| order:latest_topic | 按主题日期排序结果,从最新到最旧 |
| order:oldest_topic | 按主题日期排序结果,从最旧到最新 |
| order:views | 按查看次数排序结果 |
| order:likes | 按点赞数排序结果 |
| order:read |(仅限登录用户)按上次访问主题的日期排序(快捷方式:r) |

别名 (Aliases)

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 |

搜索精确词语 (Searching for Exact Words)

Discourse 使用一种称为词干提取的技术来查找相关词语。虽然这通常很有帮助,但有时您可能希望搜索一个精确的词语。您可以通过用空格和双引号将该词语括起来来实现,如下所示:\" term \"

这样可以确保它只搜索“term”这个词,并排除其他相关词语。

:information_source: 请注意,由于空格被视为搜索词的一部分,如果“term”是帖子中的第一个或最后一个词,它将不会被返回,因为它前面或后面不会有空格。

示例:搜索 @提及 (Example: Searching for @mentions)

目前,直接搜索 @提及 不受支持。但是,您可以使用精确词语搜索方法来实现:

\u003chttps://meta.discourse.org/search?q=“%20%40username%20”\u003e

:information_source: 之所以有效,是因为 %20 是 URL 中空格的编码方式,而 %40@ 符号的编码方式。

此查询将专门查找(用空格括起来的)@username

组合搜索选项 (Combining Search Options)

您可以组合多个搜索选项来创建更具体的查询。例如:

  • 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 个帖子,并且包含图片。

权限和限制 (Permissions and Limitations)

一些高级搜索选项可能需要特定的用户权限或仅限于特定的用户角色。例如:

  • in:all-pms 仅对管理员可用,对普通用户或版主不可用。
  • personal_messages:username 仅对管理员可用。

在使用高级搜索选项时,请始终考虑您的用户角色和权限。

搜索替代方案:主题列表筛选器 (Search Alternative: Topic List Filter)

有一个实验性的 /filter 功能可用,它支持许多筛选类型。您可以在官方主题中了解更多信息:Experimental topics list filter feature

源代码文件 (Source Files)

要从更技术性的角度查看这些选项,所有搜索筛选条件和参数都可以在 search.rb 中找到 - 查找 advanced_filter 方法。

附加提示 (Additional Tips)

  1. 您还可以搜索 Bug 这样的标签提及:\u003chttps://meta.discourse.org/search?q=“%20%23bug”\u003e

  2. 某些筛选条件可能由插件添加。例如,Solved 插件添加了:

    • status:solved: 返回已解决主题中的帖子
    • status:unsolved: 返回允许标记已解决的类别中未解决主题的帖子
  3. Topic Voting 插件添加了一个额外的排序选项:

    • order:votes: 按包含该帖子的主题的投票数对结果进行排序

:bulb: 花些时间尝试不同筛选条件和选项的组合,以找到最适合您需求的搜索策略。

12 个赞

由于缺少一些过滤器,例如 in:pinnedin:bookmarks,以及未解释带有别名的过滤器,我尝试添加缺失的信息。然后表格变得相当复杂,这就是我尝试将其分成更小的表格的原因。这正是机器人 此处所做的。我不确定解释是否都正确。主题中的描述与 @sam 与机器人的对话中的描述有所不同。对于一些,我再次询问了机器人并得到了另一个结果(这些是高亮显示的)。也许有人可以帮助更正描述。我对整体外观也不是完全满意。表格的列宽都不同。


过滤器

搜索过滤器

语法 描述
topic:topic_id 返回特定主题中的帖子
in:title
t
返回标题中包含该词的主题
in:first
f
仅返回主题中的首帖
in:replies 仅返回作为回复的帖子,不包括主题的 OP
in:regular 排除小型操作帖子、悄悄话和应用了管理员颜色的帖子
in:whispers
in:whisper
:information_source: 仅限有权限查看悄悄话的用户
返回悄悄话帖子
include:unlisted
include:invisible
:information_source: 仅限信任等级 4 和管理员
返回帖子,包括来自不公开主题的帖子
in:all :information_source: 仅限登录用户
返回来自公开主题和私人消息的帖子
in:all-posts 返回匹配查询的每个帖子,即使在同一主题中有多个匹配的帖子
in:pinned 返回被固定的帖子
in:wiki 返回维基帖子
with:images 返回包含图片的帖子
filetypes:ext1,ext2,ext3
filetype:ext1,ext2,ext3
返回包含 ext1ext2ext3 文件扩展名上传内容的帖子
badge:name_or_id 返回与特定徽章授予链接的帖子

消息过滤器

(供登录用户使用)

语法 描述
in:personal
in:messages
返回私人消息中的帖子
in:personal-direct 返回您与恰好一个其他用户之间的私人消息中的帖子
group_messages:group_name_or_id 返回发送给 group_name 小组的私人消息中的帖子(只有当您可以看到该小组及其成员时才有效)
personal_messages:username :information_source: 仅限管理员
返回指定用户的私人消息中的帖子
in:all-pms :information_source: 仅限管理员
返回所有私人消息中的帖子,包括您未参与的

用户和群组特定过滤器

语法 描述
@username
user:username_or_id
返回 username 的帖子
created:@username
in:first @username
返回由 username 创建的主题的首帖
group:group_name_or_id 返回 group_name 小组中用户的帖子
in:bot
in:bots
返回系统和机器人帐户(例如 @system@discobot)的帖子
in:human
in:humans
返回普通用户的帖子

类别和标签过滤器

语法 描述
category:category1
#category1
返回 category1 中的帖子
categories:category1,category2
category:category1,category2
返回 category1category2 类别中的帖子
tag:tag1
#tag1
返回被标记为 tag1 的主题中的帖子
-tag:tag1 返回未被标记为 tag1 的主题中的帖子
tags:tag1,tag2
tag:tag1,tag2
返回被标记为 tag1tag2 的主题中的帖子
-tags:tag1,tag2
-tag:tag1,tag2
返回未被标记为 tag1tag2 的主题中的帖子
tags:tag1+tag2
tag:tag1+tag2
返回同时被标记为 tag1tag2 的主题中的帖子
-tags:tag1+tag2
-tag:tag1+tag2
返回未同时被标记为 tag1tag2 的主题中的帖子
in:tagged 返回至少有一个标签的主题中的帖子
in:untagged 返回没有标签的主题中的帖子

个性化过滤器(用户特定)

(供登录用户使用)

语法 描述
in:seen 返回您看过的帖子
in:unseen 返回您未看过的帖子
in:watching 返回您正在关注的主题中的帖子
in:tracking 返回您正在跟踪的主题中的帖子
in:bookmarks 返回您收藏的帖子
@me
@your_own_username
返回您自己写的帖子
in:posted 返回您发过帖的主题中的所有帖子
in:created
in:mine
返回由您撰写的主题的首帖

帖子和浏览量过滤器

语法 描述
min_posts:X
min_post_count:X
返回帖子数至少为 X 的主题中的帖子
max_posts:X 返回帖子数最多为 X 的主题中的帖子
posts_count:X 返回帖子数恰好为 X 的主题中的帖子
min_views:X 返回浏览量至少为 X 的主题中的帖子
max_views:X 返回浏览量最多为 X 的主题中的帖子

日期过滤器

所有日期均为 UTC,我们始终使用 UTC 当天的开始时间作为任何时期的开始时间。

语法 描述
before:YYYY-MM-DD 返回在指定日期之前创建的帖子
after:YYYY-MM-DD 返回在指定日期之后创建的帖子
before:day_of_week 返回在指定星期几之前创建的帖子
after:day_of_week 返回在指定星期几当天及之后创建的帖子
before:X 返回 X 天前创建的帖子
after:X 返回在过去 X 天内创建的帖子
before:month 返回在指定月份之前创建的帖子
after:month 返回在指定月份内及之后创建的帖子
before:YYYY 返回在指定年份之前创建的帖子
after:YYYY 返回在指定年份内及之后创建的帖子

状态过滤器

语法 描述
status:open 返回未关闭或未存档的主题中的帖子
status:closed 返回已关闭主题中的帖子
status:archived 返回已存档主题中的帖子
status:noreplies 返回没有回复的主题中的帖子
status:single_user 返回仅有一个用户发帖的主题中的帖子
status:public 返回公开类别中主题的帖子

语言过滤器

语法 描述
locale:language_code 返回以该语言(例如 enen_USen-gb)编写的帖子
locale:any
locale:present
返回设置了语言环境的帖子
locale:none
locale:null
返回没有设置语言环境的帖子

插件添加的过滤器

语法 描述
Assign
in:assigned 返回已分配给某人的主题中的帖子
in:unassigned 返回未分配给任何人的主题中的帖子
assigned:username 返回分配给 username 的主题中的帖子
Docs
in:docs
in:kb
返回包含在文档中的类别和标签中的帖子
Doc Categories
in:docs 返回具有索引主题的类别中的帖子
Polls
in:polls 返回包含投票的帖子
Solved
status:solved 返回已解决主题中的帖子
status:unsolved 返回在允许标记已解决的类别中未解决主题中的帖子
Topic voting
min_vote_count:X 返回投票数至少为 X 的主题中的帖子

排序

语法 描述
order:latest
l
按从新到旧排序结果
order:oldest 按从旧到新排序结果
order:latest_topic 按主题日期排序结果,从新到旧
order:oldest_topic 按主题日期排序结果,从旧到新
order:views 按浏览量排序结果
order:likes 按点赞数排序结果
order:read
r
:information_source: 仅限登录用户
按您上次访问主题的日期排序结果

插件添加的排序选项

语法 描述
Topic voting
order:votes 按包含该帖子的主题的投票数对结果进行排序
5 个赞

我认为这与 @me 相同

1 个赞

有办法排除回复,只在搜索结果中显示主题吗?

是的

5 个赞

非常感谢。

1 个赞

这个链接是否指向预期的页面?

是的,我认为是这样。它会带您进入带有顶部筛选器栏的主题列表。

您期望看到什么?

明白了。点击链接后显示这个:

所以如果你不知道什么是筛选栏,你就无法发现它!感谢您发送读者应该看到的内容。

1 个赞

我发现有换行更容易阅读。

OP 中的表格已更新,以包含在 Search improvements to make community management easier! 中宣布的新发布的 in:all-postsin:replies

3 个赞

谢谢。如果您能将上一次编辑中删除的换行符也加回来,我将不胜感激。

我也会将新的过滤器添加到我的帖子中。官方帖子是否计划包含缺失的过滤器?

您好,@Moin

我的目标只是在它们被忽略之前捕获这两个新功能。

我将分配这个主题,看看当团队中的某人有时间时,我们是否可以完全更新 OP(原始帖子/发帖人)。

2 个赞

区域设置过滤器也是在上个月添加的:https://meta.discourse.org/t/topic/385034/15。
所以不清楚你为什么添加了这些而不是其他过滤器。

仅仅因为我恰好参与并了解了 in:repliesin:all-posts 的发布,并且我习惯于实时编辑文档。这并非是故意遗漏了原帖中的任何特定功能。

1 个赞

我欣赏及时的更新,但我发现要弄清楚缺少了什么变得更加困难,因为仅仅查看上次编辑以来发生了什么变化已经不够了。我的感觉是,最近的 4 次更改中有 2 次已经被添加(顺序:read 和 in:replies/all-posts 与 in:bots/human 和 locale:language)。

在指出更改方面,您希望看到什么吗?我很久以前就添加了 in:bots。我本可以回复这里,但我的总体印象是这些评论很少能带来改变。自从切换到“只有团队成员可以编辑”以来,我感觉将社区发现的方面转化为改进的工作流程缺失了。

这不是我一个人能决定的,所以我会把您的反馈带回团队,看看我们最终的决定。

目前,除非/直到我们恢复到维基化文档,否则我认为评论是有帮助的,因为这样当团队成员能够优先更新文档时,您就帮助确保不会遗漏特定的项目。

您可能无法立即看到您的评论被采纳的即时满足感,但在更新完成时,它们无疑会受到赞赏。

1 个赞