GeniusResultAnswer - 범위 지정됨

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

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

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

    GeniusResultAnswer – addDataMap(객체 맵)

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

    주:
    Genius Result 구성의 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(Array searchPhrases)

    Genius Result 구성의 AI Search request processor 스크립트에 정의된 검색 쿼리에 용어를 추가합니다.

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

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

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

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

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

    AI Search request processor 스크립트는 Beth 또는 Anglin이라는 용어를 포함하는 User [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 필드에서 스크립트할 때는 setTable() 메서드와 setSearchPhrase(), addSearchPhrases() 또는 setEncodedQuery() 메서드 중 하나를 호출해야 합니다. 필요한 두 메서드를 모두 호출하지 않으면 트리거될 때 Genius 결과가 응답을 반환하지 않습니다.
    표 5. 매개변수
    이름 유형 설명
    쿼리 문자열 Genius Result 구성의 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 Result 구성의 AI Search request processor 스크립트에 정의된 검색 쿼리에 대해 반환되는 최대 결과 수를 제한합니다. 기본적으로 검색 쿼리는 최대 3개의 결과를 반환합니다.

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

    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(String searchPhrase)

    Genius Result 구성의 AI Search request processor 스크립트에 정의된 검색 쿼리에 대한 용어를 지정합니다.

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

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

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

    표 10. 반환
    유형 설명
    부울

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

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

    AI Search request processor 스크립트는 Anglin이라는 용어를 포함하는 User [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 결과 대답 카드로 반환합니다.

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

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

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

    AI Search request processor 스크립트는 Anglin이라는 용어를 포함하는 User [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 구성을 트리거하는 검색 쿼리에서 오타 처리 플래그를 상속합니다.

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