GeniusResultAnswer - スコープ付き

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

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

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

    GeniusResultAnswer – addDataMap(オブジェクト map)

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

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

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

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

    からの 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. パラメーター
    名前 タイプ 説明
    searchPhrases アレイ

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

    例:
    [
      "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(文字列 query)

    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 スクリプトは、User [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. パラメーター
    名前 タイプ 説明
    searchLimit 番号

    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(文字列 table)

    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(ブール spellCheck)

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

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

    表 : 13. パラメーター
    名前 タイプ 説明
    spellCheck ブーリアン

    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;
    }