GeniusResultAnswer - 범위가 지정됨

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기15분
  • GeniusResultAnswer API는 Genius Result 구성의 프로세서 스크립트에서 응답 개체를 만들기 위한 메서드를 제공합니다. 이 API로 생성된 답변은 Genius 결과 답변 카드를 채울 수 있는 검색 요청 또는 키-값 쌍 맵을 정의합니다.

    GeniusResultContext API를 사용하여 Genius 결과 구성의 컨텍스트에서 검색된 쿼리 상세 정보로 응답 객체를 채울 수 있습니다.

    응답 개체를 만들기 위해 호출해야 하는 GeniusResultAnswer API 메서드는 스크립트에 사용 중인 Genius 결과 구성 양식 필드에 따라 AI 검색 다릅니다.
    • Genius 결과 구성 AI Search request processor 필드에서 스크립팅하는 경우 setTable() 메서드와 setSearchPhrase(), addSearchPhrases() 또는 setEncodedQuery() 메서드 중 하나를 호출해야 합니다. 이 사용 사례와 관련이 없는 addDataMap()을 제외한 다른 모든 메서드는 선택 사항입니다.
    • Genius 결과 구성 AI Search response processor 필드에서 스크립팅하는 경우 addDataMap() 메서드를 호출해야 합니다. 다른 메서드는 이 사용 사례와 관련이 없습니다.
    sn_ais 네임스페이스 식별자와 함께 Genius 결과 서버 측 스크립트에서 이 API를 사용합니다. Genius 결과의 스크립팅 논리에 대한 자세한 내용은 새 Genius 결과 구성 만들기를 참조하십시오.

    GeniusResultAnswer – addDataMap(개체 매핑)

    Genius 결과 구성 AI Search response processor 의 스크립트에서 임의의 키-값 쌍 필드를 사용하여 Genius 결과 답변을 정의합니다. 공용 Now Platform API를 사용하여 이러한 필드를 생성할 수 있습니다.

    주:
    Genius 결과 구성 AI Search response processor 필드에서 스크립팅할 때 이 메서드를 호출해야 합니다. 이 메서드를 호출하지 않으면 트리거될 때 Genius 결과가 응답을 반환하지 않습니다.

    이 메서드를 두 번 이상 호출하여 단일 AI Search response processor 스크립트에 여러 필드 맵을 추가할 수 있습니다. 각 필드 맵은 개별 Genius 결과 대답 카드를 채웁니다.

    표 1. 매개변수
    이름 유형 설명
    객체

    의 검색 쿼리 응답 AI 검색에 추가할 임의의 키-값 쌍 필드 집합을 정의합니다. 모든 필드 값은 문자열이어야 합니다.

    {
      "fieldName1": String,
      "fieldName2": String
    }
    표 2. 반환
    유형 설명
    부울

    메서드 호출이 성공했는지 여부를 나타내는 플래그입니다.

    유효한 값은 다음과 같습니다.
    • true: 메서드 호출에 성공했습니다.
    • false: 메서드 호출에 실패했습니다.

    이 스크립트는 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 스크립트에 정의된 검색 쿼리에 용어를 추가합니다.

    주:
    Genius Result 구성 AI Search request processor 필드에서 스크립팅할 때 setTable() 메서드와 setSearchPhrase(), addSearchPhrases() 또는 setEncodedQuery() 메서드 중 하나를 호출해야 합니다. 필요한 두 메서드를 모두 호출하지 않으면 트리거될 때 Genius 결과가 답변을 반환하지 않습니다.
    표 3. 매개변수
    이름 유형 설명
    searchPhrases (검색 구문) 배열

    Genius 결과 구성 AI Search request processor 의 스크립트에 정의된 검색 쿼리에 대한 검색어로 추가할 임의 문자열 배열입니다. AI 검색 는 이러한 검색어를 OR 연산자로 구분된 것처럼 처리합니다.

    예시:
    [
      "Term": String,
      "Quoted phrase": String
    ]
    표 4. 반환
    유형 설명
    부울

    메서드 호출이 성공했는지 여부를 나타내는 플래그입니다.

    유효한 값은 다음과 같습니다.
    • true: 메서드 호출에 성공했습니다.
    • false: 메서드 호출에 실패했습니다.

    AI Search request processor 스크립트는 사용자 [sys_user] 테이블에서 Beth 또는 Anglin이라는 용어가 포함된 기록에 대한 검색 쿼리를 구성합니다.

    function process(context) {
      var answer = new sn_ais.GeniusResultAnswer();
    
      answer.setTable('sys_user');
      answer.addSearchPhrases(['Beth','Anglin']);
    
      return answer;
    }

    GeniusResultAnswer – setEncodedQuery(문자열 쿼리)

    Genius 결과 구성 AI Search request processor 스크립트에 인코딩된 검색 쿼리를 지정합니다. 이 인코딩된 검색 쿼리의 결과는 Genius 결과 대답 카드로 표시됩니다.

    주:
    Genius 결과 구성의 AI Search request processor 필드에서 스크립팅할 때 setTable() 메서드와 setSearchPhrase(), addSearchPhrases() 또는 setEncodedQuery() 메서드 중 하나를 호출해야 합니다. 필요한 두 메서드를 모두 호출하지 않으면 트리거될 때 Genius 결과가 답변을 반환하지 않습니다.
    표 5. 매개변수
    이름 유형 설명
    쿼리 문자열 Genius 결과 구성 AI Search request processor 스크립트에서 AI 검색 보낼 인코딩된 검색 쿼리입니다.
    표 6. 반환
    유형 설명
    부울

    메서드 호출이 성공했는지 여부를 나타내는 플래그입니다.

    유효한 값은 다음과 같습니다.
    • true: 메서드 호출에 성공했습니다.
    • false: 메서드 호출에 실패했습니다.

    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개의 결과를 반환합니다.

    표 7. 매개변수
    이름 유형 설명
    searchLimit (검색 제한) 번호

    Genius 결과 구성 AI Search request processor 의 스크립트에 정의된 검색 쿼리에 대해 반환할 최대 검색 결과 수에 대한 양의 정수 값입니다. 3보다 큰 값은 효과가 없습니다.

    기본값: 3

    표 8. 반환
    유형 설명
    부울

    메서드 호출이 성공했는지 여부를 나타내는 플래그입니다.

    유효한 값은 다음과 같습니다.
    • true: 메서드 호출에 성공했습니다.
    • false: 메서드 호출에 실패했습니다.

    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 스크립트에 정의된 검색 쿼리에 대한 용어를 지정합니다.

    주:
    Genius 결과 구성의 AI Search request processor 필드에서 스크립팅할 때 setTable() 메서드와 setSearchPhrase(), addSearchPhrases() 또는 setEncodedQuery() 메서드 중 하나를 호출해야 합니다. 필요한 두 메서드를 모두 호출하지 않으면 트리거될 때 Genius 결과가 답변을 반환하지 않습니다.
    표 9. 매개변수
    이름 유형 설명
    searchPhrase 문자열

    Genius 결과 구성 AI Search request processor 의 스크립트에 정의된 검색 쿼리에 사용할 용어입니다.

    Genius 결과 구성을 트리거한 쿼리에서 검색어를 유지하려면 이 매개변수를 GeniusResultContext.getOriginalSearchPhrase() 메서드에서 반환된 문자열 값으로 설정합니다.

    표 10. 반환
    유형 설명
    부울

    메서드 호출이 성공했는지 여부를 나타내는 플래그입니다.

    유효한 값은 다음과 같습니다.
    • true: 메서드 호출에 성공했습니다.
    • false: 메서드 호출에 실패했습니다.

    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 결과 구성 AI Search request processor 의 스크립트에 정의된 검색 쿼리를 특정 테이블로 제한합니다. 쿼리는 지정된 테이블의 검색 결과만 Genius 결과 대답 카드로 반환합니다.

    주:
    Genius 결과 구성의 AI Search request processor 필드에서 스크립팅할 때 이 메서드와 setSearchPhrase(), addSearchPhrases() 또는 setEncodedQuery() 메서드 중 하나를 호출해야 합니다. 필요한 두 메서드를 모두 호출하지 않으면 트리거될 때 Genius 결과가 답변을 반환하지 않습니다.
    표 11. 매개변수
    이름 유형 설명
    테이블 문자열 Now Platform 테이블 이름입니다. 이 테이블의 인덱싱된 기록만 Genius 결과 구성의 스크립트에 정의된 검색 쿼리의 결과로 반환됩니다 AI Search request processor .
    표 12. 반환
    유형 설명
    부울

    메서드 호출이 성공했는지 여부를 나타내는 플래그입니다.

    유효한 값은 다음과 같습니다.
    • true: 메서드 호출에 성공했습니다.
    • false: 메서드 호출에 실패했습니다.

    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 결과 구성을 트리거하는 검색 쿼리에서 오타 처리 플래그를 상속합니다.

    표 13. 매개변수
    이름 유형 설명
    맞춤법 검사 부울

    Genius 결과 구성 스크립트에 정의된 검색 쿼리에 대해 오타 처리 자동 수정을 수행할지 여부를 나타내는 플래그입니다 AI Search request processor .

    유효한 값은 다음과 같습니다.
    • true: 검색 쿼리에 대해 오타 처리 자동 수정을 수행합니다.
    • false: 검색 쿼리에 대한 오타 처리 자동 수정을 무시합니다.

    기본값: true

    표 14. 반환
    유형 설명
    없음

    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;
    }