主题列表筛选功能

我们最近引入了一个创新的 /filter 路由,支持对主题列表进行更精细的过滤。重要的是,这标志着迈向统一搜索和过滤主题语言的第一步。此外,专为主题列表过滤设计的路径增强了侧边栏的可定制性,用户现在可以将链接作为 自定义侧边栏部分链接 添加到侧边栏中。

工作原理

/filter 提供一个输入框,用户可以在此输入查询字符串以过滤主题列表。

例如,category:documentation tag:how-to+email 将过滤出位于 Documentation 类别中,并且同时带有 how-toemail 标签的主题。

目前支持的过滤条件列表如下:

status:open 未关闭或未归档的主题
status:closed 已关闭的主题
status:public 未限制阅读的主题(例如:不属于安全类别)
status:archived 已归档的主题
status:unlisted 不可见的主题
status:listed 可见的主题
status:deleted 已删除的主题

in:pinned 已置顶的主题(包括全局置顶或按类别置顶)
in:watching 我正在关注的内容 - 支持 (muted,normal,tracking, watching_first_post):可进一步筛选出您正在跟踪、关注等内容 - 多个值可用逗号分隔
in:bookmarked 我已收藏的内容

category:bug bug 类别及其所有子类别中的主题
=category:bug bug 类别中但不包括子类别的主题
category:documentation:admins documentation 类别下 admins 子类别中的主题
category:bug,feature bug 或 feature 类别及其所有子类别中的主题
=category:bug,feature bug 或 feature 类别中但不包括所有子类别的主题
-category:bug,feature 排除 bug 或 feature 类别及其所有子类别中的主题
-=category:bug,feature 仅排除 bug 或 feature 类别中但不包括所有子类别的主题
categories: category 的别名

tag:bug+feature 同时带有 bug 和 feature 标签的主题
tag:bug,feature 带有 bug 或 feature 标签的主题
-tag:bug+feature 排除同时带有 bug 和 feature 标签的主题
-tag:bug,feature 排除带有 bug 或 feature 标签的主题
tags: tag 的别名

tag_group:tag_group_name 带有 tag_group 中任意标签的主题
-tag_group:tag_group_name 排除带有 tag_group 中任意标签的主题

created-by:@USERNAME 由特定用户创建的主题

posts-min:X 包含 X 条或更多帖子的主题
posts-max:X 包含不超过 X 条帖子的主题
posters-min:X 至少有 X 个不同用户发帖的主题
posters-max:X 最多有 X 个不同用户发帖的主题
likes-min:X 获得 X 个或更多赞的主题
likes-max:X 获得不超过 X 个赞的主题
likes-op-min:X 首帖获得 X 个或更多赞的主题
likes-op-max:X 首帖获得不超过 X 个赞的主题
views-min:X 浏览量为 X 次或更多的主题
views-max:X 浏览量不超过 X 次的主题

activity-before:YYYY-MM-DD 最新活动时间在指定日期之前的主题
activity-after:YYYY-MM-DD 最新活动时间在指定日期之后的主题
created-before:YYYY-MM-DD 创建时间在指定日期之前的主题
created-after:YYYY-MM-DD 创建时间在指定日期之后的主题
latest-post-before:YYYY-MM-DD 最新帖子创建时间在指定日期之前的主题
latest-post-after:YYYY-MM-DD 最新帖子创建时间在指定日期之后的主题

order:activity 按最新活动时间降序排列
order:latest-post 按最新帖子创建时间降序排列
order:created 按主题创建时间降序排列
order:views 按主题浏览量降序排列
order:likes 按主题获赞数降序排列
order:likes-op 按主题首帖获赞数降序排列
order:posters 按发帖人数降序排列
order:category 按类别名称排序
order:ANY-asc 反转结果顺序为升序

反馈

我们非常希望了解社区成员认为此功能对您的社区是否有价值,并想知道您是如何使用它的。

如果您觉得某些过滤条件能满足您的需求,请告诉我们,并附上您想要实现的具体示例。

最后,我们想强调的是,这是该功能的非常早期的版本,目前仍处于实验阶段。用户体验仍需改进,我们目前正在努力添加某种形式的内联自动补全功能,甚至提供一个界面,让用户无需死记硬背所有过滤条件即可构建主题过滤查询语言。

33 个赞
Filter topics without a specific tag
Is there a way to export topics/posts that are displayed when filtering?
Building an Index from topics
Discourse Custom Topic Lists
How to show topics ordered by date of publishing via user interface?
How to show topics ordered by date of publishing via user interface?
How to exclude a Category from search or Search through all categories except one+
Filter to eliminate from view: broken plug-ins/theme Components
How can I filter/paginate the list CategoryTopics route?
URL syntax to filter on multiple tags within a category
Why Filter doesn't show me options like the shown on Meta?
My topics not in latest?
How to show topics ordered by date of publishing via user interface?
Wp-discourse-shortcodes plugin
Latest/Hot/Top - what about Best/Popular? Request for automatic selection
Using query strings to filter topic views
Streamline Tag Intersections
Adding Following to the /filter option
Filtering topic lists in Discourse
Filter topics with certain categories OR certain tags
Using query strings to filter topic views
How are you increasing response rate in a community support forum?
Topic filter UI isn't very intuitive
Searching for content effectively
Filtered Topic Lists
Topic list parameter for created after
Using query strings to filter topic views
Disappearing bookmarks and expected behavior of /bookmarks
How to show topic-map on non-commented posts?
View that contains topics of specific categories?
Filter posts with a specific tag on latest
Allow searching across multiple categories
Combined Watching/Tracking list
Put every closed topic at the bottom of a category
Sort display of topics Alphabetically

我错过了什么……?
它似乎没有返回标记了 chatpri-highBug 类别中的主题。

2 个赞

我不认为你应该能看到优先级标签。它们只供我们使用。:shushing_face: :slight_smile:

如果不包含它,它能正常工作吗?

3 个赞


看起来如果我移除这个标签,它也无法工作


更新:这个“别名”工作得很完美。

2 个赞

抱歉,我刚意识到我添加 tag: 别名支持的 PR 未被合并。

现在它已被合并,因此 tag: 别名应该很快就能工作。

6 个赞

另一个问题:tags 过滤器目前不支持非 ASCII 字符,例如中文。

示例:tags:一个不存在的标签 返回所有主题,但 tags:a-non-existent-tag 如预期那样返回空。


我检查了源代码,这是由以下代码引起的:

    value.scan(
        /\A(?<tag_names>([a-zA-Z0-9\-]+)(?<delimiter>[,+])?([a-zA-Z0-9\-]+)?(\k<delimiter>[a-zA-Z0-9\-]+)*)\z/,
5 个赞

@tgxworld 的精彩工作值得称赞。这开启了多种可能性。

只是好奇它是否能提供上下文过滤选项?

例如,如果我从侧边栏选择“公告”类别,我们能否在顶部显示过滤面板(您创建的新面板)以按类别内的多个标签(聊天、新功能)进行过滤。

目前,作为最终用户,无法直观地按多个标签进行过滤 - 手动使用 /tags/interesection/chat/new-feature 端点。最终用户可能不知道这种可能性,尤其是在类别内进行过滤。

5 个赞

干得好。我已在以下位置修复了标签问题:

category 过滤器也需要类似的修复,但它稍微复杂一些。我应该下周完成。

5 个赞

/filter 中出现新主题时,缺少翻译字符串:

[en.topic_count_all count=1]

4 个赞

该功能听起来很棒,肯定有助于为我们的用户构建更好、更具定制性的主题信息流!谢谢!

同时,我想问一下,此功能是否允许我们嵌入特定类别/标签下多个主题的最新帖子

1 个赞

不,我认为这目前不在此计划之内。

如果您试用当前功能,仍然觉得这是您想要实现的功能,您能否就此开启一个新主题,并提供更多关于您想法的细节?

1 个赞

非常感谢这个非常有用的功能!

是否也可以添加 created-by:me 或类似的自动筛选当前用户创建的主题的功能?这当然与 /my/activity/topics 类似,但它可能有助于与其他筛选器结合使用,并将其添加到所有用户的侧边栏。

另外,是否可以添加一个 in:participated 筛选器,用于显示我已发帖的所有主题,而不管其跟踪/通知设置如何?

5 个赞

太棒了! :pray: 我也很希望支持 status:unsolved。 我还认为,如果我们能用类似 assigned:me 的东西构建一个过滤器,结果会因用户而异,那将是很好的。 用例:一个给我们的版主发送链接的机器人,他们可以点击这些链接来查看他们被分配到的主题。这样我们就可以发送一条通用的消息给所有版主,其中包含他们需要参考的所有查询的链接,以便在版主管理论坛时使用。显然,他们可以从 Web UI 轻松导航到被分配到的主题,但我认为如果他们可以点击链接或书签,这将是一个小小的生活质量改进。

4 个赞

当前功能中已经有一些类似的先例,所以我认为我们可以肯定地考虑其他类似的东西:

3 个赞

您好,

有人能告诉我这是公开版本还是某个测试版本吗?我没找到相关设置。

嗨 Tony :wave:

你的实例是最新的吗?

我在我的测试论坛上设置了:

它也适用于 Discourse 托管论坛,不仅仅是自托管。

如所述,“实验性”意味着可能会/将会随着时间的推移发生许多变化,并且可能会出现错误或不一致。

1 个赞

我发现这对于向刚接触该平台的新社区经理解释 Discourse 的基本功能非常有帮助。那就是:我们有一系列主题,并且可以以多种方式对其进行过滤和排序。

到目前为止,这些过滤器分布在界面各处,但过滤器路由提供了一个中心位置来访问和了解可用选项:

考虑到这一点,我认为包含另外两个选项会很有帮助:

  • 在“日期”部分,还可以按相对时间(上周、上个月、上一年等)进行过滤
  • 在“排序”部分,还可以按受欢迎程度进行排序(这与点赞数不同)
5 个赞

我喜欢这个功能。但我希望能够只搜索纯文本。有时我需要查找一个已删除的主题,但不知道是哪个用户创建的,所以我需要浏览很多主题才能找到它,而不是仅仅能够通过关键字搜索已删除的主题。

我想我们的目标是在未来某个时候将其与搜索功能对接以实现同等功能,不过恐怕目前还没有明确的时间表。

3 个赞

您可以按回复数或投票数对结果进行排序/排列吗?我希望使用此功能按社区兴趣对功能请求进行排序,同时过滤掉标记为“已实现”的请求。但是,这似乎不是一个选项。

我的用例在此处有更详细的描述:here

2 个赞