AIで検出されたXXの結果を非表示にする - デフォルトで有効

AIをディスコースフォーラムで試していますが、今のところ非常に良いです(皆さん、素晴らしい仕事です)。ユーザーの意図を考慮し、非常に的確な結果を提供しています。

問題は、結果がデフォルトで非表示になっていることです。

デフォルトで有効にする設定が見つかりません。管理者はどのように設定するのでしょうか?真の力は、この機能をデフォルトで有効にし、一貫性のないセマンティック検索から移行することにあります。

面白いことに、このフォーラムでAIを使って検索してみましたが、関連する回答を得られませんでした。

「いいね!」 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">
    // THIS SCRIPT IS TO ENABLE THE TOGGLE TO INCLUDE SEARCH RESULTS FROM AI AFTER THE SEARCH IS COMPLETE - DELETE ONCE THERE IS A NATIVE OPTION TO ENABLE THIS BY DEFAULT
    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 に移動しました。この機能の改善方法についてのオープンエンドな会話のように思われるためです。