关于我们的即时搜索实验的反馈

最近,我们进行了一项为期两个月的实验,旨在为 Discourse 上的新搜索体验制作原型。

请在 https://meta.discourse.org/instant-search 上进行测试。

:speaking_head: 如果您想讨论您的体验,请随时通过 电话会议 进行安排。非常感谢您的反馈 :pray:

功能

  • 快速搜索

  • 能够搜索主题、帖子、聊天消息和用户

    • 帖子和主题结果包括私信
    • 聊天消息包括私人频道和直接消息
  • 基于 UI 的过滤器,用于标签、类别、用户、收件箱、频道等

  • 关键字、语义、混合和 HyDE 搜索模式

常见问题解答

页面上的搜索过一段时间后停止工作

确实如此;请刷新。

它不支持我们的搜索语法,例如 @user#category

确实不支持,但如果我们决定发布此功能,可以轻松添加。

主题和帖子搜索目标不同是一个奇怪的选择

我明白为什么,特别是如果您习惯了 Discourse 过去十年的搜索方式。如果我们决定发布此功能,我们可以构建一个同时执行这两项操作的模式,甚至可以同时运行两者并在 UI 中显示它们。就本次实验的限制而言,这是解决以下两种用例最简单的方法:

  • 我知道这个主题存在,只想找到它(主题搜索)
  • 我想研究此查询的任何出现(帖子搜索)

结果质量还有待提高

我们几乎没有触及这里可能实现的;目前,我们只优先考虑类别,并为标题和正文分配权重。这需要进一步调整才能匹配我们现有搜索的精细度,但也带来了进一步发展的可能性。不幸的是,很多内容是通过 JS API 控制的,而我们使用的库在这里给我们带来了很大的限制。

语义/HyDE/混合搜索速度很慢

我们为这些搜索添加了更大的防抖动,以解决我们使用的 JS 库的一些烦恼。如果我们决定发布此功能,这个 JS 库将是首要被替换的对象。至于这些搜索的整体速度,它们取决于两个请求,第一个是用于嵌入,它运行在 AWS 的旧硬件上,这并没有帮助。我们也可以在中间件代理中注入嵌入,以减少延迟。同样,这也是实验时间限制。

技术细节

  • 此实验使用 Typesense,一个 Algolia 的开源克隆。它运行在 Meta 主机上所有其他组件所在的同一 EC2 实例中。

  • 前端不直接向 Typesense 请求;相反,所有调用都通过 Discourse 应用进行代理,使用 Rack 中间件。

  • 搜索栏/结果/过滤器使用 InstantSearchJS,并封装在 EmberJS 中。不幸的是,这个库带来了很多麻烦,如果我们发布此功能,我们将不会使用它。

  • 服务器使用 7.35 GB 的 RAM 来索引所有 Meta 内容。请记住,其中大部分是由于嵌入;如果没有嵌入,将不到 2 GB。

18 个赞

这听起来很棒。你能把它放在侧边栏之类的位置吗?

6 个赞

既然提到了 AWS,我想知道 AWS 的某些功能是否能成为改进搜索的快速且可持续的途径?

2 个赞

看起来很棒!速度方面,它确实令人惊叹。

它似乎不匹配标题中的单词。

例如,我正在寻找主题:“Objects type for theme setting”。
如果我不为 object 提供 s,它就找不到该主题。

5 个赞

keyword 选项是字面匹配,对于更宽松的匹配,您可以尝试 semantic(查找相似含义)或 hybrid 模式(混合匹配):

我认为如果我们继续使用此插件,默认使用 hybrid 模式可能是有意义的,因为人们并不熟悉像这样切换搜索类型。

7 个赞

我快速试了一下,觉得很有潜力。前几天我搜索了“实验性后台管理栏”和“从命令行恢复备份”这两个话题。第一种情况,在搜索结果中找到它花了一些时间;第二种情况,我最后只能去翻我的书签。但是新的搜索功能能同时找到这两个,而且比旧的快多了。对我来说绝对是个改进 :+1:

4 个赞

很有趣,迫不及待想进一步探索!到目前为止看起来很有希望!

我们能否看到这样的东西最终完全取代完整的搜索功能?此外,这个工具将作为当前顶部工具栏中搜索工具的补充吗?

3 个赞

太酷了。它将为移动设备提供类似 Elasticsearch 的自动完成选项吗?

3 个赞

谢谢,是我的错。
实际上,我根本没看到下拉列表,尽管第一篇帖子提到了模式。:derp:

现在明白了 :+1:

我同意。我不记得有哪个网站需要我更改其搜索模式。
作为用户,我期望有一个在大多数情况下都运行良好的默认模式。


高级动态过滤器确实太棒了!它将有助于快速缩小搜索范围。

总的来说,团队做得非常棒 :clap:;我会进一步尝试。

5 个赞

这项实验是为了研究从头开始重建搜索功能的可行性以及新方法的权衡。虽然现在下结论还为时过早,但如果新的搜索体验获得足够好的反响,那么它就可以被考虑集成到 Discourse 的许多搜索功能中,无论是全页搜索、内联标题搜索、类似主题的搜索以查找相关主题、用户提及、标签自动完成等。

使用这项技术可以轻松实现这一点,无论是在移动端还是桌面端,都类似于谷歌搜索界面。

模式仅用于实验,以便人们可以轻松比较和测试。如果这项功能发布,模式很可能会成为管理员选项,而不是面向用户的选项。

10 个赞

喜欢它速度很快!

我也喜欢 /filter 实验以及它展示所有过滤选项的方式。因此,在查找内容方面似乎探索了几个方向。这些将来会结合起来吗?

如果最终有一个通用语言,那将极大地简化我的工作,这样我作为用户就能清楚地理解:

  • 什么是搜索?什么是过滤?
  • 我如何在界面上识别它们,在哪里可以找到它们?
  • 我什么时候会看到一组简单/通用的过滤器?如何访问/展开完整集?
3 个赞

如果发布,即时搜索的后端将支持 /filter。这基本上是我们在这个实验中在主题搜索中所做的相同事情。

3 个赞

如果您不介意我问一下,为了了解背景并确切知道我在测试时要寻找什么:

  • 当前的搜索有什么问题,您希望对其进行更改或改进?
  • 除了速度之外,我们在这里评估的还有什么?
  • 如果您决定从头开始重建搜索,是否有机会让 Discourse 搜索其他内容?例如,不在 Discourse 中托管的文档?
3 个赞

多年来,这里出现了一些常见问题:

  1. 有很多关于我们的搜索找不到人们想要的东西的抱怨,特别是对于以下用例:
  1. Discourse 搜索根本无法处理拼写错误。

  2. 现有搜索糟糕的开发者体验导致其成为二等公民,例如聊天目前还无法搜索。

  3. 私信搜索糟糕的用户体验。

4 个赞

:bangbang: 我也有一个长长的列表,但我想确保我带着问题和理解进来,然后再大声疾呼 :joy:

我很高兴看到对改进的考虑。就我个人而言,虽然还有很多工作要做,但我们不断被告知,与他们其他的搜索体验相比,我们的用户多么喜欢我们的搜索(也就是 Discourse 搜索),即使它有一些怪癖。

作为一种强制措施,我的团队(至少在我们自己的团队内部)专门使用 Discourse 进行沟通。这是我团队成员今天提出的第一个要求:

这里有几个我初步想到的:

  • 更好地搜索私信 (PM)
  • 搜索聊天内容
  • 能够搜索(或扩展搜索)站外内容将非常棒。许多社区的活动不止于 Discourse 平台。
  • 正如你提到的,精确字符串搜索有时会返回奇怪的行为。
5 个赞

当我们试验像 Typesense 这样的现成解决方案时,我们对此进行了大量考虑。通过允许客户将文档注入我们的数据库,或允许前端从遵循某些兼容性指南的其他实例中消耗数据,可以更轻松地将我们的搜索扩展到外部“文档”。

很高兴我们在实验中一开始就解决了这两个问题!感谢您的反馈。

3 个赞

请注意,我们已暂时关闭此实验。它应该很快就会回来。:crossed_fingers: :slight_smile:

7 个赞

它回来了 :eyes:

4 个赞

除了在这里回复之外,我还在尝试进行一些简短的用户研究访谈,以更好地了解您如何使用新的即时搜索

  • 获取您的总体定性反馈 - 您喜欢/不喜欢/会更改/希望在未来看到的内容
  • 体验与我们当前搜索的比较
  • 看看您在使用新搜索时的实际操作

如果有人愿意通过电话聊天,我的私信是开放的!感谢您的任何反馈 :pray:

6 个赞

又一个小暂停 :palm_tree: 很快回来。 :slight_smile:

2 个赞