AI 发现的 XX 结果隐藏 - 默认启用

我正在尝试在我们论坛上使用人工智能,到目前为止效果还不错(伙计们,你们做得很好),它确实能理解用户的意图并提供非常相关的结果。

我遇到的问题是,结果默认是隐藏的。

我找不到任何设置可以默认启用它,管理员该如何操作?真正强大的功能是默认启用此功能,并放弃可能时好时坏的语义搜索。

有趣的是,我尝试使用人工智能在此论坛上搜索,但没有得到任何相关答案。

2 个赞

不过,AI 仍在“相关主题”部分找到了它:

是的,我看到了那个页面,但我没有看到任何关于如何为所有人默认启用 AI 搜索结果的内容。我是不是遗漏了什么?

也许我误解了你的意思 :slight_smile:。我以为你的意思是“启用该功能”而不是“启用切换开关”。如果你指的是切换开关,我认为没有办法这样做。

我们刚刚将其设置为在整页搜索结果为零时默认切换,接下来将使其在快速标题搜索结果为零或很少时自动附加 AI 结果。

没有一个设置可以始终在整页搜索中自动切换它,因为那样会导致 Frontend developers: stop moving things that I’m about to click on | by Stephen Jayakar | Medium

5 个赞

这是一个很好的开始。如果能有一个选项来优先显示我们希望作为首选结果的内容(这是刚刚实现的逻辑的扩展),那就更好了:AI 或原生语义搜索。在我的例子中,AI 在搜索时产生的相关结果要多得多。

这样想:令牌已经被消耗用于运行 AI 搜索,那么为什么不显示更合适的结果呢?许多用户仍然对 AI 持谨慎态度,因此他们不会切换开关,但同时却得到了误导性的搜索结果(语义搜索),而他们并没有意识到这一点。让管理员决定什么最适合他们的社区默认设置。

4 个赞

作为一种临时解决方案,如果有人需要默认启用该切换按钮,您可以将此脚本添加到您的主题中(我已将其放在 <body> 下),该脚本基本上会查找 AI 搜索结果中的更改,然后将 AI 结果切换为启用。这不是最简洁的代码,也许 @awesomerobot 有更优雅的方法可以做到这一点。

<script type="text/javascript">
    // 此脚本用于在搜索完成后启用切换按钮以包含来自 AI 的搜索结果 - 一旦有原生选项默认启用此功能,请删除
    console.log('脚本已加载。持续查找 .semantic-search__searching 并管理观察者。');

    let searchObserver = null; // 用于保存观察者实例的变量

    function observeSearchContainer() {
      const searchStatusContainer = document.querySelector('.semantic-search__searching');

      if (searchStatusContainer) {
        // 如果找到容器
        if (!searchObserver) {
            // 如果尚未运行观察者,则启动一个
            console.log('.semantic-search__searching 已找到。开始观察。');

            searchObserver = new MutationObserver(function(mutations) {
              //console.log('在 .semantic-search__searching 中检测到变异:', mutations);
              mutations.forEach(function(mutation) {
                // 检查观察到的容器内的相关变异
                if (mutation.type === 'characterData') {
                  //console.log('检测到相关的变异类型。尝试触发切换按钮功能。 ' + mutation.type);
                  const currentToggleButton = document.querySelector('button.d-toggle-switch__checkbox.semantic-search__results-toggle');
                  if (currentToggleButton) {
                      const isCurrentlyEnabled = currentToggleButton.getAttribute('aria-checked') === 'true';
                      if (!isCurrentlyEnabled) { // 如果切换按钮当前未启用
                        // 触发点击事件以激活相关功能
                        currentToggleButton.click();
                        console.log('已触发切换按钮点击事件。');
                      } else {
                        console.log('切换按钮已启用。');
                      }
                  } else {
                    // 如果在容器仍然存在时移除了切换按钮,可能会出现这种情况
                    console.log('尝试触发功能时未找到切换按钮。');
                  }
                }
              });
            });

            const config = { childList: true, subtree: true, characterData: true, attributes: true };
            searchObserver.observe(searchStatusContainer, config);
            console.log('MutationObserver 已在 .semantic-search__searching 上启动。');
        } else {
            // 找到容器,并且观察者已在运行
            //console.log('.semantic-search__searching 已找到,观察者已激活。');
        }
      } else {
        // 如果未找到容器
        if (searchObserver) {
            // 如果之前有一个正在运行的观察者,则意味着容器已被移除
            console.log('.semantic-search__searching 已移除。正在断开观察者连接。');
            searchObserver.disconnect(); // 停止观察
            searchObserver = null; // 重置观察者变量
        } else {
            // 未找到容器,并且没有活动的观察者(正确状态)
            //console.log('.semantic-search__searching 尚未找到。');
        }
      }
    }

    // 使用间隔来定期检查容器是否存在
    const containerCheckInterval = setInterval(observeSearchContainer, 500); // 每 500 毫秒检查一次
</script>

我已将此移至 Feature,因为它似乎是关于如何改进此功能的开放式讨论。