GeniusResultAnswer - 범위 지정
GeniusResultAnswer API는 Genius Result 구성의 프로세서 스크립트에서 응답 객체를 생성하기 위한 메서드를 제공합니다. 이 API를 사용하여 만든 답변은 Genius 결과 답변 카드를 채울 수 있는 검색 요청 또는 키-값 쌍 맵을 정의합니다.
GeniusResultContext API를 사용하여 Genius Result 구성의 컨텍스트에서 검색된 쿼리 세부 정보로 응답 객체를 채울 수 있습니다.
- Genius Result 구성의 AI Search request processor 필드에서 스크립팅하는 경우 setTable() 메서드와 setSearchPhrase(), addSearchPhrases() 또는 setEncodedQuery() 메서드 중 하나를 호출해야 합니다. 이 사용 사례와 관련이 없는 addDataMap()을 제외한 다른 모든 메서드는 선택 사항입니다.
- Genius Result 구성의 AI Search response processor 필드에서 스크립팅하는 경우 addDataMap() 메서드를 호출해야 합니다. 이 사용 사례와 관련된 다른 메서드는 없습니다.
sn_ais 네임스페이스 식별자를 사용하여 Genius Result 서버 측 스크립트에서 이 API를 사용합니다. Genius Results의 스크립팅 논리에 대한 자세한 내용은 새 Genius Result 구성 만들기를 참조하십시오.GeniusResultAnswer – addDataMap(오브젝트 맵)
Genius Result 구성 AI Search response processor 의 스크립트에서 임의의 키-값 쌍 필드를 사용하여 Genius Result 대답을 정의합니다. 공용 Now Platform API를 사용하여 이러한 필드를 생성할 수 있습니다.
이 메서드를 두 번 이상 호출하면 단일 AI Search response processor 스크립트에 여러 필드 맵을 추가할 수 있습니다. 각 필드 맵은 별도의 Genius 결과 답안 카드를 채웁니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 맵 | 객체 | 의 검색 쿼리 응답 AI 검색에 추가할 임의의 키-값 쌍 필드 집합을 정의합니다. 모든 필드 값은 문자열이어야 합니다. |
| 유형 | 설명 |
|---|---|
| 부울 | 메서드 호출이 성공했는지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
이 AI Search response processor 스크립트는 사용자 지정 제목 및 URL 키-값 쌍 필드를 Genius 결과 답안 카드에 표시할 응답 객체에 추가합니다.
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 Result 구성 스크립트에 정의된 검색 쿼리에 AI Search request processor 용어를 추가합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 검색구문 | 배열 | Genius Result 구성 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(쿼리 문자열)
Genius Result 구성 AI Search request processor 스크립트에 인코딩된 검색 쿼리를 지정합니다. 이 인코딩된 검색 쿼리의 결과는 Genius 결과 대답 카드로 표시됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 쿼리 | 문자열 | Genius Result 구성의 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 Result 구성 AI Search request processor 스크립트에 정의된 검색 쿼리에 대해 반환되는 최대 결과 수를 제한합니다. 기본적으로 검색 쿼리는 최대 3개의 결과를 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| searchLimit | 번호 | Genius Result 구성 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 Result 구성 AI Search request processor 스크립트에 정의된 검색 쿼리에 대한 용어를 지정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| searchPhrase | 문자열 | Genius Result 구성 AI Search request processor 스크립트에 정의된 검색 쿼리에 사용할 용어입니다. Genius Result 구성을 트리거한 쿼리의 검색어를 유지하려면 이 매개변수를 GeniusResultContext.getOriginalSearchPhrase() 메서드에서 반환된 String 값으로 설정합니다. |
| 유형 | 설명 |
|---|---|
| 부울 | 메서드 호출이 성공했는지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
이 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(문자열 테이블)
Genius Result 구성 AI Search request processor 스크립트에 정의된 검색 쿼리를 특정 테이블로 제한합니다. 쿼리는 지정된 테이블의 검색 결과만 Genius 결과 답안으로 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 테이블 | 문자열 | Now Platform 테이블 이름입니다. 이 테이블에서 인덱싱된 기록만 Genius Result 구성 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(부울 맞춤법 검사)
Genius Result 구성 AI Search request processor 스크립트에 정의된 검색 쿼리에 대해 오타 처리 자동 수정(맞춤법 검사)을 수행할지 여부를 지정합니다.
Genius Result 구성 AI Search request processor 스크립트에서 이 메서드를 호출하지 않으면 정의된 검색 쿼리가 Genius Result 구성을 트리거하는 검색 쿼리에서 오타 처리 플래그를 상속합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 맞춤법 검사 | 부울 | Genius Result 구성 스크립트에 정의된 검색 쿼리에 대해 오타 처리 자동 수정을 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;
}