GeniusResultAnswer: スコープ指定

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:17分
  • GeniusResultAnswer API は、Genius 結果構成のプロセッサースクリプトで回答オブジェクトを作成するためのメソッドを提供します。この API で作成された回答は、Genius 結果の回答カードに入力できる検索要求またはキーと値のペアマップを定義します。

    GeniusResultContext API を使用して、Genius 結果構成のコンテキストから取得したクエリの詳細を回答オブジェクトに入力できます。

    answer オブジェクトを作成するために呼び出す必要がある GeniusResultAnswer API メソッドは、スクリプトに使用している AI 検索 Genius 結果構成フォームフィールドによって異なります。
    • Genius 結果構成の AI Search request processor フィールドでスクリプトを作成する場合は、 setTable() メソッドと、 setSearchPhrase()addSearchPhrases()、または setEncodedQuery() メソッドのいずれかを呼び出す必要があります。addDataMap() を除き、他のすべてのメソッドはオプションであり、このユースケースには関係ありません。
    • Genius 結果構成の AI Search response processor フィールドでスクリプティングを作成する場合は、 addDataMap() メソッドを呼び出す必要があります。このユースケースに関連する他のメソッドはありません。
    この API を sn_ais 名前空間識別子とともに Genius 結果のサーバー側スクリプトで使用します。Genius 結果のスクリプティングロジックの詳細については、「 新しい Genius 結果構成の作成」を参照してください。

    GeniusResultAnswer – addDataMap(オブジェクトマップ)

    Genius 結果構成の AI Search response processor スクリプトで、任意のキーと値のペアのフィールドを使用して Genius 結果回答を定義します。パブリック Now Platform API を使用して、これらのフィールドを生成できます。

    注:
    Genius 結果構成の AI Search response processor フィールドでスクリプトを作成する場合は、このメソッドを呼び出す必要があります。このメソッドを呼び出さない場合、Genius 結果はトリガーされたときに回答を返しません。

    このメソッドを複数回呼び出すことで、単一の AI Search response processor スクリプトに複数のフィールドマップを追加できます。各フィールドマップには、個別の Genius 結果回答カードが入力されます。

    表 : 1. パラメーター
    名前 タイプ 説明
    マップ オブジェクト

    AI 検索からの検索クエリ応答に追加するキーと値のペアのフィールドの任意のセットを定義します。すべてのフィールド値は文字列である必要があります。

    {
      "fieldName1": String,
      "fieldName2": String
    }
    表 : 2. 戻り値
    タイプ 説明
    ブール

    メソッドの呼び出しが成功したかどうかを示すフラグ。

    有効な値:
    • true:メソッドの発動に成功しました。
    • false:メソッドの発動に失敗しました。

    この AI Search response processor スクリプトは、Genius 結果解答カードに表示するために、カスタムのタイトルフィールドと URL のキーと値のペアフィールドを回答オブジェクトに追加します。

    function process(context) {
      var answer = new sn_ais.GeniusResultAnswer();
    
      var customFieldMap = {
        "title": "My custom Genius Result answer",
        "url": "https://example.com/myGeniusResultLink"
      }
    
      answer.addDataMap(customFieldMap);
    
      return answer;
    }

    GeniusResultAnswer – addSearchPhrases(アレイ searchPhrases)

    Genius 結果構成の AI Search request processor スクリプトで定義された検索クエリに用語を追加します。

    注:
    Genius 結果構成の AI Search request processor フィールドでスクリプトを作成する場合は、 setTable() メソッドと、 setSearchPhrase()addSearchPhrases()、または setEncodedQuery() メソッドのいずれかを呼び出す必要があります。必要なメソッドの両方を呼び出さない場合、Genius 結果はトリガーされたときに回答を返しません。
    表 : 3. パラメーター
    名前 タイプ 説明
    searchPhrase アレイ

    Genius 結果構成の AI Search request processor スクリプトで定義された検索クエリの検索用語として追加する任意の文字列のアレイ。 AI 検索 、これらの検索用語を OR 演算子で区切ったものとして扱います。

    例:
    [
      "Term": String,
      "Quoted phrase": String
    ]
    表 : 4. 戻り値
    タイプ 説明
    ブール

    メソッドの呼び出しが成功したかどうかを示すフラグ。

    有効な値:
    • true:メソッドの発動に成功しました。
    • false:メソッドの発動に失敗しました。

    この AI Search request processor スクリプトは、 Beth または Anglin という用語を含むユーザー [sys_user] テーブルのレコードに対する検索クエリを作成します。

    function process(context) {
      var answer = new sn_ais.GeniusResultAnswer();
    
      answer.setTable('sys_user');
      answer.addSearchPhrases(['Beth','Anglin']);
    
      return answer;
    }

    GeniusResultAnswer – setEncodedQuery(文字列クエリ)

    Genius 結果構成の AI Search request processor スクリプトでエンコードされた検索クエリを指定します。このエンコードされた検索クエリの結果は、Genius 結果回答カードとして表示されます。

    注:
    Genius 結果構成の AI Search request processor フィールドでスクリプトを作成する場合は、 setTable() メソッドと、 setSearchPhrase()addSearchPhrases()、または setEncodedQuery() メソッドのいずれかを呼び出す必要があります。必要なメソッドの両方を呼び出さない場合、Genius 結果はトリガーされたときに回答を返しません。
    表 : 5. パラメーター
    名前 タイプ 説明
    クエリ 文字列 Genius 結果構成のAI Search request processorスクリプトからAI 検索に送信するエンコードされた検索クエリ。
    表 : 6. 戻り値
    タイプ 説明
    ブール

    メソッドの呼び出しが成功したかどうかを示すフラグ。

    有効な値:
    • true:メソッドの発動に成功しました。
    • false:メソッドの発動に失敗しました。

    この AI Search request processor スクリプトは、ユーザー [sys_user] テーブルに対してエンコードされた検索クエリを作成します。最後のクエリは、ユーザーの元の検索クエリで検出されたエンティティから生成された複数のサブクエリを結合します。

    function process(context) {
      var answer = new sn_ais.GeniusResultAnswer();
    
      answer.setTable('sys_user');
      answer.setSearchLimit(2);
      answer.spellCheck(false);
      var queries = [];
      var matchingSegments;
      var predictionResult = context.getPredictionResult();
      if (predictionResult && predictionResult.length == 1) {
        var detail = predictionResult[0];
        if (detail['result'] && detail['result']['entities']) {
          var entities = detail['result']['entities'];
          for (var i = 0; i < entities.length; i++) {
            if (entities[i]['name'].endsWith('personName')) {
              matchingSegments = entities[i]['matchingSegments'];
              for (var j = 0; j < matchingSegments.length; j++)
                answer.addSearchPhrases([matchingSegments[j]['value']]);
            } else if (entities[i]['name'].endsWith('cityLocation')) {
              matchingSegments = entities[i]['matchingSegments'];
              if (matchingSegments && matchingSegments.length > 0)
                queries.push('location.nameLIKE' + matchingSegments[0]['value']);
            } else if (entities[i]['name'].endsWith('departmentName')) {
              matchingSegments = entities[i]['matchingSegments'];
              if (matchingSegments && matchingSegments.length > 0)
                queries.push('department.nameLIKE' + matchingSegments[0]['value']);
            } else if (entities[i]['name'].endsWith('jobTitle')) {
              matchingSegments = entities[i]['matchingSegments'];
              if (matchingSegments && matchingSegments.length > 0)
                queries.push('titleLIKE' + matchingSegments[0]['value']);
            }
          }
        }
      }
    
      if (queries.length > 0)
        answer.setEncodedQuery(queries.join('^'));
    
      return answer;
    }

    GeniusResultAnswer – setSearchLimit(数値 searchLimit)

    Genius 結果構成の AI Search request processor スクリプトで定義された検索クエリに対して返される結果の最大数を制限します。デフォルトでは、検索クエリは最大 3 つの結果を返します。

    表 : 7. パラメーター
    名前 タイプ 説明
    検索制限 番号

    Genius 結果構成の AI Search request processor スクリプトで定義された検索クエリに対して返される検索結果の最大数を示す正の整数値。3 を超える値は効果がありません。

    デフォルト値:3

    表 : 8. 戻り値
    タイプ 説明
    ブール

    メソッドの呼び出しが成功したかどうかを示すフラグ。

    有効な値:
    • true:メソッドの発動に成功しました。
    • false:メソッドの発動に失敗しました。

    この AI Search request processor スクリプトは、 ラップトップ という用語を含むカタログアイテム [sc_cat_item] テーブルからレコードを検索し、最大 2 つの結果を返します。

    function process(context) {
      var answer = new sn_ais.GeniusResultAnswer();
    
      answer.setTable('sc_cat_item');
      answer.setSearchPhrase('laptop');
      answer.setSearchLimit(2);
    
      return answer;
    }

    GeniusResultAnswer – setSearchPhrase(文字列 searchPhrase)

    Genius 結果構成の AI Search request processor スクリプトで定義された検索クエリの用語を指定します。

    注:
    Genius 結果構成の AI Search request processor フィールドでスクリプトを作成する場合は、 setTable() メソッドと、 setSearchPhrase()addSearchPhrases()、または setEncodedQuery() メソッドのいずれかを呼び出す必要があります。必要なメソッドの両方を呼び出さない場合、Genius 結果はトリガーされたときに回答を返しません。
    表 : 9. パラメーター
    名前 タイプ 説明
    searchPhrase 文字列

    Genius 結果構成の AI Search request processor スクリプトで定義された検索クエリに使用する用語。

    Genius 結果構成をトリガーしたクエリの検索用語を保持する場合は、このパラメーターを GeniusResultContext.getOriginalSearchPhrase() メソッドによって返される文字列値に設定します。

    表 : 10. 戻り値
    タイプ 説明
    ブール

    メソッドの呼び出しが成功したかどうかを示すフラグ。

    有効な値:
    • true:メソッドの発動に成功しました。
    • false:メソッドの発動に失敗しました。

    この AI Search request processor スクリプトは、 用語 Anglin を含むユーザー [sys_user] テーブルのレコードの検索クエリを作成します。

    function process(context) {
      var answer = new sn_ais.GeniusResultAnswer();
    
      answer.setTable('sys_user');
      answer.setSearchPhrase('Anglin');
    
      return answer;
    }

    GeniusResultAnswer – setTable(文字列テーブル)

    Genius 結果構成の AI Search request processor スクリプトで定義された検索クエリを特定のテーブルに制限します。クエリは、指定されたテーブルから検索結果のみを Genius 結果回答カードとして返します。

    注:
    Genius 結果構成のAI Search request processorフィールドでスクリプティングを作成する場合は、このメソッドと、setSearchPhrase()、addSearchPhrases()、または setEncodedQuery() メソッドのいずれかを呼び出す必要があります。必要なメソッドの両方を呼び出さない場合、Genius 結果はトリガーされたときに回答を返しません。
    表 : 11. パラメーター
    名前 タイプ 説明
    テーブル 文字列 Now Platform テーブル名。このテーブルのインデックス付きレコードのみが、Genius 結果構成の AI Search request processor スクリプトで定義された検索クエリの結果として返されます。
    表 : 12. 戻り値
    タイプ 説明
    ブール

    メソッドの呼び出しが成功したかどうかを示すフラグ。

    有効な値:
    • true:メソッドの発動に成功しました。
    • false:メソッドの発動に失敗しました。

    この AI Search request processor スクリプトは、 用語 Anglin を含むユーザー [sys_user] テーブルのレコードの検索クエリを作成します。

    function process(context) {
      var answer = new sn_ais.GeniusResultAnswer();
    
      answer.setTable('sys_user');
      answer.setSearchPhrase('Anglin');
    
      return answer;
    }

    GeniusResultAnswer – spellCheck(ブール値のスペルチェック)

    Genius 結果構成の AI Search request processor スクリプトで定義された検索クエリに対してタイポ処理の自動修正 (スペルチェック) を実行するかどうかを指定します。

    Genius 結果構成の AI Search request processor スクリプトでこのメソッドを呼び出さない場合、定義された検索クエリは、Genius 結果構成をトリガーする検索クエリからタイポ処理フラグを継承します。

    表 : 13. パラメーター
    名前 タイプ 説明
    スペルチェック ブール

    Genius 結果構成の AI Search request processor スクリプトで定義された検索クエリに対してタイポ処理の自動修正を実行するかどうかを示すフラグ。

    有効な値:
    • true:検索クエリのタイポ処理の自動修正を実行します。
    • false:検索クエリのタイポ処理の自動修正をバイパスします。

    デフォルト:true

    表 : 14. 戻り値
    タイプ 説明
    なし

    この AI Search request processor スクリプトは、ユーザー [sys_user] テーブルに対する検索クエリのタイポ処理の自動修正を無効にします。

    function process(context) {
      var answer = new sn_ais.GeniusResultAnswer();
    
      answer.setTable('sys_user');
      answer.setSearchLimit(2);
      answer.spellCheck(false);
      var queries = [];
      var matchingSegments;
      var predictionResult = context.getPredictionResult();
      if (predictionResult && predictionResult.length == 1) {
        var detail = predictionResult[0];
        if (detail['result'] && detail['result']['entities']) {
          var entities = detail['result']['entities'];
          for (var i = 0; i < entities.length; i++) {
            if (entities[i]['name'].endsWith('personName')) {
              matchingSegments = entities[i]['matchingSegments'];
              for (var j = 0; j < matchingSegments.length; j++)
                answer.addSearchPhrases([matchingSegments[j]['value']]);
            } else if (entities[i]['name'].endsWith('cityLocation')) {
              matchingSegments = entities[i]['matchingSegments'];
              if (matchingSegments && matchingSegments.length > 0)
                queries.push('location.nameLIKE' + matchingSegments[0]['value']);
            } else if (entities[i]['name'].endsWith('departmentName')) {
              matchingSegments = entities[i]['matchingSegments'];
              if (matchingSegments && matchingSegments.length > 0)
                queries.push('department.nameLIKE' + matchingSegments[0]['value']);
            } else if (entities[i]['name'].endsWith('jobTitle')) {
              matchingSegments = entities[i]['matchingSegments'];
              if (matchingSegments && matchingSegments.length > 0)
                queries.push('titleLIKE' + matchingSegments[0]['value']);
            }
          }
        }
      }
    
      if (queries.length > 0)
        answer.setEncodedQuery(queries.join('^'));
    
      return answer;
    }