您好,
我注意到**“移动到现有主题”**模态框(此功能以前在我的网站上可以正常工作,因此这似乎是一个回归问题)存在问题:
- 在搜索主题中输入内容不会筛选结果
- 网络请求返回 200 且参数正确
- 浏览器控制台中没有 JavaScript 错误
- 全站
/search按预期工作 - 该问题在重建后仍然存在
正在发出的示例请求:
/search/query?term=Eve Park&type_filter=topic&search_for_id=true&restrict_to_archetype=regular
选择器列表似乎仍然是一组静态主题,并且随着
term的变化而没有改变。
在进行客户端调试后,我最初怀疑这可能是由于 Postgres 中未启用 pg_trgm 导致的,但在继续之前想确认一下。
我运行了以下命令:
./launcher enter app
rails c
ActiveRecord::Base.connection.execute(
"SELECT extname FROM pg_extension WHERE extname = 'pg_trgm';"
).to_a
如果命令返回:
[]
则此诊断有效。
然而,它返回的是:
[{"extname"=>"pg_trgm"}]
因此 pg_trgm 已启用,这似乎不是根本原因。
因此,我打算运行以下命令:
./launcher enter app
rake search:reindex
这可能有参考价值,因为我的论坛的某一特定类别有非常多的主题。
令人困惑的是:
- Discourse 其他方面仍能正常运行
- 完整的
/search按预期工作 - 主题移动自动完成功能静默降级,而不是发出警告
作为调试的一部分,我还启用了 search prefer recent posts(搜索偏好最近帖子)设置并重新加载了浏览器。这对行为没有影响——“移动到现有主题”搜索仍然不会随着我的输入而筛选结果。
由于该设置仅影响完整的 /search 排名,而不影响主题选择器端点,这与问题特定于 /search/query 而非一般搜索性能的观点是一致的。
在运行 rake search:reindex 之前,我想对推理进行一次验证:
主题移动选择器使用 /search/query 并设置了 search_for_id=true,这比完整的 /search 端点更直接地依赖于索引查找。因此,部分过时或不一致的搜索索引可能会影响选择器,而完全搜索似乎仍然有效。
考虑到:
- 调用了该端点,
- 响应返回 200,
pg_trgm已启用,- 切换
search prefer recent posts没有效果,
进行一次完整的 rake search:reindex 似乎是排除索引不一致性的下一个合乎逻辑的步骤。此外,缺乏任何警告或反馈,从管理员用户体验的角度来看,这尤其令人困惑。