GeniusResultContext - 범위 지정됨
GeniusResultContext API는 Genius Result 구성의 컨텍스트에서 검색 쿼리 정보를 검색하는 메서드를 제공합니다.
이 API로 검색된 검색 쿼리 상세 정보를 사용하여 GeniusResultAnswer API로 작성된 Genius 결과 응답 객체를 채울 수 있습니다.
sn_ais 네임스페이스 식별자와 함께 Genius 결과 서버 측 스크립트에서 이 API를 사용합니다. Genius 결과의 스크립팅 논리에 대한 자세한 내용은 새 Genius 결과 구성 만들기를 참조하십시오.
GeniusResultContext - getMatchingDocuments()
Genius 결과 구성을 트리거하는 검색 쿼리에서 검색 결과 문서를 검색합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| [배열] | 각 객체가 검색 쿼리와 일치하는 검색 결과 문서를 나타내는 객체의 배열입니다. 데이터 유형: 배열
주: 검색 질의에 따라, 나열된 이름-값 쌍 외에 검색 결과 문서의 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] 테이블에서 온 것인지 확인합니다. Knowledge 테이블에서 검색 결과 문서를 찾으면 함수는 UI가 사용자에게 표시할 수 있도록 해당 문서의 필드를 GeniusResultAnswer 개체에 추가합니다.
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 Result 답변을 채울 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 검색 쿼리의 원래 용어입니다. 데이터 유형: 문자열 |
이 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 결과 구성의 요청 또는 응답 프로세서 스크립트에서 이 메서드를 사용하여 트리거 검색 쿼리에 대해 탐지된 의도를 검색합니다. GeniusResultAnswer API 메서드를 사용하여 탐지된 의도의 상세 정보로 Genius 결과 답변을 채울 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| [배열] | 각 객체가 검색 쿼리에 대한 모델 의도 예측 결과를 나타내는 NLU 객체의 배열입니다. 데이터 유형: 배열 |
| [배열].intentName | 검색 쿼리에서 탐지된 모델 의도의 NLU 이름입니다. 데이터 유형: 문자열 |
| [배열].결과 | 검색 쿼리에 NLU 대한 모델 의도 예측 결과를 나타내는 객체입니다. 데이터 유형: 객체 |
| [배열].결과.애플리케이션 | 예측 결과를 생성한 검색 애플리케이션에 대한 메타데이터를 포함하는 객체입니다. 데이터 유형: 객체 |
| [배열].result.application.language | 예측 결과를 생성한 애플리케이션에 대한 Now Platform 언어 컨텍스트입니다. 데이터 유형: 문자열 |
| [배열].결과.지원.유형 | 예측 결과를 생성한 애플리케이션의 Now Platform 유형입니다. 데이터 유형: 문자열 |
| [배열].result.result | 모델 의도 예측 결과에 대한 NLU 상세 정보를 포함하는 객체입니다. 데이터 유형: 객체 |
| [배열].result.result.entities | 각 객체가 검색 쿼리에서 탐지된 모델 의도 엔터티를 NLU 나타내는 객체의 배열입니다. 데이터 유형: 배열 |
| [배열].result.result.entities.matchingSegments | 각 객체가 탐지된 NLU 엔터티의 일치하는 세그먼트를 나타내는 객체의 배열입니다. 데이터 유형: 배열 |
| [배열].result.result.entities.matchingSegments.directMatch | 엔터티 일치 세그먼트가 NLU 엔터티 값과 정확히 일치하는지 여부를 나타내는 플래그입니다. |
| [배열].result.result.entities.matchingSegments.meta | 세그먼트와 일치하는 엔터티에 대한 메타데이터를 NLU 나타내는 키-값 쌍 필드를 포함하는 객체입니다. 데이터 유형: 객체 |
| [배열].result.result.entities.matchingSegments.value | 세그먼트와 일치하는 엔터티의 문자열 값입니다 NLU . 데이터 유형: 문자열 |
| [Array].result.result.entities.name | entity:[NLU_model]에 있는 탐지된 NLU 엔터티의 이름입니다 .[ intent]입니다. [entity_type] 판. 데이터 유형: 문자열 |
| [Array].result.result.entities.parts | 각 객체가 예측 결과에서 찾은 엔터티 부분을 나타내는 NLU 객체의 배열입니다. 데이터 유형: 배열 |
| [배열].result.result.entities.parts.meta | 엔터티 파트의 메타데이터를 나타내는 키-값 쌍의 NLU 필드를 포함하는 객체입니다. 데이터 유형: 객체 |
| [배열].result.result.entities.parts.value | 엔터티 부분의 NLU 문자열 값입니다. 데이터 유형: 문자열 |
| [배열].result.result.entities.score | 검색 NLU 된 엔터티에 대한 신뢰도를 나타내는 0에서 1까지의 숫자 점수입니다. 데이터 유형: 숫자 |
| [배열].result.result.entities.startingPosition | 검색 NLU 된 엔터티가 시작되는 검색 쿼리의 문자 위치에 대한 숫자 인덱스입니다. 데이터 유형: 숫자 |
| [배열].result.result.entities.value | 검색 쿼리에서 탐지된 NLU 항목의 문자열 값입니다. 데이터 유형: 문자열 |
| [배열].result.result.intentName | 검색 쿼리에서 탐지된 모델 의도의 NLU 이름입니다. 데이터 유형: 문자열 |
| [배열].result.result.intents | 각 객체가 검색 쿼리에서 탐지된 중첩 NLU 모델 의도를 나타내는 객체의 배열입니다. 중첩된 의도 객체에는 상위 NLU 모델 의도 객체와 동일한 매개변수 이름과 데이터 유형이 포함됩니다. 데이터 유형: 배열 |
| [배열].result.result.nluModelName | NLU 예측 결과를 생성한 모델의 이름입니다. 데이터 유형: 문자열 |
| [배열].result.result.score | 모델 예측 결과에 대한 NLU 신뢰도를 나타내는 0에서 1까지의 숫자 점수입니다. 데이터 유형: 숫자 |
| [배열].result.solutionLabel | 예측 결과를 생성한 모델의 레이블 NLU 입니다. 데이터 유형: 문자열 |
| [배열].result.solutionName | NLU 예측 결과를 생성한 모델의 이름입니다. 데이터 유형: 문자열 |
| [배열].result.solutionType | NLU 예측 결과를 생성한 모델의 유형입니다. 데이터 유형: 문자열 |
| [배열].result.type | 예측 결과의 유형입니다. 데이터 유형: 문자열 |
| [배열].result.version | NLU 예측 결과를 생성한 모델의 버전입니다. 데이터 유형: 숫자 |
| [배열].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;
}