GeniusResultAnswer - スコープ付き
GeniusResultAnswer API は、Genius 結果構成のプロセッサースクリプトで回答オブジェクトを作成するためのメソッドを提供します。この API で作成された回答は、Genius 結果の回答カードに入力できる検索要求またはキー/値ペアのマップを定義します。
GeniusResultContext API を使用して、Genius 結果構成のコンテキストから取得されたクエリの詳細を回答オブジェクトに入力できます。
- Genius 結果構成のAI Search request processorフィールドでスクリプティングする場合は、setTable() メソッドと、setSearchPhrase()、addSearchPhrases()、または setEncodedQuery() メソッドのいずれかを呼び出す必要があります。他のすべてのメソッドは、このユースケースに関連しない addDataMap() を除いてオプションです。
- Genius 結果構成の AI Search response processor フィールドでスクリプティングする場合は、 addDataMap() メソッドを呼び出す必要があります。このユースケースに関連する他のメソッドはありません。
sn_ais にします。Genius 結果のスクリプティングロジックの詳細については、「 新しい Genius 結果構成の作成」を参照してください。GeniusResultAnswer – addDataMap(オブジェクト map)
Genius 結果構成の AI Search response processor スクリプトで、任意のキーと値のペアのフィールドを使用して Genius 結果回答を定義します。任意のパブリック ServiceNow AI Platform API を利用してこれらのフィールドを生成できます。
このメソッドを複数回呼び出すことで、1 つの AI Search response processor スクリプトに複数のフィールドマップを追加できます。各フィールドマップには個別の Genius 結果の回答カードが入力されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| map | オブジェクト | AI 検索からの検索クエリ応答に追加するキーと値のペアフィールドの任意のセットを定義します。すべてのフィールド値は文字列でなければなりません。 |
| タイプ | 説明 |
|---|---|
| ブール | メソッドの呼び出しが成功したかどうかを示すフラグ。 有効な値:
|
この 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 スクリプトで定義された検索クエリに用語を追加します。
| 名前 | タイプ | 説明 |
|---|---|---|
| searchPhrases | アレイ | Genius 結果構成の AI Search request processor スクリプトで定義された検索クエリの検索用語として追加する任意の文字列のアレイ。 AI 検索 は、これらの検索用語を OR 演算子で区切られたかのように扱います。 例: |
| タイプ | 説明 |
|---|---|
| ブール | メソッドの呼び出しが成功したかどうかを示すフラグ。 有効な値:
|
この 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スクリプトからAI 検索に送信するエンコードされた検索クエリ。 |
| タイプ | 説明 |
|---|---|
| ブール | メソッドの呼び出しが成功したかどうかを示すフラグ。 有効な値:
|
この 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 つの結果を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| searchLimit | 番号 | Genius 結果構成の AI Search request processor スクリプトで定義された検索クエリに対して返される検索結果の最大数を表す正の整数値。3 よりも大きい値は無効です。 デフォルト値:3 |
| タイプ | 説明 |
|---|---|
| ブール | メソッドの呼び出しが成功したかどうかを示すフラグ。 有効な値:
|
この 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 スクリプトで定義された検索クエリの用語を指定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| searchPhrase | 文字列 | Genius 結果構成の AI Search request processor スクリプトで定義された検索クエリに使用する用語。 Genius 結果構成をトリガーしたクエリの検索用語を保持する場合は、このパラメーターを GeniusResultContext.getOriginalSearchPhrase() メソッドによって返された文字列値に設定します。 |
| タイプ | 説明 |
|---|---|
| ブール | メソッドの呼び出しが成功したかどうかを示すフラグ。 有効な値:
|
この 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 結果回答カードとして返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| table | 文字列 | ServiceNow AI Platform テーブルの名前です。このテーブルのインデックス付きレコードのみが、Genius 結果構成の AI Search request processor スクリプトで定義された検索クエリの結果として返されます。 |
| タイプ | 説明 |
|---|---|
| ブール | メソッドの呼び出しが成功したかどうかを示すフラグ。 有効な値:
|
この 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 結果構成をトリガーする検索クエリからタイポ処理フラグを継承します。
| 名前 | タイプ | 説明 |
|---|---|---|
| spellCheck | ブール | Genius 結果構成の AI Search request processor スクリプトで定義された検索クエリに対してタイポ処理の自動修正を実行するかどうかを示すフラグ。 有効な値:
デフォルト:true |
| タイプ | 説明 |
|---|---|
| なし |
この 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;
}