GeniusResultContext -スコープ付き
GeniusResultContext API は、Genius 結果構成のコンテキストから検索クエリ情報を取得するためのメソッドを提供します。
この API で取得された検索クエリーの詳細を使用して、GeniusResultAnswer API で作成された Genius 結果の回答オブジェクトを入力できます。
この API を Genius 結果のサーバー側スクリプトで使用し、名前空間識別子を sn_ais にします。Genius 結果のスクリプティングロジックの詳細については、「 新しい Genius 結果構成の作成」を参照してください。
GeniusResultContext - getMatchingDocuments()
Genius 結果構成をトリガーする検索クエリから検索結果ドキュメントを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| [Array] | 各オブジェクトが検索クエリに一致した検索結果ドキュメントを表すオブジェクトのアレイ。 データタイプ:アレイ
注: 検索クエリによっては、リストされた名前と値のペアに加えて、検索結果ドキュメントの AI 検索 インデックスフィールドの一部がオブジェクトに表示される場合があります。 |
| [アレイ]..スコア | 検索クエリのコンテキストで検索結果ドキュメントに対して計算された関連性スコア。 データタイプ:数値 注: この名前と値のペアの名前は、インデックスのスコア共通フィールドと区別するためにピリオドでAI 検索始まります。 |
| [アレイ]..テーブル | Now Platform検索結果ドキュメントのインデックスが作成されたテーブルの名前。 データタイプ:文字列 注: この名前と値のペアの名前は、インデックスのテーブル共通フィールドと区別するためにピリオドでAI 検索始まります。 |
| [アレイ]..テキスト | 検索結果ドキュメントのインデックス付きテキスト。 データタイプ:文字列 注: この名前と値のペアの名前は、インデックスのテキスト共通フィールドと区別するためにピリオドでAI 検索始まります。 |
| [アレイ]..タイトル | 検索結果ドキュメントのインデックス付きタイトル。 データタイプ:文字列 注: この名前と値のペアの名前は、インデックスのタイトル共通フィールドと区別するためにピリオドでAI 検索始まります。 |
| [アレイ]..Url | 検索結果ドキュメントの URL。 データタイプ:文字列 注: この名前と値のペアの名前は、インデックスの url 共通フィールドとAI 検索区別するためにピリオドで始まります。 |
| [アレイ].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 結果の回答を入力できます。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 |
検索クエリーの元の用語です。 データタイプ:文字列 |
この 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 メソッドを使用して入力できます。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| [Array] | 各オブジェクトが検索クエリーの NLU モデルインテント予測結果を表すオブジェクトのアレイです。 データタイプ:アレイ |
| [Array].intentName | 検索クエリーで検出された NLU モデルインテントの名前 データタイプ:文字列 |
| [Array].result | 検索クエリーの NLU モデルインテント予測結果を表すオブジェクトです。 データタイプ:オブジェクト |
| [Array].result.application | 予測結果を生成した検索アプリケーションのメタデータを含むオブジェクトです。 データタイプ:オブジェクト |
| [Array].result.application.language | 予測結果を生成した Now Platform アプリケーションの言語コンテキストです。 データタイプ:文字列 |
| [Array].result.application.type | 予測結果を生成した Now Platform アプリケーションのタイプです。 データタイプ:文字列 |
| [Array].result.result | NLU モデルインテント予測結果の詳細を含むオブジェクトです。 データタイプ:オブジェクト |
| [Array].result.result.entities | 各オブジェクトが検索クエリーで検出された NLU モデルインテントエンティティを表すオブジェクトのアレイです。 データタイプ:アレイ |
| [Array].result.result.entities.matchingSegments | 各オブジェクトが検出された NLU エンティティの一致セグメントを表すオブジェクトのアレイです。 データタイプ:アレイ |
| [Array].result.result.entities.matchingSegments.directMatch | NLU エンティティの一致セグメントがエンティティ値の完全一致を表すかどうかを示すフラグです。 |
| [Array].result.result.entities.matchingSegments.meta | NLU エンティティの一致セグメントのメタデータを表すキー/値ペアのフィールドを含むオブジェクトです。 データタイプ:オブジェクト |
| [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 エンティティのパーツを表すオブジェクトのアレイです。 データタイプ:アレイ |
| [Array].result.result.entities.parts.meta | NLU エンティティのパーツのメタデータを表すキー/値ペアのフィールドを含むオブジェクトです。 データタイプ:オブジェクト |
| [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 モデルインテントオブジェクトと同じパラメーター名とデータタイプが含まれます。 データタイプ:アレイ |
| [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;
}