如何有效搜索内容

: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: 花些时间尝试不同筛选条件和选项的组合,以找到最适合您需求的搜索策略。

13 个赞