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 結果回答を定義します。任意のパブリック Now 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アレイ。は、これらの検索用語を OR 演算子で区切られたものとして扱います。 AI 検索 例: |
| タイプ | 説明 |
|---|---|
| ブール | メソッドの呼び出しが成功したかどうかを示すフラグ。 有効な値:
|
この 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 スクリプトは、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 つの結果を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 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 結果回答カードとして返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| テーブル | 文字列 | Now 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;
}