GeniusResultContext -スコープ付き

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:14分
  • GeniusResultContext API は、Genius 結果構成のコンテキストから検索クエリ情報を取得するためのメソッドを提供します。

    この API で取得された検索クエリーの詳細を使用して、GeniusResultAnswer API で作成された Genius 結果の回答オブジェクトを入力できます。

    この API を Genius 結果のサーバー側スクリプトで使用し、名前空間識別子を sn_ais にします。Genius 結果のスクリプティングロジックの詳細については、「 新しい Genius 結果構成の作成」を参照してください。

    GeniusResultContext - getMatchingDocuments()

    Genius 結果構成をトリガーする検索クエリから検索結果ドキュメントを取得します。

    Genius 結果構成の応答プロセッサスクリプトでこのメソッドを使用して、Genius 結果をトリガーする検索クエリによって返された検索結果ドキュメントからフィールド値を取得します。GeniusResultAnswer API メソッドを使用して、Genius 結果の回答に検索結果ドキュメントのフィールドに入力できます。
    注:
    このメソッドは、 AI Search request processor スクリプトで呼び出されたときに、 AI 検索 がトリガーする検索クエリの結果を計算する前に実行されるため、結果を返しません。このメソッドを要求プロセッサースクリプトで使用しないでください。
    表 : 1. パラメーター
    名前 タイプ 説明
    なし
    表 : 2. 返される内容
    タイプ 説明
    [Array]

    各オブジェクトが検索クエリに一致した検索結果ドキュメントを表すオブジェクトのアレイ。

    データタイプ:アレイ

    [
      {
        ".score": Number,
        ".table": "String",
        ".text": "String",
        ".title": "String",
        ".url": "String",
        "class_name": "String",
        "sys_id": "String",
        "<field_name>": <field_value>
      }
    ]
    注:
    検索クエリによっては、リストされた名前と値のペアに加えて、検索結果ドキュメントの AI 検索 インデックスフィールドの一部がオブジェクトに表示される場合があります。
    [配列]..スコア

    検索クエリのコンテキストで検索結果ドキュメントに対して計算された関連性スコア。

    データタイプ:数値

    注:
    この名前と値のペアの名前は、 AI 検索 インデックスの スコア 共通フィールドと区別するためにピリオドで始まります。
    [配列]..テーブル

    検索結果ドキュメントのインデックスの作成元の ServiceNow AI Platform テーブルの名前。

    データタイプ:文字列

    注:
    この名前と値のペアの名前は、 AI 検索 インデックスの テーブル 共通フィールドと区別するためにピリオドで始まります。
    [配列]..テキスト

    検索結果ドキュメントのインデックス付きテキスト。

    データタイプ:文字列

    注:
    この名前と値のペアの名前は、 AI 検索 インデックスの テキスト 共通フィールドと区別するためにピリオドで始まります。
    [配列]..タイトル

    検索結果ドキュメントのインデックス付きタイトル。

    データタイプ:文字列

    注:
    この名前と値のペアの名前は、 AI 検索 インデックス のタイトル 共通フィールドと区別するためにピリオドで始まります。
    [配列]..URL

    検索結果ドキュメントの URL。

    データタイプ:文字列

    注:
    この名前と値のペアの名前は、 AI 検索 インデックスの URL 共通フィールドと区別するためにピリオドで始まります。
    [アレイ].class_name

    検索結果ドキュメントが属する子クラス。テーブルの子クラスの詳細については、「 Table extension and classes」を参照してください。

    データタイプ:文字列

    [アレイ].sys_id

    検索結果ドキュメントのSys_id。

    データタイプ:文字列

    [配列].<field_name>

    AI 検索 検索結果ドキュメントのインデックスフィールド。

    データタイプ: AI 検索 インデックスフィールドのデータタイプ。

    この AI Search response processor スクリプトは、検索クエリに一致する最大 3 つの検索結果ドキュメントを取得し、それらのいずれかがナレッジ [kb_knowledge] テーブルからのものかどうかを確認します。ナレッジテーブルから検索結果ドキュメントが見つかった場合、この関数はそのドキュメントのフィールドを GeniusResultAnswer オブジェクトに追加して、UI がユーザーを表示できるようにします。

    function process(context) {
      var answer = new sn_ais.GeniusResultAnswer();
      var matchingDocuments = context.getMatchingDocuments();
      if (matchingDocuments.length > 1) {
        for (var i = 0; i < 3; i++) {
          var currentDocument = matchingDocuments[i];
          if (currentDocument['.table'] == 'kb_knowledge') {
            var gr = new GlideRecord("kb_knowledge");
            if (gr.get(currentDocument['sys_id'])) {
              answer.addDataMap({
                "number": currentDocument['number'],
                "url": currentDocument['.url'],
                "title": currentDocument['.title']
              });
            }
          }
          break;
        }
      }
      return answer;
    }

    GeniusResultContext – getOriginalSearchPhrase()

    Genius 結果構成をトリガーする検索クエリから元の検索用語を取得します。

    取得した検索用語を使用し、 GeniusResultAnswer API メソッドを使用して Genius 結果の回答を入力できます。

    表 : 3. パラメーター
    名前 タイプ 説明
    なし
    表 : 4. 返される内容
    タイプ 説明
    文字列

    検索クエリーの元の用語です。

    データタイプ:文字列

    この AI Search request processor スクリプトは、検索クエリの元の用語を取得し、それらを新しいスニペット検索のクエリ用語として使用します。

    function process(context) {
      var answer = new sn_ais.GeniusResultAnswer();
    
      var searchPhrase = context.getOriginalSearchPhrase();
      answer.setSearchPhrase(searchPhrase);
      answer.snippetSearch(true);
    
      return answer;
    }

    GeniusResultContext – getPredictionResult()

    Genius 結果構成をトリガーする検索クエリの NLU モデル予測結果を取得します。

    このメソッドを Genius 結果構成の要求または応答プロセッサスクリプトで使用して、検索クエリをトリガーするために検出されたインテントを取得します。検出されたインテントの詳細を含む Genius 結果の回答を、GeniusResultAnswer API メソッドを使用して入力できます。

    表 : 5. パラメーター
    名前 タイプ 説明
    なし
    表 : 6. 返される内容
    タイプ 説明
    [Array]

    各オブジェクトが検索クエリーの NLU モデルインテント予測結果を表すオブジェクトのアレイです。

    データタイプ:アレイ

    [
      {
        "intentName": "String",
        "result": {Object},
        "solutionName": "String"
      }
    ]
    [Array].intentName

    検索クエリーで検出された NLU モデルインテントの名前

    データタイプ:文字列

    [Array].result

    検索クエリーの NLU モデルインテント予測結果を表すオブジェクトです。

    データタイプ:オブジェクト

    "result": {
      "application": {Object},
      "result": {Object},
      "solutionLabel": "String",
      "solutionName": "String",
      "solutionType": "String",
      "type": "String",
      "version": Number
    }
    [Array].result.application

    予測結果を生成した検索アプリケーションのメタデータを含むオブジェクトです。

    データタイプ:オブジェクト

    "application": {
      "language": "String",
      "type": "String"
    }
    [Array].result.application.language

    予測結果を生成した ServiceNow AI Platform アプリケーションの言語コンテキストです。

    データタイプ:文字列

    [Array].result.application.type

    予測結果を生成した ServiceNow AI Platform アプリケーションのタイプです。

    データタイプ:文字列

    [Array].result.result

    NLU モデルインテント予測結果の詳細を含むオブジェクトです。

    データタイプ:オブジェクト

    "result": {
      "entities": [Array],
      "intentName": "String",
      "intents": [Array],
      "nluModelName": "String",
      "score": Number
    }
    [Array].result.result.entities

    各オブジェクトが検索クエリーで検出された NLU モデルインテントエンティティを表すオブジェクトのアレイです。

    データタイプ:アレイ

    "entities": [
      {
        "matchingSegments": [Array],
        "name": "String",
        "parts": [Array],
        "score": Number,
        "startingPosition": Number,
        "value": "String"
      }
    ]
    [Array].result.result.entities.matchingSegments

    各オブジェクトが検出された NLU エンティティの一致セグメントを表すオブジェクトのアレイです。

    データタイプ:アレイ

    "matchingSegments": [
      {
        "directMatch": Boolean
        "meta": {Object},
        "value": "String"
      }
    ]
    [Array].result.result.entities.matchingSegments.directMatch

    NLU エンティティの一致セグメントがエンティティ値の完全一致を表すかどうかを示すフラグです。

    [Array].result.result.entities.matchingSegments.meta

    NLU エンティティの一致セグメントのメタデータを表すキー/値ペアのフィールドを含むオブジェクトです。

    データタイプ:オブジェクト

    "meta": {
      "augmentedBy": "String",
      "colMeta:first_name": "String",
      "colMeta:last_name": "String",
      "compositionStrategy": "String",
      "fieldName": "String",
      "searchPreProcessors": "String",
      "SUB_PHRASE.penalty": "String",
      "tableName": "String"
    }
    [Array].result.result.entities.matchingSegments.value

    NLU エンティティの一致セグメントの文字列値です。

    データタイプ:文字列

    [Array].result.result.entities.name

    検出された NLU エンティティの名前です。形式は entity:[NLU_model].[intent].[entity_type] です。

    データタイプ:文字列

    [Array].result.result.entities.parts

    各オブジェクトが予測結果にある NLU エンティティのパーツを表すオブジェクトのアレイです。

    データタイプ:アレイ

    "parts": [
      {
        "meta": {Object},
        "value": "String"
      }
    ]
    [Array].result.result.entities.parts.meta

    NLU エンティティのパーツのメタデータを表すキー/値ペアのフィールドを含むオブジェクトです。

    データタイプ:オブジェクト

    "meta": {
      "augmentedBy": "String",
      "colMeta:name": "String",
      "compositionStrategy": "String",
      "fieldName": "String",
      "searchPreProcessors": "String",
      "SUB_PHRASE.penalty": "String",
      "tableName": "String"
    }
    [Array].result.result.entities.parts.value

    NLU エンティティのパーツの文字列値です。

    データタイプ:文字列

    [Array].result.result.entities.score

    検出された NLU エンティティの信頼性を示す 0 〜 1 の数値スコアです。

    データタイプ:数値

    [Array].result.result.entities.startingPosition

    検索クエリーで検出された NLU エンティティが始まる文字位置の数値インデックスです。

    データタイプ:数値

    [Array].result.result.entities.value

    検索クエリーで検出された NLU の文字列値です。

    データタイプ:文字列

    [Array].result.result.intentName

    検索クエリーで検出された NLU モデルインテントの名前です。

    データタイプ:文字列

    [Array].result.result.intents

    各オブジェクトが、検索クエリーで検出済みのネストされた NLU モデルインテントを表すオブジェクトのアレイです。

    ネストされたインテントオブジェクトには、親 NLU モデルインテントオブジェクトと同じパラメーター名とデータタイプが含まれます。

    データタイプ:アレイ

    "intents": [
      {
        "entities": [Array],
        "intentName": "String",
        "intents": [Array],
        "nluModelName": "String",
        "score": Number
      }
    ]
    [Array].result.result.nluModelName

    予測結果を生成した NLU モデルの名前です。

    データタイプ:文字列

    [Array].result.result.score

    NLU モデル予測結果の信頼性を示す 0 〜 1 の数値スコアです。

    データタイプ:数値

    [Array].result.solutionLabel

    予測結果を生成した NLU モデルのラベルです。

    データタイプ:文字列

    [Array].result.solutionName

    予測結果を生成した NLU モデルの名前です。

    データタイプ:文字列

    [Array].result.solutionType

    予測結果を生成した NLU モデルのタイプです。

    データタイプ:文字列

    [Array].result.type

    予測結果のタイプです。

    データタイプ:文字列

    [Array].result.version

    予測結果を生成した NLU モデルのバージョンです。

    データタイプ:数値

    [Array].solutionName

    予測結果を生成した NLU モデルの名前です。

    データタイプ:文字列

    この AI Search request processor スクリプトは、検索クエリに NLU モデルの予測結果が含まれているかどうかを確認します。予測結果が見つかると、検出されたすべての catalogItem エンティティの一致セグメントを検索用語として追加します。

    function process(context) {
      var answer = new sn_ais.GeniusResultAnswer();
    
      answer.setTable('sc_cat_item');
      answer.setSearchLimit(2);
      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('catalogItem')) {
              var matchingSegments = entities[i]['matchingSegments'];
              for (var j = 0; j < matchingSegments.length; j++)
                answer.addSearchPhrases([matchingSegments[j]['value']]);
            }
          }
        }
      }
    
      return answer;
    }