高效搜索内容

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

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

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

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

筛选器

Discourse 提供广泛的筛选器,帮助您优化搜索结果。以下是可用筛选器的完整列表:

语法 描述
in:personal-direct 仅返回两个用户之间的个人消息中的帖子
in:all-pms :information_source: 仅限管理员 使用 返回所有个人消息中的帖子,包括您未参与的
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 :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: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”一词,并排除其他相关词语。

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

示例:搜索 @提及

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

https://meta.discourse.org/search?q="%20%40username%20"

:information_source: 这之所以有效,是因为 %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 方法。

附加提示

  1. 您还可以搜索 Bug 等标签的提及:https://meta.discourse.org/search?q="%20%23bug"

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

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

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

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

12 个赞

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


过滤器

搜索过滤器

语法 描述
topic:topic_id 返回特定主题中的帖子
in:title
t
返回标题中包含该词的主题
in:first
f
只返回主题中的首帖
in:pinned 返回已固定帖子
in:wiki 返回 wiki 帖子
in:whisper
in:whispers
:information_source: 仅限拥有 whisper 访问权限的用户
返回 whisper 帖子
with:images 返回包含图片的帖子
filetypes:ext1,ext2,ext3 返回带有 ext1ext2ext3 文件扩展名上传的帖子
badge:name_or_id 返回与特定徽章授予关联的帖子
in:regular 排除小型操作帖子、whispers 和应用了 staff 颜色的帖子
in:all 返回公共主题和个人消息中的帖子
include:unlisted
include:invisible
:information_source: 仅限 Trust Level 4 和 staff
返回帖子,包括来自未列出主题的帖子

消息过滤器

(适用于已登录用户)

语法 描述
in:personal
in:messages
返回个人消息中的帖子
in:personal-direct 只返回两个人之间的个人消息中的帖子
group_messages:group_name 返回发送到 group_name 群组的个人消息中的帖子
personal_messages:username :information_source: 仅限管理员
返回指定用户的个人消息中的帖子
in:all-pms :information_source: 仅限管理员
返回所有个人消息中的帖子,包括您未参与的

用户和群组特定过滤器

语法 描述
@username
user:username
返回 username 的帖子
created:@username
in:first @username
返回 username 创建的主题中的首帖
group:group_name 返回 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 返回公共分类中的主题的帖子

插件添加的过滤器

语法 描述
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 按包含该帖子的主题的投票数对结果进行排序
4 个赞

我认为这与 @me 相同

1 个赞

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

是的

3 个赞

非常感谢。

1 个赞

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

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

您期望看到什么?

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

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

1 个赞

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