搜索过滤器 - 仅主题/仅帖子

虽然我明白常规的主题/帖子搜索对于大多数用例来说已经足够了,但我收到了一些用户的请求,希望在搜索时能够过滤结果,只显示回复或主题(我想这可以翻译为主题的第一个回复)。

这或许也可以通过主题组件来实现,但我想先问一下,以防我遗漏了什么显而易见的东西。

谢谢。

1 个赞

您目前可以搜索所有主题和帖子

您的意思是希望在排除主题标题搜索结果的同时拥有此功能吗?

1 个赞

您是否查看过用于筛选的高级搜索功能?

我知道可以按主题和帖子进行搜索。目前报告的问题是搜索结果会混合主题和帖子,因此希望能够提供一个选项,让 Discourse 仅显示“仅主题”或“仅帖子”,以及两者都显示(目前就是这样)。

由于搜索结果以无限滚动界面的形式呈现,能够过滤掉用户已知不会出现的内容,将有助于减少干扰。

如果我知道我正在寻找的是一个帖子,就没有理由还要继续滚动浏览主题来寻找我想要的内容。

希望现在已经说清楚了。

1 个赞

在 Discourse 中,“主题”(topic)指的是所有的消息。第一个帖子是原始帖子(OP)或首帖。

我明白这可能会令人困惑,因为按钮 New Topic 最初创建一个包含 1 个帖子的主题,当有回复时,帖子会增加。

话虽如此,

将意味着“仅主题的第一个帖子”,并且确实可用,它是过滤器 in:first

无法搜索除首帖之外的所有帖子,目前也没有运算符可以排除某个词、过滤器、类别或其他任何内容。

2 个赞

感谢 @Canapin 的见解。

感谢您关于基本只返回帖子的说明。我完全错过了这一点 :blush:

作为一种变通方法,当搜索结果返回实际结果时,它会构建 URL,您认为我们可以创建一个组件/插件,只为那些遵循指定帖子 URL 格式的帖子添加 style="display:none",反之亦然,用于主题。

在插件的情况下,搜索结果的某个地方必须有一个函数来确定“这是第一个回复”或“这不是第一个回复”。也许可以拦截它,并根据一个特别添加的新过滤器,使其不被添加到结果数组中?

如果您知道哪个文件包含该控制器/模型,您能在此处链接它,以便我也能查看一下吗? :slight_smile:

1 个赞

对我来说,这是一个未知、奇怪且可怕的世界,但看看代码,控制器应该在这里:

搜索过滤器似乎在这里:

您可能也想看看 Discours Assign 如何为搜索添加过滤器:

2 个赞

谢谢 @Canapin。我会在几周后回来查看,因为我目前工作很忙,只是在收集一些信息,等我稍微空闲一些的时候再着手处理 :slight_smile:

1 个赞