

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 인덱스 검색
<a name="searching"></a>

**참고**  
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 [인덱스 유형](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)을 참조하세요.

 Amazon Kendra 인덱스를 검색하려면 [쿼리](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API를 사용합니다. `Query` API는 애플리케이션에서 사용하는 인덱싱된 문서에 대한 정보를 반환합니다. 이 섹션에서는 쿼리를 만들고, 필터를 수행하고, `Query` API에서 받은 응답을 해석하는 방법을 보여줍니다.

로 인덱싱한 문서를 검색하려면 [AMAZON.KendraSearchIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_KendraConfiguration.html)를 Amazon Kendra Amazon Lex사용합니다. 를 사용하여를 구성하는 Amazon Kendra 예제는 인덱스에 대한 FAQ 봇 생성을 Amazon Lex참조하세요. [Amazon Kendra](https://docs.aws.amazon.com/lexv2/latest/dg/faq-bot-kendra-search.html) 

**Topics**
+ [인덱스 쿼리.](searching-example.md)
+ [구절 검색](searching-retrieve.md)
+ [인덱스 찾아보기](browsing.md)
+ [검색 결과 추천](featured-results.md)
+ [HTML에 대한 표 형식 검색](searching-tables.md)
+ [쿼리 제안](query-suggestions.md)
+ [쿼리 맞춤법 검사기](query-spell-check.md)
+ [검색 필터링 및 패싯](filtering.md)
+ [사용자 컨텍스트 필터링](user-context-filter.md)
+ [쿼리 응답 및 응답 유형](query-responses-types.md)
+ [응답 조정 및 정렬](tuning-sorting-responses.md)
+ [쿼리 결과 축소/확대](expand-collapse-query-results.md)

# 인덱스 쿼리.
<a name="searching-example"></a>

**참고**  
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 [인덱스 유형](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)을 참조하세요.

인덱스를 검색할 때는 문서에 대해 제공한 모든 정보를 Amazon Kendra 사용하여 입력한 검색어와 가장 관련성이 높은 문서를 결정합니다. 에서 Amazon Kendra 고려하는 항목 중 일부는 다음과 같습니다.
+ 문서의 텍스트 또는 본문.
+ 문서의 제목.
+ 검색 가능으로 표시한 사용자 지정 텍스트 필드.
+ 지정한 날짜 필드는 문서의 “최신성”을 결정하는 데 사용해야 합니다.
+ 관련 정보를 제공할 수 있는 기타 모든 필드.

Amazon Kendra 는 검색을 위해 설정한 필드/속성 필터를 기반으로 응답을 필터링할 수도 있습니다. 예를 들어, “부서”라는 사용자 지정 필드가 있는 경우 “법률”이라는 부서의 문서만 반환하도록 응답을 필터링할 수 있습니다. 자세한 내용은 [사용자 지정 필드 또는 속성](https://docs.aws.amazon.com/kendra/latest/dg/custom-attributes.html)을 참조하세요.

반환된 검색 결과는가 각 문서에 대해 Amazon Kendra 결정하는 관련성을 기준으로 정렬됩니다. 결과는 페이지로 구분되므로 사용자에게 한 번에 한 페이지씩 표시될 수 있습니다.

로 인덱싱한 문서를 검색하려면 [AMAZON.KendraSearchIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_KendraConfiguration.html)를 Amazon Kendra Amazon Lex사용합니다. 를 사용하여를 구성하는 Amazon Kendra 예제는 인덱스에 대한 FAQ 봇 생성을 Amazon Lex참조하세요. [Amazon Kendra](https://docs.aws.amazon.com/lexv2/latest/dg/faq-bot-kendra-search.html) 

다음 예제에서는 index. Amazon Kendra determes를 검색하는 방법을 보여줍니다.는 쿼리에 가장 적합한 검색 결과 유형(응답, 문서, 질문-응답)을 결정합니다. 특정 유형의 검색 응답(응답, 문서, 질문-응답)을 쿼리에 반환 Amazon Kendra 하도록를 구성할 수 없습니다.

쿼리 응답에 대한 자세한 내용은 [쿼리 응답 및 응답 유형](query-responses-types.md)를 참조하세요.

**Topics**
+ [사전 조건](#searching-prerequisites)
+ [인덱스 검색 (콘솔)](#searching-index-console)
+ [인덱스 검색 (SDK)](#searching-index-sdk)
+ [인덱스 검색 (Postman)](#searching-index-postman)
+ [고급 쿼리 구문으로 검색](#searching-index-query-syntax)
+ [언어로 검색](#searching-index-languages)

## 사전 조건
<a name="searching-prerequisites"></a>

[Query](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API를 사용하여 인덱스를 쿼리하기 전에:
+ 인덱스에 필요한 권한을 설정하고 데이터 소스에 연결하거나 문서를 일괄 업로드하세요. 자세한 내용은 [IAM 역할](https://docs.aws.amazon.com/kendra/latest/dg/iam-roles.html)을 참조하세요. API를 호출하여 인덱스 및 데이터 소스 커넥터를 생성하거나 문서를 일괄 업로드할 때는 역할의 Amazon 리소스 이름을 사용합니다.
+ SDK를 설정하거나 Amazon Kendra 콘솔 AWS Command Line Interface로 이동합니다. 자세한 내용은 [설정 Amazon Kendra](https://docs.aws.amazon.com/kendra/latest/dg/setup.html)을 참조하세요.
+ 인덱스를 만들고 문서의 데이터 소스에 연결하거나 문서를 일괄 업로드하세요. 자세한 내용은 [인덱스 생성](https://docs.aws.amazon.com/kendra/latest/dg/create-index.html) 및 [데이터 소스 커넥터 생성](https://docs.aws.amazon.com/kendra/latest/dg/data-source.html)을 참조하세요.

## 인덱스 검색 (콘솔)
<a name="searching-index-console"></a>

 Amazon Kendra 콘솔을 사용하여 인덱스를 검색하고 테스트할 수 있습니다. 쿼리를 만들고 결과를 볼 수 있습니다.

**콘솔로 인덱스를 검색하려면**

1. 에 로그인 AWS Management Console 하고 [http://console.aws.amazon.com/kendra/](https://console.aws.amazon.com/kendra) 콘솔을 Amazon Kendra 엽니다.

1. 탐색 창에서 **인덱스**를 선택합니다.

1. 인덱스를 선택합니다.

1. 탐색 메뉴에서 인덱스 검색 옵션을 선택합니다.

1. 텍스트 상자에 쿼리를 입력한 후 Enter 키를 누릅니다.

1. Amazon Kendra 는 검색 결과를 반환합니다.

사이드 패널에서 전구 아이콘을 선택하여 검색에 대한 쿼리 ID를 얻을 수도 있습니다.

## 인덱스 검색 (SDK)
<a name="searching-index-sdk"></a>

**Python 또는 Java로 인덱스를 검색하려면**
+ 다음 예제에서는 인덱스를 검색합니다. `query`의 값을 검색 쿼리로, `index_id` 또는 `indexId`를 검색하려는 인덱스의 인덱스 식별자로 변경합니다.

  [Query](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API를 호출할 때 응답 요소의 일부로 검색에 대한 쿼리 ID를 가져올 수도 있습니다.

------
#### [ Python ]

  ```
  import boto3
  import pprint
  
  kendra = boto3.client("kendra")
  
  # Provide the index ID
  index_id = "index-id"
  # Provide the query text
  query = "query text"
  
  response = kendra.query(
          QueryText = query,
          IndexId = index_id)
  
  print("\nSearch results for query: " + query + "\n")        
  
  for query_result in response["ResultItems"]:
  
      print("-------------------")
      print("Type: " + str(query_result["Type"]))
          
      if query_result["Type"]=="ANSWER" or query_result["Type"]=="QUESTION_ANSWER":
          answer_text = query_result["DocumentExcerpt"]["Text"]
          print(answer_text)
  
      if query_result["Type"]=="DOCUMENT":
          if "DocumentTitle" in query_result:
              document_title = query_result["DocumentTitle"]["Text"]
              print("Title: " + document_title)
          document_text = query_result["DocumentExcerpt"]["Text"]
          print(document_text)
  
      print("------------------\n\n")
  ```

------
#### [ Java ]

  ```
  package com.amazonaws.kendra;
  
  import software.amazon.awssdk.services.kendra.KendraClient;
  import software.amazon.awssdk.services.kendra.model.QueryRequest;
  import software.amazon.awssdk.services.kendra.model.QueryResponse;
  import software.amazon.awssdk.services.kendra.model.QueryResultItem;
  
  public class SearchIndexExample {
      public static void main(String[] args) {
          KendraClient kendra = KendraClient.builder().build();
  
          String query = "query text";
          String indexId = "index-id";
  
          QueryRequest queryRequest = QueryRequest
              .builder()
              .queryText(query)
              .indexId(indexId)
              .build();
  
          QueryResponse queryResponse = kendra.query(queryRequest);
  
          System.out.println(String.format("\nSearch results for query: %s", query));
          for(QueryResultItem item: queryResponse.resultItems()) {
              System.out.println("----------------------");
              System.out.println(String.format("Type: %s", item.type()));
  
              switch(item.type()) {
                  case QUESTION_ANSWER:
                  case ANSWER:
                      String answerText = item.documentExcerpt().text();
                      System.out.println(answerText);
                      break;
                  case DOCUMENT:
                      String documentTitle = item.documentTitle().text();
                      System.out.println(String.format("Title: %s", documentTitle));
                      String documentExcerpt = item.documentExcerpt().text();
                      System.out.println(String.format("Excerpt: %s", documentExcerpt));
                      break;
                  default:
                      System.out.println(String.format("Unknown query result type: %s", item.type()));
  
              }
  
              System.out.println("-----------------------\n");
          }
      }
  }
  ```

------

## 인덱스 검색 (Postman)
<a name="searching-index-postman"></a>

[Postman](https://www.postman.com/)을 사용하여 Amazon Kendra 인덱스를 쿼리하고 테스트할 수 있습니다.

**Postman을 사용하여 인덱스를 검색하려면**

1. Postman에서 새 컬렉션을 만들고 요청 유형을 **POST**로 설정합니다.

1. 엔드포인트 URL을 입력합니다. 예: *https://kendra.<region>.amazonaws.com*.

1. **승인** 탭을 선택하고 다음 정보를 입력합니다.
   + **유형** - **AWS 서명**을 선택합니다.
   + **AccessKey** - IAM 사용자를 생성할 때 생성된 액세스 키를 입력합니다.
   + **SecretKey** - IAM 사용자를 생성할 때 생성된 보안 키를 입력합니다.
   + **AWS 리전** - 인덱스의 리전을 입력합니다. 예: *us-west-2*.
   + **서비스 이름** - *kendra*를 입력합니다. 대소문자를 구분하므로 소문자여야 합니다.
**주의**  
서비스 이름을 잘못 입력하거나 소문자를 사용하지 않는 경우 **전송**을 선택하여 요청을 보내면 “자격 증명 범위가 올바른 서비스 'kendra'로 지정되어야 합니다.”라는 오류가 발생합니다.  
또한 올바른 액세스 키 및 보안 암호 키를 입력했는지도 확인해야 합니다.

1. **헤더** 탭을 선택하고 다음 키 및 값 정보를 입력합니다.
   + 키: *X-Amz-Target*

     값: *com.amazonaws.kendra.AWSKendraFrontendService.Query*
   + 키: *Content-Encoding*

     값: *amz-1.0*

1. **본문** 탭을 선택하고 다음을 수행합니다.
   + 요청 본문의 **원시** JSON 유형을 선택합니다.
   + 인덱스 ID와 쿼리 텍스트가 포함된 JSON을 입력합니다.

     ```
     {
         "IndexId": "index-id",
         "QueryText": "enter a query here"
     }
     ```
**주의**  
JSON에서 올바른 들여쓰기를 사용하지 않으면 “SerializationException”이라는 오류가 발생합니다. JSON의 들여쓰기를 확인하세요.

1. **전송**(오른쪽 상단 근처)을 선택합니다.

## 고급 쿼리 구문으로 검색
<a name="searching-index-query-syntax"></a>

고급 쿼리 구문이나 연산자를 사용하여 단순 키워드나 자연어 쿼리보다 더 구체적인 쿼리를 만들 수 있습니다. 여기에는 범위, 부울, 와일드카드 등이 포함됩니다. 연산자를 사용하면 쿼리에 더 많은 컨텍스트를 제공하고 검색 결과를 더 세분화할 수 있습니다.

Amazon Kendra 는 다음 연산자를 지원합니다.
+ 부울: 검색을 제한하거나 넓히는 로직. 예를 들어, `amazon AND sports`는 두 용어가 모두 포함된 문서만 검색하도록 검색을 제한합니다.
+ 괄호: 중첩된 쿼리 용어를 우선 순위에 따라 읽습니다. 예를 들어, `(amazon AND sports) NOT rainforest`는 `(amazon AND sports)`를 `NOT rainforest`보다 먼저 읽습니다.
+ 범위: 날짜 또는 숫자 범위 값. 범위는 포함, 제외 또는 제한 없음일 수 있습니다. 예를 들어, 해당 날짜를 포함하여 2020년 1월 1일에서 2020년 12월 31일 사이에 마지막으로 업데이트된 문서를 검색할 수 있습니다.
+ 필드: 특정 필드를 사용하여 검색을 제한합니다. 예를 들어, '위치' 필드에 '미국'이 있는 문서를 검색할 수 있습니다.
+ 와일드카드: 텍스트 문자열과 부분적으로 일치합니다. 예를 들어, `Cloud*`는 CloudFormation과 일치시킬 수 있습니다. Amazon Kendra 는 현재 후행 와일드카드만 지원합니다.
+ 정확한 따옴표: 텍스트 문자열과 정확히 일치합니다. `"Amazon Kendra" "pricing"`을 포함하는 문서를 예로 들 수 있습니다.

위 연산자를 여럿 조합하여 사용할 수 있습니다.

연산자를 과도하게 사용하거나 매우 복잡한 쿼리를 사용하면 쿼리 지연 시간에 영향을 줄 수 있습니다. 와일드카드는 지연 시간 측면에서 가장 비용이 많이 드는 연산자입니다. 일반적으로 사용하는 용어와 연산자가 많을수록 지연 시간에 미치는 잠재적 영향도 커집니다. 지연 시간에 영향을 미치는 다른 요인으로는 인덱싱된 문서의 평균 크기, 인덱스 크기, 검색 결과에 대한 필터링, Amazon Kendra 인덱스의 전체 로드 등이 있습니다.

### 부울
<a name="query-syntax-boolean"></a>

부울 연산자 `AND`, `OR`, `NOT`를 사용하여 여러 단어를 결합하거나 제외할 수 있습니다.

다음은 부울 연산자를 사용하는 예제입니다.

 **`amazon AND sports`** 

텍스트에 '아마존'과 '스포츠'라는 용어가 모두 포함된 검색 결과(예: Amazon Prime 비디오 스포츠 또는 기타 유사한 콘텐츠)를 반환합니다.

 **`sports OR recreation`** 

텍스트에 '스포츠' 또는 '레크리에이션' 또는 둘 다 포함된 검색 결과를 반환합니다.

 **`amazon NOT rainforest`** 

텍스트에 '아마존'이라는 용어는 포함되지만 '열대우림'이라는 용어는 포함되지 않은 검색 결과를 반환합니다. 이는 아마존 열대우림이 아니라 아마존이라는 회사에 관한 문서를 검색하기 위한 것입니다.

### 괄호
<a name="query-syntax-parentheses"></a>

괄호를 사용하여 우선순위에 따라 중첩된 단어를 쿼리할 수 있습니다. 괄호는 쿼리를 읽는 Amazon Kendra 방법을 나타냅니다.

다음은 괄호 연산자를 사용하는 예제입니다.

 **`(amazon AND sports) NOT rainforest`** 

텍스트에 '아마존'과 '스포츠'라는 용어가 모두 포함되지만 '열대우림'이라는 용어는 포함되지 않은 문서를 반환합니다. 아마존 열대우림의 어드벤처 스포츠가 아닌 Amazon Prime 비디오 스포츠 또는 기타 유사한 콘텐츠를 검색하기 위한 것입니다. 괄호는 `amazon AND sports`가 `NOT rainforest`보다 먼저 읽혀야 된다는 지시입니다. 쿼리가 다음과 같이 읽히면 안 됩니다. `amazon AND (sports NOT rainforest)` 

 **`(amazon AND (sports OR recreation)) NOT rainforest`** 

'스포츠' 또는 '레크리에이션'이라는 용어 또는 둘 다와 '아마존'이라는 용어가 포함된 문서를 반환합니다. 하지만 '열대우림'이라는 용어는 포함되지 않습니다. 아마존 열대우림의 어드벤처 스포츠가 아닌 Amazon Prime 비디오 스포츠 또는 레크리에이션을 검색하기 위한 것입니다. 괄호는 `NOT rainforest`가 먼저 읽히지만, ‘아마존’과 결합하기 전에 `sports OR recreation`가 읽혀야 한다는 지시입니다. 쿼리가 다음과 같이 읽히면 안 됩니다. `amazon AND (sports OR (recreation NOT rainforest))` 

### 범위
<a name="query-syntax-ranges"></a>

값 범위를 사용하여 검색 결과를 필터링할 수 있습니다. 속성과 범위 값을 지정합니다. 날짜 또는 숫자 유형일 수 있습니다.

날짜 범위는 다음 형식이어야 합니다.
+ Epoch
+ YYYY
+ YYYY-mm
+ YYYY-mm-dd
+ YYYY-mm-dd'T'HH

범위의 하위 값과 상위 값을 포함할지 또는 제외할지도 지정할 수 있습니다.

다음은 부울 연산자를 사용하는 예제입니다.

 **`_processed_date:>2019-12-31 AND _processed_date:<2021-01-01`** 

2020년(2019년 12월 31일 이후부터 2021년 1월 1일 이전까지)에 처리된 문서를 반환합니다.

 **`_processed_date:>=2020-01-01 AND _processed_date:<=2020-12-31`** 

2020년(2020년 1월 1일부터 2020년 12월 31일까지)에 처리된 문서를 반환합니다.

 **`_document_likes:<1`** 

좋아요가 없거나 사용자 피드백이 없는 문서(좋아요가 1개 미만)인 문서를 반환합니다.

범위를 주어진 범위 값을 포함하는 것으로 처리할지 아니면 제외로 처리할지 지정할 수 있습니다.

 **Inclusive** 

 **`_last_updated_at:[2020-01-01 TO 2020-12-31]`** 

2020년 12월 1일과 2020년 12월 31일을 포함하여 2020년에 마지막으로 업데이트된 문서를 반환합니다.

 **Exclusive** 

 **`_last_updated_at:{2019-12-31 TO 2021-01-01}`** 

2019년 12월 31일과 2021년 1월 1일을 제외하고 2020년에 마지막으로 업데이트된 문서를 반환합니다.

포함하지도 제외하지도 않는, 제한 없는 범위의 경우 < and > 연산자를 사용하면 됩니다. 예: `_last_updated_at:>2019-12-31 AND _last_updated_at:<2021-01-01` 

#### 필드
<a name="query-syntax-fields"></a>

특정 필드의 값을 충족하는 문서만 반환하도록 검색을 제한할 수 있습니다. 필드는 모든 유형이 될 수 있습니다.

다음은 필드 수준 컨텍스트 연산자를 사용하는 예제입니다.

 **`status:"Incomplete" AND financial_year:2021`** 

상태가 미완성인 2021 회계연도의 문서를 반환합니다.

 **`(sports OR recreation) AND country:"United States" AND level:"professional"`** 

미국 내 프로 스포츠 또는 레크리에이션에 관한 문서를 반환합니다.

#### 와일드카드
<a name="query-syntax-wildcards"></a>

와일드카드 연산자를 사용하여 다양한 단어와 구문을 포함하도록 검색 범위를 넓힐 수 있습니다. 이는 이름 변형을 검색할 때 유용합니다. Amazon Kendra 현재는 후행 와일드카드만 지원합니다. 후행 와일드카드의 접두사 문자 수는 2보다 커야 합니다.

다음은 와일드카드 연산자를 사용하는 예제입니다.

 **`Cloud*`** 

CloudFormation, CloudWatch 같은 변형을 포함하는 문서를 반환합니다.

 **`kendra*aws`** 

kendra.amazonaws 같은 변형을 포함하는 문서를 반환합니다.

 **`kendra*aws*`** 

kendra.amazonaws.com 같은 변형을 포함하는 문서를 반환합니다.

#### 정확한 따옴표
<a name="query-syntax-exact-quote"></a>

따옴표를 사용하여 텍스트와 정확히 일치하는 항목을 검색할 수 있습니다.

다음은 따옴표를 사용하는 예제입니다.

 **`"Amazon Kendra" "pricing"`** 

'Amazon Kendra' 문구와 '가격'이라는 용어가 모두 포함된 문서를 반환합니다. 결과를 반환하려면 문서에 'Amazon Kendra'와 '가격'이 모두 포함되어야 합니다.

 **`"Amazon Kendra" "pricing" cost`** 

'Amazon Kendra' 문구와 '가격'이라는 용어, 선택적으로 '비용'이라는 용어가 모두 포함된 문서를 반환합니다. 문서에 'Amazon Kendra'와 '가격'이 모두 포함되어야 결과에 표시되지만 '비용'은 반드시 포함되지 않을 수 있습니다.

#### 잘못된 쿼리 구문
<a name="query-syntax-invalid"></a>

Amazon Kendra 는 쿼리 구문에 문제가 있거나 쿼리가 현재에서 지원되지 않는 경우 경고를 보냅니다 Amazon Kendra. 자세한 내용은 [쿼리 경고에 대한 API 문서](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Warning.html)를 참조하세요.

다음 쿼리는 잘못된 쿼리 구문의 예입니다.

 **`_last_updated_at:<2021-12-32`** 

잘못된 날짜. Amazon Kendra에서 사용하는 그레고리력에는 32일이 존재하지 않습니다.

 **`_view_count:ten`** 

잘못된 숫자 값. 숫자 값을 나타내려면 숫자를 사용해야 합니다.

 **`nonExistentField:123`** 

잘못된 필드 검색. 필드 검색을 사용하려면 필드가 존재해야 합니다.

 **`Product:[A TO D]`** 

잘못된 범위. 범위에는 숫자 값이나 날짜를 사용해야 합니다.

 **`OR Hello`** 

잘못된 부울. 연산자는 용어와 함께 사용하고 용어 사이에 배치해야 합니다.

## 언어로 검색
<a name="searching-index-languages"></a>

지원되는 언어로 문서를 검색할 수 있습니다. [AttributeFilter](https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeFilter.html)에 언어 코드를 전달하여 필터링된 문서를 선택한 언어로 반환합니다. 지원되는 언어로 쿼리를 입력할 수 있습니다.

언어를 지정하지 않으면는 기본적으로 영어로 문서를 Amazon Kendra 쿼리합니다. 코드를 포함하여 지원되는 언어에 대한 자세한 내용은 [영어 이외의 언어로 문서 추가](https://docs.aws.amazon.com/kendra/latest/dg/in-adding-languages.html)를 참조하세요.

콘솔에서 지원되는 언어로 문서를 검색하려면 인덱스를 선택한 다음 탐색 메뉴에서 인덱스 검색 옵션을 선택합니다. 검색 설정을 선택한 다음 **언어** 드롭다운에서 언어를 선택하여 문서를 반환할 언어를 선택합니다.

다음 예에서는 스페인어로 문서를 검색하는 방법을 보여줍니다.

**콘솔에서 스페인어로 인덱스를 검색하려면**

1. 에 로그인 AWS Management Console 하고 [http://console.aws.amazon.com/kendra/](https://console.aws.amazon.com/kendra) 콘솔을 Amazon Kendra 엽니다.

1. 탐색 메뉴에서 **인덱스**를 선택하고 해당 인덱스를 선택합니다.

1. 탐색 메뉴에서 인덱스 검색 옵션을 선택합니다.

1. 검색 설정에서 **언어** 드롭다운을 선택하고 스페인어를 선택합니다.

1. 텍스트 상자에 쿼리를 입력한 후 Enter 키를 누릅니다.

1. Amazon Kendra 는 검색 결과를 스페인어로 반환합니다.

**CLI, Python 또는 Java를 사용하여 스페인어로 인덱스를 검색하려면**
+ 다음 예제에서는 스페인어로 인덱스를 검색합니다. `searchString` 값을 검색 쿼리로 변경하고 `indexID` 값을 검색하려는 인덱스의 식별자로 변경합니다. 스페인어의 언어 코드는 `es`입니다. 이 코드를 사용자의 언어 코드로 바꿀 수 있습니다.

------
#### [ CLI ]

  ```
  {
    "EqualsTo":{      
      "Key": "_language_code",
      "Value": {
      "StringValue": "es"
      }
    }
  }
  ```

------
#### [ Python ]

  ```
  import boto3
  import pprint
  
  kendra = boto3.client("kendra")
  
  # Provide the index ID
  index_id = "index-id"
  # Provide the query text
  query = "search-string"
  
  # Includes the index ID, query text, and language attribute filter
  response = kendra.query(
          QueryText = query,
          IndexId = index_id,
          AttributeFilter = {
              "EqualsTo": {      
                  "Key": "_language_code",
                  "Value": {
                      "StringValue": "es"
                      }
                  }
              })
  
  print ("\nSearch results|Resultados de la búsqueda: " + query + "\n")        
  
  for query_result in response["ResultItems"]:
  
      print("-------------------")
      print("Type: " + str(query_result["Type"]))
          
      if query_result["Type"]=="ANSWER" or query_result["Type"]=="QUESTION_ANSWER":
          answer_text = query_result["DocumentExcerpt"]["Text"]
          print(answer_text)
  
      if query_result["Type"]=="DOCUMENT":
          if "DocumentTitle" in query_result:
              document_title = query_result["DocumentTitle"]["Text"]
              print("Title: " + document_title)
          document_text = query_result["DocumentExcerpt"]["Text"]
          print(document_text)
  
      print("------------------\n\n")
  ```

------
#### [ Java ]

  ```
  package com.amazonaws.kendra;
  
  import software.amazon.awssdk.services.kendra.KendraClient;
  import software.amazon.awssdk.services.kendra.model.QueryRequest;
  import software.amazon.awssdk.services.kendra.model.QueryResponse;
  import software.amazon.awssdk.services.kendra.model.QueryResultItem;
  
  public class SearchIndexExample {
      public static void main(String[] args) {
          KendraClient kendra = KendraClient.builder().build();
  
          String query = "searchString";
          String indexId = "indexID";
  
          QueryRequest queryRequest = QueryRequest.builder()
              .queryText(query)
              .indexId(indexId)
              .attributeFilter(
                   AttributeFilter.builder()
                       .withEqualsTo(
                           DocumentAttribute.builder()
                               .withKey("_language_code")
                               .withValue("es")
                               .build())
                       .build())
              .build();
  
          QueryResponse queryResponse = kendra.query(queryRequest);
  
          System.out.println(String.format("\nSearch results|
                                            Resultados de la búsqueda: %s", query));
          for(QueryResultItem item: queryResponse.resultItems()) {
              System.out.println("----------------------");
              System.out.println(String.format("Type: %s", item.type()));
  
              switch(item.type()) {
                  case QUESTION_ANSWER:
                  case ANSWER:
                      String answerText = item.documentExcerpt().text();
                      System.out.println(answerText);
                      break;
                  case DOCUMENT:
                      String documentTitle = item.documentTitle().text();
                      System.out.println(String.format("Title: %s", documentTitle));
                      String documentExcerpt = item.documentExcerpt().text();
                      System.out.println(String.format("Excerpt: %s", documentExcerpt));
                      break;
                  default:
                      System.out.println(String.format("Unknown query result type: %s", item.type()));
  
              }
  
              System.out.println("-----------------------\n");
          }
      }
  }
  ```

------

# 구절 검색
<a name="searching-retrieve"></a>

[https://docs.aws.amazon.com/kendra/latest/APIReference/API_Retrieve.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Retrieve.html) API를 검색 증강 생성(RAG) 시스템의 검색기로 사용할 수 있습니다.

RAG 시스템은 생성형 인공 지능을 사용하여 질문에 답하는 애플리케이션을 구축합니다. RAG 시스템은 검색기와 대규모 언어 모델(LLM)로 구성됩니다. 쿼리가 주어지면 검색기는 문서 모음에서 가장 관련성이 높은 텍스트 청크를 식별하고 이를 LLM에 공급하여 가장 유용한 답변을 제공합니다. 그런 다음 LLM은 관련 텍스트 청크 또는 구절을 분석하고 쿼리에 대한 포괄적인 응답을 생성합니다.

`Retrieve` API는 구절이라고 하는 텍스트 또는 발췌문을 살펴보고 쿼리와 가장 관련성이 높은 상위 구절을 반환합니다.**

[https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API와 마찬가지로 `Retrieve` API도 관련 정보를 검색합니다. 검색 API의 정보 검색은 쿼리의 컨텍스트와 인덱싱된 문서에서 사용 가능한 모든 정보를 고려합니다. 하지만 기본적으로 `Query` API는 최대 100개 토큰 단어로 구성된 발췌문 구절만 반환합니다. `Retrieve` API를 사용하면 최대 200개의 토큰 단어로 된 긴 구절과 의미상 관련이 있는 최대 100개의 구절을 검색할 수 있습니다. 여기에는 인덱스의 질문-답변 또는 FAQ 유형 응답은 포함되지 않습니다. 청크라고도 불리는 구절은 여러 문서 및 동일한 문서의 여러 부분에서 의미론적으로 추출할 수 있는 텍스트 발췌문입니다. Kendra의 GenAI Enterprise Edition 인덱스는 딥 러닝 모델별 순위와 함께 벡터 및 키워드 인덱스에 대한 하이브리드 검색을 사용하여 검색에 대해 정확도 높은 결과를 제공합니다.

또한 `Retrieve` API를 사용하여 다음을 수행할 수 있습니다.
+ 인덱스 수준에서 부스팅을 재정의
+ 문서 필드 또는 속성을 기준으로 필터링
+ 문서에 대한 사용자 또는 그룹의 액세스 권한을 기준으로 필터링
+ 검색된 구절 결과에 대한 신뢰도 점수 버킷을 확인합니다. 신뢰도 버킷은 응답과 쿼리의 관련성을 Amazon Kendra 가 얼마나 확신하는지 나타내는 상대적 순위를 제공합니다.
**참고**  
신뢰도 점수 버킷은 현재 영어로만 제공됩니다.

답변에 유용한 추가 정보를 제공할 수 있는 특정 필드를 포함시킬 수도 있습니다.

현재 `Retrieve` API에서는 [고급 쿼리 구문](https://docs.aws.amazon.com/kendra/latest/dg/searching-example.html#searching-index-query-syntax)을 사용한 쿼리, 쿼리에 대한 [맞춤법 수정 제안](https://docs.aws.amazon.com/kendra/latest/dg/query-spell-check.html), [패싯](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-facets), 검색 쿼리 자동 완성을 위한 [쿼리 제안](https://docs.aws.amazon.com/kendra/latest/dg/query-suggestions.html), [증분 학습](https://docs.aws.amazon.com/kendra/latest/dg/submitting-feedback.html) 등의 기능이 지원되지 않습니다. 검색 API 쿼리는 분석 대시보드에 표시되지 않습니다.

`Retrieve` API는 인덱스에 설정한 [쿼리 용량 단위](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CapacityUnitsConfiguration.html) 수를 공유합니다. 단일 용량 단위에 포함되는 항목 및 인덱스의 기본 용량에 대한 자세한 내용은 [용량 조정](https://docs.aws.amazon.com/kendra/latest/dg/adjusting-capacity.html)을 참조하세요.

**참고**  
 Amazon Kendra Developer Edition을 사용하는 경우 용량을 추가할 수 없으며 Amazon Kendra Enterprise Edition을 사용할 때만 용량을 추가할 수 있습니다. Developer 및 Enterprise Edition에 포함된 내용에 대한 자세한 내용은 [Amazon Kendra 에디션](https://docs.aws.amazon.com/kendra/latest/dg/what-is-kendra.html#kendra-editions)을 참조하세요.

다음은 `Retrieve` API를 사용하여 "how does amazon kendra work?" 쿼리의 인덱스에 있는 문서에서 가장 관련성이 높은 상위 100개 구절을 검색하는 예제입니다.

------
#### [ Python ]

```
import boto3
import pprint

kendra = boto3.client("kendra")

# Provide the index ID
index_id = "index-id"
# Provide the query text
query = "how does amazon kendra work?"
# You can retrieve up to 100 relevant passages
# You can paginate 100 passages across 10 pages, for example
page_size = 10
page_number = 10

result = kendra.retrieve(
        IndexId = index_id,
        QueryText = query,
        PageSize = page_size,
        PageNumber = page_number)

print("\nRetrieved passage results for query: " + query + "\n")        

for retrieve_result in result["ResultItems"]:

    print("-------------------")
    print("Title: " + str(retrieve_result["DocumentTitle"]))
    print("URI: " + str(retrieve_result["DocumentURI"]))
    print("Passage content: " + str(retrieve_result["Content"]))
    print("------------------\n\n")
```

------
#### [ Java ]

```
package com.amazonaws.kendra;

import software.amazon.awssdk.services.kendra.KendraClient;
import software.amazon.awssdk.services.kendra.model.RetrieveRequest;
import software.amazon.awssdk.services.kendra.model.RetrieveResult;
import software.amazon.awssdk.services.kendra.model.RetrieveResultItem;

public class RetrievePassageExample {
    public static void main(String[] args) {
        KendraClient kendra = KendraClient.builder().build();
        
        String indxId = "index-id";
        String query = "how does amazon kendra work?";
        Integer pgSize = 10;
        Integer pgNumber = 10;

        RetrieveRequest retrieveRequest = retrieveRequest
            .builder()
            .indexId(indxId)
            .queryText(query)
            .pageSize(pgSize)
            .pageNumber(pgNumber)
            .build();

        RetrieveResult retrieveResult = kendra.retrieve(retrieveRequest);

        System.out.println(String.format("\nRetrieved passage results for query: %s", query));
        for(RetrieveResultItem item: retrieveResult.resultItems()) {
            System.out.println("----------------------");
            System.out.println(String.format("Title: %s", documentTitle));
            System.out.println(String.format("URI: %s", documentURI));
            System.out.println(String.format("Passage content: %s", content));
            System.out.println("-----------------------\n");
        }
    }
}
```

------

# 인덱스 찾아보기
<a name="browsing"></a>

**참고**  
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 [인덱스 유형](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)을 참조하세요.

검색 쿼리를 입력하지 않고도 속성 또는 패싯별로 문서를 찾아볼 수 있습니다. Amazon Kendra *인덱스 찾아보기*를 사용하면 사용자가 특정 쿼리를 염두에 두지 않고 인덱스를 자유롭게 탐색하여 문서를 검색할 수 있습니다. 또한 이를 통해 사용자는 검색의 시작점으로 인덱스를 광범위하게 탐색할 수 있습니다.

인덱스 찾아보기는 정렬 유형이 있는 문서 속성 또는 패싯별로 검색하는 경우에만 사용할 수 있습니다. 인덱스 찾아보기를 사용하여 전체 인덱스를 검색할 수는 없습니다. 쿼리 텍스트가 누락된 경우는 문서 속성 필터 또는 패싯과 정렬 유형을 Amazon Kendra 요청합니다.

[쿼리](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API를 사용하여 인덱스를 탐색할 수 있게 하려면 [AttributeFilter](https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeFilter.html) 또는 [패싯](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Facet.html)과 [SortingConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_SortingConfiguration.html)을 포함해야 합니다. 콘솔에서 인덱스 탐색을 허용하려면 탐색 메뉴의 **인덱스**에서 인덱스를 선택한 다음 인덱스 검색 옵션을 선택합니다. 검색 상자에서 *Enter* 키를 두 번 누릅니다. **검색 결과 필터링** 드롭다운을 선택하여 필터를 선택하고 **정렬** 드롭다운을 선택하여 정렬 유형을 선택합니다.

다음은 스페인어로 된 문서에 대한 인덱스를 문서 작성 날짜의 내림차순으로 찾아보는 예입니다.

------
#### [ CLI ]

```
aws kendra query \
--index-id "index-id" \
--attribute-filter '{   
    "EqualsTo":{
      "Key": "_language_code",
      "Value": {
        "StringValue": "es"
      }
    }
  }' \
--sorting-configuration '{
    "DocumentAttributeKey": "_created_at",
    "SortOrder": "DESC"
  }'
```

------
#### [ Python ]

```
import boto3

kendra = boto3.client("kendra")

# Must include the index ID, the attribute filter, and sorting configuration
response = kendra.query(
        IndexId = "index-id",
        AttributeFilter = {
            "EqualsTo": {      
                "Key": "_language_code",
                "Value": {
                    "StringValue": "es"
                    }
                }
            },
        SortingConfiguration = {
            "DocumentAttributeKey": "_created_at",
            "SortOrder": "DESC"})

print("\nSearch results|Resultados de la búsqueda: \n")

for query_result in response["ResultItems"]:

    print("-------------------")
    print("Type: " + str(query_result["Type"]))
        
    if query_result["Type"]=="ANSWER" or query_result["Type"]=="QUESTION_ANSWER":
        answer_text = query_result["DocumentExcerpt"]["Text"]
        print(answer_text)

    if query_result["Type"]=="DOCUMENT":
        if "DocumentTitle" in query_result:
            document_title = query_result["DocumentTitle"]["Text"]
            print("Title: " + document_title)
        document_text = query_result["DocumentExcerpt"]["Text"]
        print(document_text)

    print("------------------\n\n")
```

------
#### [ Java ]

```
package com.amazonaws.kendra;

import software.amazon.awssdk.services.kendra.KendraClient;
import software.amazon.awssdk.services.kendra.model.QueryRequest;
import software.amazon.awssdk.services.kendra.model.QueryResult;
import software.amazon.awssdk.services.kendra.model.QueryResultItem;

public class SearchIndexExample {
    public static void main(String[] args) {
        KendraClient kendra = KendraClient.builder().build();
        QueryRequest queryRequest = QueryRequest.builder()
            .withIndexId("index-id")
            .withAttributeFilter(AttributeFilter.builder()
                .withEqualsTo(DocumentAttribute.builder()
                    .withKey("_language_code")
                    .withValue(DocumentAttributeValue.builder()
                        .withStringValue("es")
                        .build())
                    .build())
                .build())
            .withSortingConfiguration(SortingConfiguration.builder()
                .withDocumentAttributeKey("_created_at")
                .withSortOrder("DESC")
                .build())
            .build());
            
        QueryResult queryResult = kendra.query(queryRequest);
        for (QueryResultItem item : queryResult.getResultItems()) {
            System.out.println("----------------------");
            System.out.println(String.format("Type: %s", item.getType()));
        
            switch (item.getType()) {
                case QueryResultType.QUESTION_ANSWER:
                case QueryResultType.ANSWER:
                    String answerText = item.getDocumentExcerpt().getText();
                    System.out.println(answerText);
                    break;
                case QueryResultType.DOCUMENT:
                    String documentTitle = item.getDocumentTitle().getText();
                    System.out.println(String.format("Title: %s", documentTitle));
                    String documentExcerpt = item.getDocumentExcerpt().getText();
                    System.out.println(String.format("Excerpt: %s", documentExcerpt));
                    break;
                default:
                    System.out.println(String.format("Unknown query result type: %s", item.getType()));
            }
            System.out.println("-----------------------\n");
        }
    }
}
```

------

# 검색 결과 추천
<a name="featured-results"></a>

**참고**  
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 [인덱스 유형](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)을 참조하세요.

사용자가 특정 쿼리를 실행하면 검색 결과에 특정 문서를 추천할 수 있습니다. 이렇게 하면 결과가 사용자에게 더 잘 보이고 눈에 띄도록 만들 수 있습니다. 추천 결과는 일반적인 결과 목록과 분리되어 검색 페이지 상단에 표시됩니다. 여러 쿼리에 대해 여러 다른 문서를 추천해 실험하거나 특정 문서가 제대로 표시되도록 할 수 있습니다.

특정 쿼리를 특정 문서에 매핑하여 결과에 추천할 수 있습니다. 쿼리에 정확히 일치하는 항목이 있는 경우 검색 결과에 하나 이상의 특정 문서가 추천됩니다.

예를 들어, 사용자가 '신제품 2023' 쿼리를 실행하는 경우 '새 소식' 및 '출시 예정'이라는 제목의 문서를 선택하여 검색 결과 페이지 상단에 추천하도록 지정할 수 있습니다. 이렇게 하면 신제품에 대한 이러한 문서가 마땅히 받아야 할 가시성을 확보할 수 있습니다.

Amazon Kendra 검색 결과 페이지 상단에를 표시하기 위해 결과가 이미 선택된 경우는 검색 결과를 복제하지 않습니다. 추천 검색 결과가 다른 모든 검색 결과보다 우선하여 추천되는 경우 첫 번째 결과로 순위가 다시 매겨지지 않습니다.

특정 결과를 추천하려면 쿼리에 포함된 키워드나 구문을 사용하여 쿼리를 일부만 일치시키는 것이 아니라 전체 텍스트 검색어와 정확히 일치하도록 지정해야 합니다. 예를 들어 추천 결과 집합에서 'Kendra' 쿼리만 지정하는 경우 'Kendra는 의미론적으로 결과 순위를 어떻게 매깁니까?'와 같은 쿼리는 추천 결과를 렌더링하지 않습니다. 추천 결과는 범위가 너무 넓은 쿼리가 아닌 특정 쿼리에 맞게 설계되었습니다.는 키워드 유형 쿼리를 Amazon Kendra 자연적으로 처리하여 검색 결과에서 가장 유용한 문서의 순위를 매기므로 간단한 키워드를 기반으로 결과가 과도하게 표시되지 않습니다.

사용자가 자주 사용하는 특정 쿼리가 있는 경우 추천 결과로 해당 쿼리를 지정할 수 있습니다. 예를 들어 [Amazon Kendra 분석](https://docs.aws.amazon.com/kendra/latest/dg/search-analytics.html)을 사용하여 상위 쿼리를 살펴보고 'Kendra는 의미론적으로 결과 순위를 어떻게 매기나요?'와 같은 특정 쿼리를 찾는 경우를 예로 들 수 있습니다. 및 'kendra 의미 체계 검색'이 자주 사용되는 경우 이러한 쿼리는 'Amazon Kendra search 101'이라는 제목의 문서를 제공하는 데를 지정하는 데 유용할 수 있습니다.

Amazon Kendra 는 추천 결과에 대한 쿼리를 대소문자 비구분으로 처리합니다.는 쿼리를 소문자로 Amazon Kendra 변환하고, 후행 공백 문자를 단일 공백으로 바꿉니다.는 추천 결과에 대한 쿼리를 지정할 때 다른 모든 문자를 그대로 Amazon Kendra 일치시킵니다.

[CreateFeaturedResultsSet](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateFeaturedResultsSet.html) API를 사용하여 특정 쿼리에 매핑할 추천 결과 세트를 생성합니다. 콘솔을 사용하는 경우 인덱스를 선택한 다음 탐색 메뉴에서 **추천 결과**를 선택하여 추천 결과 세트를 생성합니다. 인덱스당 추천 결과 세트 최대 50개, 세트당 추천할 문서 최대 4개, 추천 결과 세트당 최대 49개의 쿼리 텍스트를 생성할 수 있습니다. [지원 팀](https://aws.amazon.com/contact-us/)에 문의하여 이러한 제한 증가를 요청할 수 있습니다.

여러 추천 결과 세트에서 동일한 문서를 선택할 수 있습니다. 하지만 여러 세트에 동일한 일치 쿼리 텍스트를 사용해서는 안 됩니다. 추천 결과에 지정하는 쿼리는 각 인덱스의 추천 결과 세트별로 고유해야 합니다.

추천 문서를 최대 4개까지 선택할 때 문서 순서를 정렬할 수 있습니다. API를 사용하는 경우 추천 문서를 나열하는 순서는 추천 결과에 표시된 순서와 동일합니다. 콘솔을 사용하는 경우 결과에 추천할 문서를 선택할 때 문서 순서를 간단히 끌어서 놓을 수 있습니다.

추천 결과를 구성할 때는 특정 사용자와 그룹이 특정 문서에 액세스할 수 있고 다른 사용자와 그룹은 액세스할 수 없는 액세스 제어가 여전히 유효합니다. 이는 사용자 컨텍스트 필터링의 경우에도 마찬가지입니다. 예를 들어 사용자 A는 회사 기밀 문서에 액세스해서는 안 되는 '인턴' 회사 그룹에 속해 있습니다. 사용자 A가 회사 기밀 문서를 추천하는 쿼리를 입력하면 사용자 A의 검색 결과에 이 문서가 추천되지 않습니다. 이는 검색 결과 페이지의 다른 모든 결과에서도 마찬가지입니다. 태그를 사용하면 액세스를 제어하는 Amazon Kendra 리소스인 추천 결과 세트에 대한 액세스를 제어할 수도 있습니다.

다음은 “신제품 2023", “신제품 출시” 쿼리를 “새 소식”(doc-id-1) 및 “출시 예정”(doc-id-2) 이라는 제목의 문서에 매핑하여 추천 결과 세트를 만드는 예제입니다.

------
#### [ CLI ]

```
aws kendra create-featured-results-set \
 --featured-results-set-name 'New product docs to feature' \
 --description "Featuring What's new and Coming soon docs" \
 --index-id index-id \
 --query-texts 'new products 2023' 'new products available' \
 --featured-documents '{"Id":"doc-id-1", "Id":"doc-id-2"}'
```

------
#### [ Python ]

```
import boto3
from botocore.exceptions import ClientError
import pprint
import time

kendra = boto3.client("kendra")

print("Create a featured results set.")

# Provide a name for the featured results set
featured_results_name = "New product docs to feature"
# Provide an optional decription for the featured results set
description = "Featuring What's new and Coming soon docs"
# Provide the index ID for the featured results set
index = "index-id"
# Provide a list of query texts for the featured results set
queries = ['new products 2023', 'new products available']
# Provide a list of document IDs for the featured results set
featured_doc_ids = [{"Id":"doc-id-1"}, {"Id":"doc-id-2"}]

try:
    featured_results_set_response = kendra.create_featured_results_set(
        FeaturedResultsSetName = featured_results_name,
        Decription = description,
        Index = index,
        QueryTexts = queries,
        FeaturedDocuments = featured_doc_ids
    )

    pprint.pprint(featured_results_set_response)

    featured_results_set_id = featured_results_set_response["FeaturedResultsSetId"]

    while True:
        # Get the details of the featured results set, such as the status
        featured_results_set_description = kendra.describe_featured_results_set(
            Id = featured_results_set_id
        )
        status = featured_results_set_description["Status"]
        print(" Featured results set status: "+status)
            
except  ClientError as e:
        print("%s" % e)

print("Program ends.")
```

------

# HTML에 대한 표 형식 검색
<a name="searching-tables"></a>

**참고**  
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 [인덱스 유형](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)을 참조하세요.

Amazon Kendra의 표 검색 기능은 HTML 문서에 포함된 표에서 답변을 검색하고 추출할 수 있습니다. 인덱스를 검색할 때는 쿼리와 관련된 경우 테이블의 발췌문을 Amazon Kendra 포함하고 유용한 정보를 제공합니다.

Amazon Kendra 는 테이블의 유용한 정보를 포함하여 문서의 본문 텍스트 내의 모든 정보를 살펴봅니다. 예를 들어, 인덱스에는 운영 비용, 수입 및 기타 재무 정보에 대한 표가 포함된 비즈니스 보고서가 포함됩니다. 쿼리의 경우 “2020-2022의 연간 운영 비용은 얼마입니까?”는 관련 테이블 열 “운영(백만 USD)” 및 “재무 연도”가 포함된 테이블과 2020년, 2021년, 2022년의 소득 값이 포함된 테이블 행에서 발췌한 내용을 반환할 수 Amazon Kendra 있습니다. 이 표 발췌문은 문서 제목, 전체 문서 링크 및 포함하려는 기타 문서 필드와 함께 결과에 포함됩니다.

정보가 표의 한 셀에 있든 여러 셀에 있든 상관없이 검색 결과에 표 발췌문을 표시할 수 있습니다. 예를 들어,는 이러한 각 종류의 쿼리에 맞게 조정된 테이블 발췌문을 표시할 Amazon Kendra 수 있습니다.
+ '2020년 최고 이자율 신용카드'
+ “2020-2022년 최고 이자율 신용카드”
+ “2020-2022년 최고 이자율 신용카드 3개”
+ “이자율이 10% 미만인 신용카드”
+ “사용 가능한 모든 저금리 신용카드”

Amazon Kendra 는 쿼리와 가장 관련성이 높은 테이블 셀을 강조 표시합니다. 가장 관련성이 높은 셀과 해당 행, 열, 열 이름이 검색 결과에 표시됩니다. 표 발췌문에는 쿼리와 관련된 표의 셀 수와 원본 표에서 사용할 수 있는 열 수에 따라 최대 5개의 열과 3개의 행이 표시됩니다. 표 발췌문에는 가장 관련성이 높은 상위 셀이 다음으로 가장 관련성이 높은 셀과 함께 표시됩니다.

응답에는 표 답변이 쿼리와 얼마나 관련이 있는지를 보여주는 신뢰도 버킷(`MEDIUM`, `HIGH`, `VERY_HIGH`)이 포함됩니다. 표의 셀 값이 신뢰도 `VERY_HIGH`인 경우, 해당 값이 '상위 답변'이 되어 강조 표시됩니다. 신뢰도가 `HIGH`인 표 셀 값의 경우 해당 값이 강조 표시됩니다. 신뢰도가 `MEDIUM`인 표 셀 값의 경우 해당 값이 강조 표시되지 않습니다. 표 답변에 대한 전체 신뢰도가 응답에 반환됩니다. 예를 들어, 표에 대부분 `HIGH` 신뢰도인 표 셀이 포함된 경우, 표 답변에 대한 응답에 반환된 전체 신뢰도는 `HIGH` 신뢰도입니다.

기본적으로 표에는 문서의 다른 구성 요소보다 더 높은 중요도나 가중치가 부여되지 않습니다. 문서 내에서 테이블이 쿼리와 약간만 관련이 있지만 관련성이 높은 단락이 있는 경우는 단락의 발췌문을 Amazon Kendra 반환합니다. 검색 결과에는 동일한 문서나 다른 문서에서 가능한 최선의 답변과 가장 유용한 정보를 제공하는 콘텐츠가 표시됩니다. 표에 대한 신뢰도가 신뢰도 `MEDIUM` 밑으로 떨어지면 표 발췌문은 응답에 반환되지 않습니다.

기존 인덱스에서 표 형식 검색을 사용하려면 콘텐츠를 다시 인덱싱해야 합니다.

Amazon Kendra 테이블 형식 검색은 [동의어](https://docs.aws.amazon.com/kendra/latest/dg/index-synonyms.html)(사용자 지정 동의어 포함)를 지원합니다.는 테이블 태그 내에 HTML 테이블이 있는 영어 문서 Amazon Kendra 만 지원합니다.

다음 예제는 쿼리 결과에 포함된 표 발췌문을 보여줍니다. 표 발췌문을 비롯한 쿼리 응답이 포함된 샘플 JSON을 보려면 [쿼리 응답 및 유형](https://docs.aws.amazon.com/kendra/latest/dg/query-responses-types.html)을 참조하세요.

------
#### [ Python ]

```
import boto3
import pprint

kendra = boto3.client("kendra")

# Provide the index ID
index_id = <index-id>
# Provide the query text
query = "search string"

response = kendra.query(
        QueryText = query,
        IndexId = index_id)

print("\nSearch results for query: " + query + "\n")        

for query_result in response["ResultItems"]:

    print("-------------------")
    print("Type: " + str(query_result["Type"]))
    print("Type: " + str(query_result["Format"]))
        
    if query_result["Type"]=="ANSWER" and query_result["Format"]=="TABLE":
        answer_table = query_result["TableExcerpt"]
        print(answer_table)
        
    if query_result["Type"]=="ANSWER" and query_result["Format"]=="TEXT":
        answer_text = query_result["DocumentExcerpt"]
        print(answer_text)
        
    if query_result["Type"]=="QUESTION_ANSWER":
        question_answer_text = query_result["DocumentExcerpt"]["Text"]
        print(question_answer_text)

    if query_result["Type"]=="DOCUMENT":
        if "DocumentTitle" in query_result:
            document_title = query_result["DocumentTitle"]["Text"]
            print("Title: " + document_title)
        document_text = query_result["DocumentExcerpt"]["Text"]
        print(document_text)

    print("------------------\n\n")
```

------
#### [ Java ]

```
package com.amazonaws.kendra;

import software.amazon.awssdk.services.kendra.KendraClient;
import software.amazon.awssdk.services.kendra.model.QueryRequest;
import software.amazon.awssdk.services.kendra.model.QueryResponse;
import software.amazon.awssdk.services.kendra.model.QueryResultItem;

public class SearchIndexExample {
    public static void main(String[] args) {
        KendraClient kendra = KendraClient.builder().build();

        String query = "search string";
        String indexId = "index-id";

        QueryRequest queryRequest = QueryRequest
            .builder()
            .queryText(query)
            .indexId(indexId)
            .build();

        QueryResponse queryResponse = kendra.query(queryRequest);

        System.out.println(String.format("\nSearch results for query: %s", query));
        for(QueryResultItem item: queryResponse.resultItems()) {
            System.out.println("----------------------");
            System.out.println(String.format("Type: %s", item.type()));
            System.out.println(String.format("Format: %s", item.format()));
            
            switch(item.format()) {
                case TABLE:
                    String answerTable = item.TableExcerpt();
                    System.out.println(answerTable);
                    break;
            }

            switch(item.format()) {
                case TEXT:
                    String answerText = item.DocumentExcerpt();
                    System.out.println(answerText);
                    break;
            }

            switch(item.type()) {
                case QUESTION_ANSWER:
                    String questionAnswerText = item.documentExcerpt().text();
                    System.out.println(questionAnswerText);
                    break;
                case DOCUMENT:
                    String documentTitle = item.documentTitle().text();
                    System.out.println(String.format("Title: %s", documentTitle));
                    String documentExcerpt = item.documentExcerpt().text();
                    System.out.println(String.format("Excerpt: %s", documentExcerpt));
                    break;
                default:
                    System.out.println(String.format("Unknown query result type: %s", item.type()));

            }

            System.out.println("-----------------------\n");
        }
    }
}
```

------

# 쿼리 제안
<a name="query-suggestions"></a>

**참고**  
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 [인덱스 유형](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)을 참조하세요.

Amazon Kendra *쿼리 제안*은 사용자가 검색 쿼리를 더 빠르게 입력하고 검색 결과를 안내하는 데 도움이 될 수 있습니다.

Amazon Kendra 는 다음 중 하나를 기반으로 사용자와 관련된 쿼리를 제안합니다.
+ 쿼리 기록 또는 쿼리 로그의 인기 쿼리
+ 문서 필드/속성의 내용

`SuggestionTypes`를 `QUERY` 또는 `DOCUMENT_ATTRIBUTES`로 설정하고 [https://docs.aws.amazon.com/kendra/latest/APIReference/API_GetQuerySuggestions.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_GetQuerySuggestions.html)를 호출하여 쿼리 기록 또는 문서 필드 사용에 대한 기본 설정을 지정할 수 있습니다. 기본적으로는 쿼리 기록을 Amazon Kendra 사용하여 제안을 기반으로 합니다. 를 호출할 때 쿼리 기록과 문서 필드가 모두 활성화[https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateQuerySuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateQuerySuggestionsConfig.html)되고 문서 필드를 사용하도록 `SuggestionTypes` 기본 설정을 지정하지 않은 경우는 쿼리 기록을 Amazon Kendra 사용합니다.

콘솔을 사용하는 경우 쿼리 기록 또는 문서 필드를 기반으로 쿼리를 제안할 수 있습니다. 먼저 인덱스를 선택한 다음 탐색 메뉴의 **보강**에서 **쿼리 제안**을 선택합니다. 그런 다음 **쿼리 제안 구성**을 선택합니다. 쿼리 제안을 구성하면 오른쪽 패널에서 **쿼리 기록** 또는 **문서 필드**를 선택하고 검색 창에 검색 쿼리를 입력할 수 있는 검색 콘솔로 이동합니다.

기본적으로 쿼리 기록과 문서 필드를 사용하는 쿼리 제안은 모두 추가 비용 없이 활성화됩니다. `UpdateQuerySuggestionsConfig` API를 사용하여 언제든지 이러한 유형의 쿼리 제안을 비활성화할 수 있습니다. 쿼리 기록을 기반으로 쿼리 제안을 비활성화하려면 `UpdateQuerySuggestionsConfig`를 호출할 때 `Mode`를 `DISABLED`로 설정합니다. 문서 필드를 기반으로 하는 쿼리 제안을 비활성화하려면 문서 필드 구성에서 `AttributeSuggestionsMode`를 `INACTIVE`로 설정한 다음 `UpdateQuerySuggestionsConfig>`를 호출하세요. 콘솔을 사용하는 경우 **쿼리 제안 설정**에서 쿼리 제안을 비활성화할 수 있습니다.

쿼리 제안은 대소문자를 구분하지 않습니다.는 쿼리 접두사와 제안된 쿼리를 소문자로 Amazon Kendra 변환하고, 작은따옴표와 큰따옴표를 모두 무시하고, 여러 공백 문자를 단일 공백으로 바꿉니다. Amazon Kendra 는 다른 모든 특수 문자를 그대로 일치시킵니다. 사용자가 2자 미만 또는 60자를 초과하는 문자를 입력하는 경우 제안을 표시하지 Amazon Kendra 않습니다.

**Topics**
+ [쿼리 기록을 사용한 쿼리 제안](#query-suggestions-history)
+ [문서 필드를 사용한 쿼리 제안](#query-suggestions-doc-fields)
+ [제안에서 특정 쿼리 또는 문서 필드 콘텐츠 차단](#query-suggestions-blocklist)

## 쿼리 기록을 사용한 쿼리 제안
<a name="query-suggestions-history"></a>

**참고**  
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 [인덱스 유형](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)을 참조하세요.

**Topics**
+ [제안할 쿼리를 선택하기 위한 설정](#query-suggestions-history-settings)
+ [쿼리 기록을 보존하면서 제안 지우기](#query-suggestions-history-clear)
+ [제안 없음](#query-suggestions-history-none)

쿼리 기록 또는 쿼리 로그의 인기 있는 쿼리를 기반으로 사용자와 관련된 쿼리를 제안하도록 선택할 수 있습니다.는 사용자가 검색하고 이러한 쿼리에서 학습하는 모든 쿼리를 Amazon Kendra 사용하여 사용자에게 제안합니다. Amazon Kendra 는 사용자가 쿼리를 입력하기 시작할 때 인기 있는 쿼리를 제안합니다. Amazon Kendra 는 쿼리의 접두사 또는 처음 몇 문자가 사용자가 쿼리로 입력을 시작하는 것과 일치하는 경우 쿼리를 제안합니다.

예를 들어, 사용자가 '예정된 이벤트'라는 쿼리를 입력하기 시작합니다. Amazon Kendra 는 쿼리 기록을 통해 많은 사용자가 '예정된 이벤트 2050'을 여러 번 검색했다는 사실을 알게 되었습니다. 사용자는 검색창 바로 아래에 '예정된 이벤트 2050'이 표시되어 검색 쿼리가 자동으로 완성되는 것을 볼 수 있습니다. 사용자가 이 쿼리 제안을 선택하면 검색 결과에 '새 이벤트: 2050년에 무슨 일이 벌어지고 있는가' 문서가 반환됩니다.

가 사용자에게 제안할 적합한 쿼리를 Amazon Kendra 선택하는 방법을 지정할 수 있습니다. 예를 들어 쿼리 제안이 최소 10명의 고유 사용자(기본값은 3)에 의해 검색되고, 지난 30일 이내에 검색되었으며, [블록 목록](https://docs.aws.amazon.com/kendra/latest/dg/query-suggestions.html#query-suggestions-blocklist)의 단어나 문구를 포함하지 않도록 지정할 수 있습니다. Amazon Kendra 는 쿼리에 하나 이상의 검색 결과가 있고 4자 이상의 단어를 하나 이상 포함해야 합니다.

### 제안할 쿼리를 선택하기 위한 설정
<a name="query-suggestions-history-settings"></a>

[https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateQuerySuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateQuerySuggestionsConfig.html) API를 사용하여 제안할 쿼리를 선택하기 위해 다음 설정을 구성할 수 있습니다.
+ **모드** - 쿼리 기록을 사용하는 쿼리 제안은 `ENABLED` 또는 `LEARN_ONLY` 입니다. Amazon Kendra 는 기본적으로 쿼리 제안을 활성화합니다. `LEARN_ONLY`는 쿼리 제안을 끕니다. 꺼진 경우 Amazon Kendra 제안을 계속 학습하지만 사용자에게 쿼리 제안을 하지 않습니다.
+ **쿼리 로그 기간** - 쿼리 로그 기간의 쿼리가 얼마나 최신인가. 이 기간은 오늘부터 지난 날까지의 일수를 나타내는 정수 값입니다.
+ **사용자 정보가 없는 쿼리** - 모든 쿼리를 포함하도록 `TRUE`로 설정하거나 사용자 정보가 포함된 쿼리만 포함하도록 `FALSE`로 설정합니다. 사용자가 쿼리를 실행할 때 검색 애플리케이션에 사용자 ID와 같은 사용자 정보가 포함된 경우 이 설정을 사용할 수 있습니다. 기본적으로 이 설정은 쿼리와 관련된 특정 사용자 정보가 없는 경우 쿼리를 필터링하지 않습니다. 하지만 이 설정을 사용하면 사용자 정보가 포함된 쿼리를 기반으로 제안만 할 수 있습니다.
+ **순 사용자** - 쿼리를 사용자에게 제안하기 위해 해당 쿼리를 검색한 최소 순 사용자 수입니다. 이 숫자는 정수 값입니다.
+ **쿼리 수** - 쿼리를 사용자에게 제안하기 위해 해당 쿼리가 검색되어야 하는 최소 횟수입니다. 이 숫자는 정수 값입니다.

이러한 설정은 쿼리를 인기 쿼리로 선택하여 사용자에게 제안하는 방식에 영향을 줍니다. 설정을 조정하는 방법은 특정 요구 사항에 따라 달라집니다. 예를 들면 다음과 같습니다.
+ 사용자가 보통 한 달에 평균 한 번 검색하는 경우 쿼리 로그 기간의 일수를 30일로 설정할 수 있습니다. 이 설정을 사용하면 사용자의 최근 쿼리 대부분을 기간이 만료되기 전에 캡처할 수 있습니다.
+ 사용자 정보가 포함된 쿼리 수가 적고 작은 샘플 크기를 기준으로 쿼리를 제안하지 않으려면 모든 사용자를 포함하도록 쿼리를 설정할 수 있습니다.
+ 인기 있는 쿼리를 10명 이상의 순 사용자가 검색하고 100회 이상 검색한다고 정의하면 순 사용자를 10으로 설정하고 쿼리 수를 100으로 설정합니다.

**주의**  
설정 변경 내용이 즉시 적용되지 않을 수 있습니다. [https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsConfig.html) API를 사용하여 설정 변경을 추적할 수 있습니다. 업데이트된 설정이 적용되는 데 걸리는 시간은 업데이트한 내용과 인덱스의 검색 쿼리 수에 따라 달라집니다. Amazon Kendra 는 설정을 변경하거나 [차단 목록](https://docs.aws.amazon.com/kendra/latest/dg/query-suggestions.html#query-suggestions-blocklist)을 적용한 후 24시간마다 제안을 자동으로 업데이트합니다.

------
#### [ CLI ]

**쿼리 제안을 검색하려면**

```
aws kendra get-query-suggestions \
 --index-id index-id \
 --query-text "query-text" \
 --suggestion-types '["QUERY"]' \
 --max-suggestions-count 1 // If you want to limit the number of suggestions
```

**쿼리 제안을 업데이트하려면**

예를 들어 쿼리 로그 기간과 쿼리를 검색해야 하는 최소 횟수를 변경하려면:

```
aws kendra update-query-suggestions-config \
 --index-id index-id \
 --query-log-look-back-window-in-days 30 \
 --minimum-query-count 100
```

------
#### [ Python ]

**쿼리 제안을 검색하려면**

```
import boto3
from botocore.exceptions import ClientError

kendra = boto3.client("kendra")

print("Get query suggestions.")

# Provide the index ID
index_id = "index-id"

# Provide the query text
query_text = "query"

# Provide the query suggestions type
query_suggestions_type = "QUERY"


# If you want to limit the number of suggestions
num_suggestions = 1
 
try:
    query_suggestions_response = kendra.get_query_suggestions(
        IndexId = index_id,
        QueryText = query_text,
        SuggestionTypes = query_suggestions_type,
        MaxSuggestionsCount = num_suggestions
    )

    # Print out the suggestions you received
    if ("Suggestions" in query_suggestions_response.keys()) {
        for (suggestion: query_suggestions_response["Suggestions"]) {
            print(suggestion["Value"]["Text"]["Text"]);
        }
    }
   
except ClientError as e:
        print("%s" % e)

print("Program ends.")
```

**쿼리 제안을 업데이트하려면**

예를 들어 쿼리 로그 기간과 쿼리를 검색해야 하는 최소 횟수를 변경하려면:

```
import boto3
from botocore.exceptions import ClientError
import pprint
import time

kendra = boto3.client("kendra")

print("Updating query suggestions settings/configuration for an index.")

# Provide the index ID
index_id = "index-id"

# Configure the settings you want to update
minimum_query_count = 100
query_log_look_back_window_in_days = 30

try:
    kendra.update_query_suggestions_config(
        IndexId = index_id,
        MinimumQueryCount = minimum_query_count,
        QueryLogLookBackWindowInDays = query_log_look_back_window_in_days
    )

    print("Wait for Amazon Kendra to update the query suggestions.")

    while True:
        # Get query suggestions description of settings/configuration
        query_sugg_config_response = kendra.describe_query_suggestions_config(
            IndexId = index_id
        )
        
        # If status is not UPDATING, then quit
        status = query_sugg_config_response["Status"]
        print(" Updating query suggestions config. Status: " + status)
        if status != "UPDATING":
            break
        time.sleep(60)

except ClientError as e:
        print("%s" % e)

print("Program ends.")
```

------

### 쿼리 기록을 보존하면서 제안 지우기
<a name="query-suggestions-history-clear"></a>

**참고**  
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 [인덱스 유형](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)을 참조하세요.

[https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsConfig.html) API를 사용하여 쿼리 제안을 지울 수 있습니다. 제안을 지우면 기존 쿼리 제안만 삭제되고 쿼리 기록의 쿼리는 삭제되지 않습니다. 제안을 지우면는 제안을 지운 시점부터 쿼리 로그에 추가된 새 쿼리를 기반으로 새 제안을 Amazon Kendra 학습합니다.

------
#### [ CLI ]

**쿼리 제안을 지우려면**

```
aws  kendra clear-query-suggestions \
 --index-id index-id
```

------
#### [ Python ]

**쿼리 제안을 지우려면**

```
import boto3
from botocore.exceptions import ClientError

kendra = boto3.client("kendra")

print("Clearing out query suggestions for an index.")

# Provide the index ID
index_id = "index-id"

try:
    kendra.clear_query_suggestions(
        IndexId = index_id
    )

    # Confirm last cleared date-time and that there are no suggestions
    query_sugg_config_response = kendra.describe_query_suggestions_config(
        IndexId = index_id
    )
    print("Query Suggestions last cleared at: " + str(query_sugg_config_response["LastClearTime"]));
    print("Number of suggestions available from the time of clearing: " + str(query_sugg_config_response["TotalSuggestionsCount"]));
        
except ClientError as e:
        print("%s" % e)

print("Program ends.")
```

------

### 제안 없음
<a name="query-suggestions-history-none"></a>

쿼리에 대한 제안이 표시되지 않으면 다음 이유 중 하나일 수 있습니다.
+ 인덱스에가 학습 Amazon Kendra 할 쿼리가 충분하지 않습니다.
+ 쿼리 제안 설정이 너무 엄격하여 대부분의 쿼리가 제안에서 필터링됩니다.
+ 최근에 제안을 선택 취소했지만 새 제안을 학습하려면 새 쿼리가 누적될 시간이 Amazon Kendra 필요합니다.

[https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsConfig.html) API를 사용하여 현재 설정을 확인할 수 있습니다.

## 문서 필드를 사용한 쿼리 제안
<a name="query-suggestions-doc-fields"></a>

**Topics**
+ [제안할 필드를 선택하기 위한 설정](#query-suggestions-doc-fields-settings)
+ [문서 필드의 사용자 제어](#query-suggestions-doc-fields-user-control)

문서 필드의 콘텐츠를 기반으로 사용자와 관련된 쿼리를 제안하도록 선택할 수 있습니다. 쿼리 기록을 사용하여 널리 사용되는 다른 관련 쿼리를 제안하는 대신 쿼리를 자동으로 작성하는 데 유용한 문서 필드에 포함된 정보를 사용할 수 있습니다.는 로 설정`Suggestable`되고 사용자의 쿼리와 밀접하게 일치하는 필드의 관련 콘텐츠를 Amazon Kendra 찾습니다. 그런 다음는 쿼리를 입력하기 시작할 때 사용자에게이 콘텐츠를 Amazon Kendra 제안합니다.

예를 들어 제안의 기반이 될 제목 필드를 지정하고 사용자가 쿼리 'How amazon ken...'을 입력하기 시작하는 경우 가장 관련성이 높은 제목 'How Amazon Kendra works'를 제안하여 검색을 자동 완성할 수 있습니다. 사용자는 검색 창 바로 아래에 ' Amazon Kendra 작동 방식'이 나타나 검색 쿼리를 자동으로 작성합니다. 사용자가이 쿼리 제안을 선택하면 검색 결과에 ' Amazon Kendra 작동 방식' 문서가 반환됩니다.

쿼리 제안을 위한 필드 구성의 일부로 필드를 `Suggestable`로 설정하면 `String` 및 `StringList` 유형의 모든 문서 필드의 콘텐츠를 사용하여 쿼리를 제안할 수 있습니다. [차단 목록](https://docs.aws.amazon.com/kendra/latest/dg/query-suggestions.html#query-suggestions-blocklist)을 사용하여 특정 단어나 문구가 포함된 제안된 문서 필드가 사용자에게 표시되지 않도록 할 수도 있습니다. 하나의 차단 목록을 사용할 수 있습니다. 차단 목록은 쿼리 제안을 어떻게 설정하든(쿼리 기록 또는 문서 필드 사용) 상관없이 적용됩니다.

### 제안할 필드를 선택하기 위한 설정
<a name="query-suggestions-doc-fields-settings"></a>

[https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeSuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeSuggestionsConfig.html)를 사용하고 [https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateQuerySuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateQuerySuggestionsConfig.html) API를 호출하여 인덱스 수준에서 설정을 업데이트하도록 다음과 같이 제안할 문서 필드 선택 설정을 구성할 수 있습니다.
+ **필드/속성 제안 모드** - 문서 필드를 사용하는 쿼리 제안은 `ACTIVE` 또는 `INACTIVE`입니다. Amazon Kendra 는 기본적으로 쿼리 제안을 활성화합니다.
+ **제안 가능한 필드/속성** - 제안의 기반이 되는 필드 이름 또는 필드 키입니다. 필드 구성의 일부로 이러한 필드는 `Suggestable`에 대해 `TRUE`로 설정해야 합니다. 인덱스 수준에서 구성을 유지하면서 쿼리 수준에서 필드 구성을 재정의할 수 있습니다. [GetQuerySuggestions](https://docs.aws.amazon.com/kendra/latest/APIReference/API_GetQuerySuggestions.html) API를 사용하여 쿼리 수준에서 `AttributeSuggestionConfig`를 변경할 수 있습니다. 쿼리 수준의 이 구성은 인덱스 수준에서 구성을 업데이트할 필요 없이 다양한 문서 필드를 사용하여 빠르게 실험해 보는 데 유용할 수 있습니다.
+ **추가 필드/속성** - 쿼리 제안에 대한 응답에 포함하려는 추가 필드입니다. 이러한 필드는 응답에 추가 정보를 제공하는 데 사용되지만 제안의 근거로는 사용되지 않습니다.

**주의**  
설정 변경 내용이 즉시 적용되지 않을 수 있습니다. [https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsConfig.html) API를 사용하여 설정 변경을 추적할 수 있습니다. 업데이트된 설정이 적용되는 시간은 수행하는 업데이트에 따라 달라집니다.는 설정을 변경한 후 또는 [차단 목록을](https://docs.aws.amazon.com/kendra/latest/dg/query-suggestions.html#query-suggestions-blocklist) 적용한 후 24시간마다 제안을 Amazon Kendra 자동으로 업데이트합니다.

------
#### [ CLI ]

인덱스 수준에서 구성을 변경할 필요 없이 쿼리 제안을 검색하고 쿼리 수준에서 문서 필드 구성을 재정의할 수 있습니다.

```
aws kendra get-query-suggestions \
 --index-id index-id \
 --query-text "query-text" \
 --suggestion-types '["DOCUMENT_ATTRIBUTES"]' \
 --attribute-suggestions-config '{"SuggestionAttributes":'["field/attribute key 1", "field/attribute key 2"]', "AdditionalResponseAttributes":'["response field/attribute key 1", "response field/attribute key 2"]'}' \
 --max-suggestions-count 1 // If you want to limit the number of suggestions
```

**쿼리 제안을 업데이트하려면**

예를 들어 인덱스 수준에서 문서 필드 구성을 변경하려면:

```
aws kendra update-query-suggestions-config \
 --index-id index-id \
 --attribute-suggestions-config '{"SuggestableConfigList": '[{"SuggestableConfig": "_document_title", "Suggestable": true}]', "AttributeSuggestionsMode": "ACTIVE"}'
```

------
#### [ Python ]

인덱스 수준에서 구성을 변경할 필요 없이 쿼리 제안을 검색하고 쿼리 수준에서 문서 필드 구성을 재정의할 수 있습니다.

```
import boto3
from botocore.exceptions import ClientError

kendra = boto3.client("kendra")

print("Get query suggestions.")

# Provide the index ID
index_id = "index-id"

# Provide the query text
query_text = "query"

# Provide the query suggestions type
query_suggestions_type = "DOCUMENT_ATTRIBUTES"

# Override fields/attributes configuration at query level
configuration = {"SuggestionAttributes":
    '["field/attribute key 1", "field/attribute key 2"]', 
      "AdditionalResponseAttributes":
          '["response field/attribute key 1", "response field/attribute key 2"]'
          }

# If you want to limit the number of suggestions
num_suggestions = 1

try:
    query_suggestions_response = kendra.get_query_suggestions(
        IndexId = index_id,
        QueryText = query_text,
        SuggestionTypes = [query_suggestions_type],
        AttributeSuggestionsConfig = configuration,
        MaxSuggestionsCount = num_suggestions
    )

    # Print out the suggestions you received
    if ("Suggestions" in query_suggestions_response.keys()) {
        for (suggestion: query_suggestions_response["Suggestions"]) {
            print(suggestion["Value"]["Text"]["Text"]);
        }
    }
   
except ClientError as e:
        print("%s" % e)

print("Program ends.")
```

**쿼리 제안을 업데이트하려면**

예를 들어 인덱스 수준에서 문서 필드 구성을 변경하려면:

```
import boto3
from botocore.exceptions import ClientError
import pprint
import time

kendra = boto3.client("kendra")

print("Updating query suggestions settings/configuration for an index.")

# Provide the index ID
index_id = "index-id"

# Configure the settings you want to update at the index level
configuration = {"SuggestableConfigList": 
    '[{"SuggestableConfig": "_document_title", "Suggestable": true}]', 
       "AttributeSuggestionsMode": "ACTIVE"
       }

try:
    kendra.update_query_suggestions_config(
        IndexId = index_id,
        AttributeSuggestionsConfig = configuration
    )

    print("Wait for Amazon Kendra to update the query suggestions.")

    while True:
        # Get query suggestions description of settings/configuration
        query_sugg_config_response = kendra.describe_query_suggestions_config(
            IndexId = index_id
        )
        
        # If status is not UPDATING, then quit
        status = query_sugg_config_response["Status"]
        print(" Updating query suggestions config. Status: " + status)
        if status != "UPDATING":
            break
        time.sleep(60)

except ClientError as e:
        print("%s" % e)

print("Program ends.")
```

------

### 문서 필드의 사용자 제어
<a name="query-suggestions-doc-fields-user-control"></a>

쿼리 제안의 기반으로 사용할 문서 필드에 사용자 컨텍스트 필터링을 적용할 수 있습니다. 이는 문서에 대한 사용자 또는 그룹의 액세스 권한을 기준으로 문서 필드 정보를 필터링합니다. 인턴이 회사 포털을 검색하지만 회사 일급 기밀 문서에 액세스할 수 없는 경우를 예로 들 수 있습니다. 따라서 일급 기밀 문서의 제목이나 기타 제안 가능한 필드를 기반으로 제안된 쿼리는 인턴에게 표시되지 않습니다.

어떤 사용자와 그룹에 어떤 문서에 대한 액세스 권한이 할당되는지 정의하는 액세스 제어 목록(ACL)을 사용하여 문서를 인덱싱할 수 있습니다. 그런 다음 쿼리 제안을 위해 문서 필드에 사용자 컨텍스트 필터링을 적용할 수 있습니다. 현재 인덱스에 설정된 사용자 컨텍스트 필터링은 쿼리 제안에 대한 문서 필드 구성에 적용되는 사용자 컨텍스트 필터링과 동일합니다. 사용자 컨텍스트 필터링은 문서 필드 구성의 일부입니다. [https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeSuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeSuggestionsConfig.html)를 사용하고 [https://docs.aws.amazon.com/kendra/latest/APIReference/API_GetQuerySuggestions.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_GetQuerySuggestions.html)를 호출합니다.

## 제안에서 특정 쿼리 또는 문서 필드 콘텐츠 차단
<a name="query-suggestions-blocklist"></a>

*차단 목록은* 사용자에게 특정 쿼리 Amazon Kendra 를 제안하는 것을 중지합니다. 차단 목록은 쿼리 제안에서 제외하려는 단어 또는 구문의 목록입니다.는 차단 목록에 있는 단어 또는 구문의 정확한 일치가 포함된 쿼리를 Amazon Kendra 제외합니다.

차단 목록을 사용하면 쿼리 기록이나 문서 필드에 흔히 나타나며 Amazon Kendra 가 제안으로 선택할 수 있는 불쾌한 단어나 문구를 차단할 수 있습니다. 차단 목록은가 공개적으로 릴리스하거나 발표할 준비가 되지 않은 정보가 포함된 쿼리를 Amazon Kendra 제안하는 것을 방지할 수도 있습니다. 예를 들어, 사용자들이 잠재적 신제품의 향후 출시에 대해 자주 문의합니다. 하지만 아직 출시할 준비가 되지 않았으므로 제품을 제안하고 싶지 않을 것입니다. 제품 이름과 제품 정보가 포함된 쿼리는 제안 항목에서 차단할 수 있습니다.

[https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateQuerySuggestionsBlockList.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateQuerySuggestionsBlockList.html) API를 사용하여 쿼리에 대한 차단 목록을 만들 수 있습니다. 각각의 차단 단어나 문구를 텍스트 파일의 별도 줄에 넣습니다. 그런 다음 텍스트 파일을 Amazon S3 버킷에 업로드하고 파일의 경로 또는 위치를 제공합니다 Amazon S3. Amazon Kendra 현재는 블록 목록 하나만 생성할 수 있습니다.

 Amazon S3 버킷에서 차단된 단어 및 구문의 텍스트 파일을 바꿀 수 있습니다. 에서 차단 목록을 업데이트하려면 [https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateQuerySuggestionsBlockList.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateQuerySuggestionsBlockList.html) API를 Amazon Kendra사용합니다.

[https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsBlockList.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsBlockList.html) API를 사용하여 차단 목록의 상태를 확인할 수 있습니다. `DescribeQuerySuggestionsBlockList`는 다음과 같은 기타 유용한 정보도 제공할 수 있습니다.
+ 차단 목록이 마지막으로 업데이트된 시기
+ 현재 차단 목록에 있는 단어 또는 문구의 수
+ 차단 목록을 만들 때 유용한 오류 메시지

[https://docs.aws.amazon.com/kendra/latest/APIReference/API_ListQuerySuggestionsBlockLists.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_ListQuerySuggestionsBlockLists.html) API를 사용하여 인덱스의 차단 목록 요약 목록을 가져올 수도 있습니다.

차단 목록을 삭제하려면 [DeleteQuerySuggestionsBlockList](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DeleteQuerySuggestionsBlockList.html) API를 사용하세요.

차단 목록에 대한 업데이트는 즉시 적용되지 않을 수 있습니다. `DescribeQuerySuggestionsBlockList` API를 사용하여 업데이트를 추적할 수 있습니다.

------
#### [ CLI ]

**차단 목록을 만들려면**

```
aws kendra create-query-suggestions-block-list \
 --index-id index-id \
 --name "block-list-name" \
 --description "block-list-description" \
 --source-s3-path "Bucket=bucket-name,Key=query-suggestions/block_list.txt" \
 --role-arn role-arn
```

**차단 목록을 업데이트하려면**

```
aws kendra update-query-suggestions-block-list \
 --index-id index-id \
 --name "new-block-list-name" \
 --description "new-block-list-description" \
 --source-s3-path "Bucket=bucket-name,Key=query-suggestions/new_block_list.txt" \
 --role-arn role-arn
```

**차단 목록을 삭제하려면**

```
aws kendra delete-query-suggestions-block-list \
 --index-id index-id \
 --id block-list-id
```

------
#### [ Python ]

**차단 목록을 만들려면**

```
import boto3
from botocore.exceptions import ClientError
import pprint
import time

kendra = boto3.client("kendra")

print("Create a query suggestions block list.")

# Provide a name for the block list
block_list_name = "block-list-name"
# Provide an optional description for the block list
block_list_description = "block-list-description"
# Provide the IAM role ARN required for query suggestions block lists
block_list_role_arn = "role-arn"

# Provide the index ID
index_id = "index-id"

s3_bucket_name = "bucket-name"
s3_key = "query-suggestions/block_list.txt"
source_s3_path = {
    'Bucket': s3_bucket_name,
    'Key': s3_key
}

try:
    block_list_response = kendra.create_query_suggestions_block_list(
        Description = block_list_description,
        Name = block_list_name,
        RoleArn = block_list_role_arn,
        IndexId = index_id,
        SourceS3Path = source_s3_path
    )

    print(block_list_response)

    block_list_id = block_list_response["Id"]

    print("Wait for Amazon Kendra to create the block list.")

    while True:
        # Get block list description
        block_list_description = kendra.describe_query_suggestions_block_list(
            Id = block_list_id,
            IndexId = index_id
        )
        # If status is not CREATING, then quit
        status = block_list_description["Status"]
        print("Creating block list. Status: " + status)
        if status != "CREATING":
            break
        time.sleep(60)
        
except ClientError as e:
        print("%s" % e)

print("Program ends.")
```

**차단 목록을 업데이트하려면**

```
import boto3
from botocore.exceptions import ClientError
import pprint
import time
                        
kendra = boto3.client("kendra")
                        
print("Update a block list for query suggestions.")

# Provide the block list name you want to update
block_list_name = "new-block-list-name"
# Provide the block list description you want to update
block_list_description = "new-block-list-description"
# Provide the IAM role ARN required for query suggestions block lists
block_list_role_arn = "role-arn"

# Provide the block list ID
block_list_id = "block-list-id"
# Provide the index ID
index_id = "index-id"
                        
s3_bucket_name = "bucket-name"
s3_key = "query-suggestions/new_block_list.txt"
source_s3_path = {
'Bucket': s3_bucket_name,
'Key': s3_key
}
                        
try:
    kendra.update_query_suggestions_block_list(
        Id = block_list_id,
        IndexId = index_id,
        Description = block_list_description,
        Name = block_list_name,
        RoleArn = block_list_role_arn,
        SourceS3Path = source_s3_path
    )
                        
    print("Wait for Amazon Kendra to update the block list.")
                        
    while True:
        # Get block list description
        block_list_description = kendra.describe_query_suggestions_block_list(
            Id = block_list_id,
            IndexId = index_id
        )
        # If status is not UPDATING, then the update has finished 
        status = block_list_description["Status"]
        print("Updating block list. Status: " + status)
        if status != "UPDATING":
            break
        time.sleep(60)
                        
except ClientError as e:
print("%s" % e)
                        
print("Program ends.")
```

**차단 목록을 삭제하려면**

```
import boto3
from botocore.exceptions import ClientError

kendra = boto3.client("kendra")

print("Delete a block list for query suggestions.")

# provide the block list ID
query_suggestions_block_list_id = "query-suggestions-block-list-id"
# Provide the index ID
index_id = "index-id"

try:
    kendra.delete_query_suggestions_block_list(
        Id = query_suggestions_block_list_id,
        IndexId = index_id
    )

except ClientError as e:
        print("%s" % e)

print("Program ends.")
```

------

# 쿼리 맞춤법 검사기
<a name="query-spell-check"></a>

**참고**  
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 [인덱스 유형](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)을 참조하세요.

Amazon Kendra *맞춤법 검사기*는 쿼리에 대한 맞춤법 수정을 제안합니다. 이렇게 하면 검색 결과가 제로인 경우를 최소화하고 적절한 결과를 반환할 수 있습니다. 맞춤법이 틀린 쿼리를 사용하면 일치하는 결과가 없거나 반환된 문서가 없는 [제로 검색 결과](https://docs.aws.amazon.com/kendra/latest/dg/search-analytics.html#search-analytics-metrics)를 사용자가 받을 수 있습니다. 또는 맞춤법이 틀린 쿼리로 인해 사용자에게 [관련 없는 검색 결과](https://docs.aws.amazon.com/kendra/latest/dg/search-analytics.html#search-analytics-metrics)가 표시될 수 있습니다.

맞춤법 검사기는 인덱싱된 문서에 나타나는 단어, 수정된 단어가 맞춤법 틀린 단어와 얼마나 일치하는지에 따라 맞춤법이 틀린 단어의 수정을 제안하도록 설계되었습니다. 예를 들어 인덱싱된 문서에 'statements'라는 단어가 나타나면 'year-end financial statments'라는 쿼리에서 철자가 틀린 단어 'statments'와 거의 일치합니다.

맞춤법 검사기는 원래 쿼리 텍스트에서 맞춤법이 틀린 단어를 대체하는 의도된 단어 또는 수정된 단어를 반환합니다. 예를 들어 'depoying kendre search'는 'deploying Kendra search'를 반환할 수 있습니다. 또한 API에 제공된 오프셋 위치를 사용하여 프런트 엔드 애플리케이션의 쿼리에서 수정하여 반환된 단어를 강조 표시하거나 기울임꼴로 표시할 수 있습니다. 콘솔에서는 수정된 단어가 기본적으로 강조 표시되거나 기울임꼴로 표시됩니다. 예: '*deploying* *Kendra* search'.

인덱싱된 문서에 나타나는 비즈니스 관련 용어나 특수 용어의 경우 맞춤법 검사기는 이러한 용어를 쿼리의 철자 오류로 오해하지 않습니다. 예를 들어, 'amazon macie'는 'amazon mace'로 정정되지 않습니다.

'year-end'와 같이 하이픈이 있는 단어의 경우 맞춤법 검사기는 이러한 단어를 개별 단어로 취급하여 해당 단어의 수정을 제안합니다. 예를 들어 'yaer-end'에 대해 제안된 수정 사항은 'year-end'일 수 있습니다.

`DOCUMENT` 및 `QUESTION_ANSWER` 쿼리 응답 유형의 경우 맞춤법 검사기는 문서 본문의 단어를 기반으로 철자가 틀린 단어를 수정하도록 제안합니다. 문서 본문은 철자가 틀린 단어와 거의 일치하는 수정을 제안하는 데 있어 제목보다 더 신뢰할 수 있습니다. `ANSWER` 쿼리 응답 유형의 경우 맞춤법 검사기는 인덱스의 기본 질문 및 답변 문서에 있는 단어를 기반으로 수정을 제안합니다.

[SpellCorrectionConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_SpellCorrectionConfiguration.html) 객체를 사용하여 맞춤법 검사를 활성화할 수 있습니다. `IncludeQuerySpellCheckSuggestions`를 `TRUE`로 설정했습니다. 맞춤법 검사기는 콘솔에서 기본적으로 활성화됩니다. 기본적으로 콘솔에 내장되어 있습니다.

맞춤법 검사기는 영어뿐만 아니라 여러 언어로 쿼리에 대한 맞춤법 수정을 제안할 수도 있습니다. 맞춤법 검사기에 지원되는 언어 목록은 [Amazon Kendra 에서 지원하는 언어](https://docs.aws.amazon.com/kendra/latest/dg/in-adding-languages.html)를 참조하세요.

## 기본 제한이 적용된 쿼리 맞춤법 검사기 사용
<a name="query-spell-check-defaults"></a>

맞춤법 검사기는 특정 기본값 또는 제한을 적용하여 설계되었습니다. 다음은 맞춤법 수정 제안을 활성화할 때 적용되는 현재 제한 목록입니다.
+ 3자 미만 또는 길이가 30자를 초과하는 단어에 대해서는 제안된 맞춤법 교정이 반환될 수 없습니다. 30자 초과 또는 3자 미만을 허용하려면 [지원 팀](https://aws.amazon.com/contact-us/)에 문의하세요.
+ 맞춤법 수정 제안은 사용자 액세스 제어 또는 [사용자 컨텍스트 필터링](https://docs.aws.amazon.com/kendra/latest/dg/user-context-filter.html)에 대한 액세스 제어 목록을 기반으로 제안을 제한할 수 없습니다. 맞춤법 수정은 특정 사용자만 사용할 수 있는 단어인지 여부에 관계없이 인덱싱된 문서에 있는 모든 단어를 기반으로 합니다. 쿼리에 대해 제안된 맞춤법 수정에 특정 단어가 나타나지 않도록 하려면 `SpellCorrectionConfiguration`를 활성화하지 마세요.
+ 숫자가 포함된 단어에 대해서는 제안된 맞춤법 교정을 반환할 수 없습니다. 예: 'how 2 not br8k ubun2'.
+ 맞춤법 수정 제안에는 인덱싱된 문서에 없는 단어를 사용할 수 없습니다.
+ 맞춤법 수정 제안은 인덱싱된 문서에서 사용 빈도가 0.01퍼센트 미만인 단어를 사용할 수 없습니다. 0.01% 임계값을 변경하려면 [지원 팀](https://aws.amazon.com/contact-us/)에 문의하세요.

# 검색 필터링 및 패싯
<a name="filtering"></a>

**참고**  
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 [인덱스 유형](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)을 참조하세요.

필터를 사용하여 [Query](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API의 검색 결과 또는 응답을 개선할 수 있습니다. 필터는 응답의 문서를 쿼리에 직접 적용되는 문서로 제한합니다. 패싯된 검색 제안을 만들려면 응답에서 특정 문서 속성이나 특정 기준과 일치하지 않는 문서를 필터링하는 부울 논리를 사용하세요. `Query` API의 `Facets` 파라미터를 사용하여 패싯을 지정할 수 있습니다.

로 인덱싱한 문서를 검색하려면 [AMAZON.KendraSearchIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_KendraConfiguration.html)를 Amazon Kendra Amazon Lex사용합니다. 를 사용하여를 구성하는 Amazon Kendra 예제는 인덱스에 대한 FAQ 봇 생성을 Amazon Lex참조하세요. [Amazon Kendra](https://docs.aws.amazon.com/lexv2/latest/dg/faq-bot-kendra-search.html) [AttributeFilter](https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeFilter.html)를 사용하여 응답에 대한 필터를 제공할 수도 있습니다. `AMAZON.KendraSearchIntent` 구성 시 JSON의 쿼리 필터입니다. 콘솔에서 검색 의도를 구성할 때 속성 필터를 제공하려면 의도 편집기로 이동하여 Amazon Kendra 쿼리를 선택하여 JSON에 쿼리 필터를 제공하세요. `AMAZON.KendraSearchIntent`에 대한 자세한 내용은 [Amazon Lex 설명서](https://docs.aws.amazon.com/lexv2/latest/dg/built-in-intent-kendra-search.html)를 참조하세요.

## 패싯
<a name="search-facets"></a>

패싯은 검색 결과 집합의 범위가 지정된 뷰입니다. 예를 들어, 전 세계 도시에 대한 검색 결과를 제공할 수 있습니다. 그러면 관련 도시별로 문서가 필터링됩니다. 또는 특정 작성자의 결과를 표시하는 패싯을 만들 수 있습니다.

문서와 관련된 문서 속성 또는 메타데이터 필드를 패싯으로 사용하여 사용자가 해당 패싯 내의 범주 또는 값을 기준으로 검색하도록 할 수 있습니다. 사용자가 범주나 필드뿐만 아니라 하위 범주나 하위 필드로도 검색할 수 있도록 검색 결과에 중첩된 패싯을 표시할 수도 있습니다.

다음 예에서는 “City” 사용자 지정 속성에 대한 패싯 정보를 가져오는 방법을 보여줍니다.

```
response=kendra.query(
        QueryText = query,
        IndexId = index,
        Facets = [
            {
                "DocumentAttributeKey" : "City"
            }
        ]
        )
```

중첩된 패싯을 사용하여 검색 범위를 더 좁힐 수 있습니다. 예를 들어, 문서 속성 또는 패싯 “City”에는 “Seattle”이라는 값이 포함됩니다. 또한 문서 속성 또는 패싯 “CityRegion”에는 “Seattle”에 할당된 문서에 대한 “North” 및 “South” 값이 포함됩니다. 문서를 도시뿐만 아니라 도시 내 지역으로도 검색할 수 있도록 검색 결과에 중첩된 패싯을 개수와 함께 표시할 수 있습니다.

중첩된 패싯은 쿼리 지연 시간에 영향을 줄 수 있다는 점에 유의하세요. 일반적으로 사용하는 중첩된 패싯 수가 많을수록 지연 시간에 미치는 잠재적 영향도 커집니다. 지연 시간에 영향을 미치는 다른 요인으로는 인덱싱된 문서의 평균 크기, 인덱스 크기, 매우 복잡한 쿼리, Amazon Kendra 인덱스의 전체 부하 등이 있습니다.

다음 예제는 “CityRegion” 사용자 지정 속성에 대한 패싯 정보를 “City” 내에 중첩된 패싯으로 가져오는 방법을 보여줍니다.

```
response=kendra.query(
        QueryText = query,
        IndexId = index,
        Facets = [
            {
                "DocumentAttributeKey" : "City",
                "Facets": [
                    {
                        "DocumentAttributeKey" : "CityRegion"
                    }
                ]
            }
        ]
        )
```

문서 수와 같은 패싯 정보가 `FacetResults` 응답 배열에 반환됩니다. 이 콘텐츠를 사용하여 애플리케이션에 패싯된 검색 제안을 표시할 수 있습니다. 예를 들어, 문서 속성 “City”에 검색을 적용할 수 있는 도시가 포함되어 있는 경우 해당 정보를 사용하여 도시 검색 목록을 표시할 수 있습니다. 사용자는 도시를 선택하여 검색 결과를 필터링할 수 있습니다. 패싯된 검색을 수행하려면 [Query](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API를 호출하고 선택한 문서 속성을 사용하여 결과를 필터링하세요.

쿼리에는 패싯당 최대 10개의 패싯 값을 표시할 수 있으며, 하나의 패싯 내에는 하나의 중첩된 패싯만 있을 수 있습니다. 이러한 한도를 증가시키려는 경우 [지원 팀](https://aws.amazon.com/contact-us/)에 문의하세요. 패싯당 패싯 값 수를 10 미만으로 제한하려는 경우 `Facet` 객체에서 이를 지정할 수 있습니다.

다음 샘플 JSON 응답은 “City” 문서 속성으로 범위가 지정된 패싯을 보여줍니다. 이 응답에는 패싯 값에 대한 문서 수가 포함됩니다.

```
{
    'FacetResults': [
        {
            'DocumentAttributeKey': 'City',
            'DocumentAttributeValueCountPairs': [
                {
                    'Count': 3,
                    'DocumentAttributeValue': {
                        'StringValue': 'Dubai'
                    }
                },
                {
                    'Count': 3,
                    'DocumentAttributeValue': {
                        'StringValue': 'Seattle'
                    }
                },
                {
                    'Count': 1,
                    'DocumentAttributeValue': {
                        'StringValue': 'Paris'
                    }
                }
            ]
        }
    ]
```

또한 도시 내 지역과 같은 중첩된 패싯에 대한 패싯 정보를 표시하여 검색 결과를 추가로 필터링할 수 있습니다.

다음 샘플 JSON 응답은 “CityRegion” 문서 속성으로 범위가 지정된 패싯을 “City” 내의 중첩된 패싯으로 보여줍니다. 이 응답에는 중첩된 패싯 값에 대한 문서 수가 포함됩니다.

```
{
    'FacetResults': [
        {
            'DocumentAttributeKey': 'City',
            'DocumentAttributeValueCountPairs': [
                {
                    'Count': 3,
                    'DocumentAttributeValue': {
                        'StringValue': 'Dubai'
                    },
                    'FacetResults': [
                        {
                            'DocumentAttributeKey': 'CityRegion',
                            'DocumentAttributeValueCountPairs': [
                                 {
                                     'Count': 2,
                                     'DocumentAttributeValue': {
                                         'StringValue': 'Bur Dubai'
                                     }
                                 },
                                 {
                                     'Count': 1,
                                     'DocumentAttributeValue': {
                                         'StringValue': 'Deira'
                                     }
                                 }
                             ]
                        }
                    ]
                },
                {
                    'Count': 3,
                    'DocumentAttributeValue': {
                        'StringValue': 'Seattle'
                    },
                    'FacetResults': [
                        {
                            'DocumentAttributeKey': 'CityRegion',
                            'DocumentAttributeValueCountPairs': [
                                 {
                                     'Count': 1,
                                     'DocumentAttributeValue': {
                                         'StringValue': 'North'
                                     }
                                 },
                                 {
                                     'Count': 2,
                                     'DocumentAttributeValue': {
                                         'StringValue': 'South'
                                     }
                                 }
                             ]
                        }
                    ]
                },
                {
                    'Count': 1,
                    'DocumentAttributeValue': {
                        'StringValue': 'Paris'
                    },
                    'FacetResults': [
                        {
                            'DocumentAttributeKey': 'CityRegion',
                            'DocumentAttributeValueCountPairs': [
                                 {
                                     'Count': 1,
                                     'DocumentAttributeValue': {
                                         'StringValue': 'City center'
                                     }
                                 }
                             ]
                        }
                    ]
                }
        }
    ]
}
```

문자열 목록 필드를 사용하여 패싯을 생성할 경우 반환되는 패싯 결과는 문자열 목록의 내용을 기반으로 합니다. 예를 들어, 문자열 목록 필드에 “dachshund”, “sausage dog”을 나열한 항목과 “husky” 값이 있는 항목 등, 두 항목이 포함된 경우, 세 개의 패싯이 포함된 `FacetResults`가 표시됩니다.

자세한 내용은 [쿼리 응답 및 응답 유형](query-responses-types.md) 단원을 참조하십시오.

## 문서 속성을 사용하여 검색 결과 필터링
<a name="search-filtering"></a>

기본적으로 `Query`는 모든 검색 결과를 반환합니다. 응답을 필터링하려면 문서 속성에 대해 논리적 연산을 수행할 수 있습니다. 예를 들어 특정 도시에 대한 문서만 원하는 경우 “City” 및 “State” 사용자 지정 문서 속성을 기준으로 필터링할 수 있습니다. [AttributeFilter](https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeFilter.html)를 사용하여 제공하는 필터에 대해 부울 연산을 만들 수 있습니다.

대부분의 속성은 모든 [응답 유형](https://docs.aws.amazon.com/kendra/latest/dg/query-responses-types.html)의 응답을 필터링하는 데 사용할 수 있습니다. 그러나 `_excerpt_page_number` 속성은 응답을 필터링할 때 `ANSWER` 응답 유형에만 적용됩니다.

다음 예제는 특정 도시, *시애틀* 및 *워싱턴* 주를 필터링하여 논리적 AND 연산을 수행하는 방법을 보여줍니다.

```
response=kendra.query(
        QueryText = query,
        IndexId = index,
        AttributeFilter = {'AndAllFilters': 
            [ 
                {"EqualsTo": {"Key": "City","Value": {"StringValue": "Seattle"}}},
                {"EqualsTo": {"Key": "State","Value": {"StringValue": "Washington"}}}
            ]
            }
        )
```

다음 예제는 `Fileformat`, `Author` 또는 `SourceURI` 키 중 하나라도 지정된 값과 일치하는 경우에 대해 논리적 OR 연산을 수행하는 방법을 보여줍니다.

```
response=kendra.query(
        QueryText = query,
        IndexId = index,
        AttributeFilter = {'OrAllFilters': 
            [ 
                {"EqualsTo": {"Key": "Fileformat","Value": {"StringValue": "AUTO_DETECT"}}},
                {"EqualsTo": {"Key": "Author","Value": {"StringValue": "Ana Carolina"}}},
                {"EqualsTo": {"Key": "SourceURI","Value": {"StringValue": "https://aws.amazonaws.com/234234242342"}}}
            ]
            }
        )
```

`StringList` 필드의 경우 `ContainsAny` 또는 `ContainsAll` 속성 필터를 사용하여 지정된 문자열이 포함된 문서를 반환합니다. 다음 예제는 `Locations` 사용자 지정 속성에서 값이 “시애틀” 또는 “Portland”인 모든 문서를 반환하는 방법을 보여줍니다.

```
response=kendra.query(
        QueryText = query,
        IndexId = index,
        AttributeFilter = {
                "ContainsAny": { "Key": "Locations", "Value": { "StringListValue": [ "Seattle", "Portland"] }}
            }
        )
```

## 검색 결과에서 각 문서의 속성을 필터링
<a name="filtering-document-attributes"></a>

Amazon Kendra 는 검색 결과의 각 문서에 대한 문서 속성을 반환합니다. 응답에 검색 결과의 일부로 포함하려는 특정 문서 속성을 필터링할 수 있습니다. 기본적으로 문서에 할당된 모든 문서 속성이 응답에 반환됩니다.

다음 예에서는 문서에 대한 응답에 `_source_uri` 및 `_author` 문서 속성만 포함됩니다.

```
response=kendra.query(
        QueryText = query,
        IndexId = index,
        RequestedDocumentAttributes = ["_source_uri", "_author"]
        )
```

# 사용자 컨텍스트 필터링
<a name="user-context-filter"></a>

**참고**  
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 [인덱스 유형](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)을 참조하세요.

문서에 대한 사용자 또는 그룹의 액세스 권한을 기준으로 사용자의 검색 결과를 필터링할 수 있습니다. 사용자 토큰, 사용자 ID 또는 사용자 속성을 사용하여 문서를 필터링할 수 있습니다.

사용자 컨텍스트 필터링은 문서에 대한 액세스를 제어할 수 있는 이점이 있는 일종의 개인화된 검색입니다. 예를 들어 회사 포털에서 정보를 검색하는 모든 팀이 일급 기밀 회사 문서에 액세스해야 하는 것은 아니며, 이러한 문서가 모든 사용자에게 관련된 것도 아닙니다. 일급 기밀 문서에 대한 액세스 권한을 받은 특정 사용자 또는 팀 그룹만 검색 결과에서 이러한 문서를 볼 수 있습니다.

문서가 인덱싱되면 대부분의 문서에 해당하는 ACL(액세 Amazon Kendra스 제어 목록)이 수집됩니다. ACL은 문서에 대한 액세스를 허용하거나 거부할 사용자 이름 및 그룹 이름을 지정합니다. ACL이 없는 문서는 공개 문서입니다.

Amazon Kendra 는 대부분의 데이터 소스에 대해 각 문서와 연결된 사용자 또는 그룹 정보를 추출할 수 있습니다. 예를 들어 Quip의 문서에는 문서에 대한 액세스 권한이 부여된 일부 사용자의 '공유' 목록이 포함될 수 있습니다. S3 버킷을 데이터 소스로 사용하는 경우 ACL용 [JSON 파일](https://docs.aws.amazon.com/kendra/latest/dg/s3-acl.html)을 제공하고 이 파일에 대한 S3 경로를 데이터 소스 구성의 일부로 포함해야 합니다. 문서를 인덱스에 직접 추가하는 경우 [보안 주체](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Principal.html) 객체의 ACL을 [BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument.html) API에서 문서 객체의 일부로 지정합니다.

Amazon Kendra Enterprise 또는 Developer Edition 인덱스를 사용하는 경우 [CreateAccessControlConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateAccessControlConfiguration.html) API를 사용하여 모든 문서를 다시 인덱싱하지 않고 기존 문서 수준 액세스 제어를 재구성할 수 있습니다. 예를 들어 인덱스에는 특정 직원이나 사용자만 액세스할 수 있는 회사 일급 기밀 문서가 포함되어 있습니다. 이러한 사용자 중 한 명이 퇴사하거나, 일급 기밀 문서에 액세스하지 못하도록 차단해야 하는 팀으로 이동합니다. 이전에 문서를 인덱싱했을 때 해당 사용자가 액세스할 수 있었기 때문에 사용자는 여전히 일급 기밀 문서에 액세스할 수 있습니다. 이 경우 해당 사용자의 액세스를 거부하는 특정 액세스 제어 구성을 만들 수 있습니다. 나중에 사용자가 회사로 돌아와 '일급 기밀' 팀에 다시 합류할 경우 액세스를 허용하도록 액세스 제어 구성을 업데이트하면 됩니다. 상황 변화에 따라 문서에 대한 액세스 제어를 다시 구성할 수 있습니다.

액세스 제어 구성을 특정 문서에 적용하려면 [문서](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Document.html) 객체에 `AccessControlConfigurationId`를 포함하여 [BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument.html) API를 호출합니다. S3 버킷을 데이터 소스로 사용하는 경우를 `.metadata.json`로 업데이트`AccessControlConfigurationId`하고 데이터 소스를 동기화합니다. Amazon Kendra 현재는 `BatchPutDocument` API를 사용하여 인덱싱된 S3 데이터 소스 및 문서에 대한 액세스 제어 구성만 지원합니다.

## 사용자 토큰별 필터링
<a name="context-filter-token"></a>

**중요**  
Amazon Kendra GenAI Enterprise Edition 인덱스는 토큰 기반 사용자 액세스 제어를 지원하지 않습니다.

인덱스를 쿼리할 때 사용자 토큰을 사용하여 문서에 대한 사용자 또는 그룹의 액세스 권한을 기준으로 검색 결과를 필터링할 수 있습니다. 쿼리를 실행하면는 토큰을 Amazon Kendra 추출 및 검증하고 사용자 및 그룹 정보를 가져오고 확인하며 쿼리를 실행합니다. 공개 문서를 포함하여 사용자가 액세스할 수 있는 모든 문서가 반환됩니다. 자세한 내용은 [토큰 기반 사용자 액세스 제어](https://docs.aws.amazon.com/kendra/latest/dg/create-index-access-control.html)를 참조하세요.

[UserContext](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UserContext.html) 객체에 사용자 토큰을 제공하고 이 토큰을 [Query](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API에 전달합니다.

아래에서는 사용자 토큰을 포함하는 방법을 보여줍니다.

```
response = kendra.query(
    QueryText = query,
    IndexId = index,
    UserToken = {
        Token = "token"
    })
```

사용자를 그룹에 매핑할 수 있습니다. 사용자-컨텍스트 필터링을 사용하는 경우 쿼리를 실행할 때 사용자가 속한 모든 그룹을 포함할 필요는 없습니다. [PutPrincipalMapping](https://docs.aws.amazon.com/kendra/latest/APIReference/API_PutPrincipalMapping.html) API를 사용하여 사용자를 해당 그룹에 매핑할 수 있습니다. `PutPrincipalMapping` API를 사용하지 않으려면 쿼리를 실행할 때 사용자 이름과 사용자가 속한 모든 그룹을 제공해야 합니다. 또한 [UserGroupResolutionConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UserGroupResolutionConfiguration.html) 객체를 사용하여 IAM Identity Center ID 소스에 있는 그룹 및 사용자의 액세스 수준을 가져올 수 있습니다.

## 사용자 ID 및 그룹별 필터링
<a name="context-filter-user-incl-datasources"></a>

인덱스를 쿼리할 때 사용자 ID와 그룹을 사용하여 문서에 대한 사용자 또는 그룹의 액세스 권한을 기준으로 검색 결과를 필터링할 수 있습니다. 쿼리를 실행하면가 사용자 및 그룹 정보를 Amazon Kendra 확인하고 쿼리를 실행합니다. 공개 문서를 포함하여 사용자가 액세스할 수 있는 쿼리와 관련된 모든 문서가 반환됩니다.

사용자 및 그룹이 액세스할 수 있는 데이터 소스별로 검색 결과를 필터링할 수도 있습니다. 그룹이 여러 데이터 소스에 연결되어 있지만 그룹이 특정 데이터 소스의 문서에만 액세스하도록 하려는 경우 데이터 소스를 지정하는 것이 유용합니다. 예를 들어 “연구”, “엔지니어링”, “영업 및 마케팅” 그룹은 모두 데이터 소스 Confluence 및 Salesforce에 저장된 회사 문서에 연결되어 있습니다. 하지만 “영업 및 마케팅” 팀은 Salesforce에 저장된 고객 관련 문서에만 액세스하면 됩니다. 따라서 영업 및 마케팅 사용자가 고객 관련 문서를 검색하면 검색 결과에서 Salesforce의 문서를 볼 수 있습니다. 영업 및 마케팅 부서에 속하지 않는 사용자는 검색 결과에서 Salesforce 문서를 볼 수 없습니다.

[UserContext](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UserContext.html) 객체에 사용자, 그룹 및 데이터 소스 정보를 제공하고 이 정보를 [Query](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API로 전달합니다. 사용자 ID, 그룹 및 데이터 소스 목록은 사용자, 그룹 및 데이터 소스를 식별하기 위해 [보안 주체](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Principal.html) 객체에 지정한 이름과 일치해야 합니다. `Principal` 객체를 사용하면 문서에 액세스하기 위한 허용 목록 또는 거부 목록에 사용자, 그룹 또는 데이터 소스를 추가할 수 있습니다.

다음 중 하나를 제공해야 합니다.
+ 사용자 및 그룹 정보, (선택 사항) 데이터 소스 정보.
+ [PutPrincipalMapping](https://docs.aws.amazon.com/kendra/latest/APIReference/API_PutPrincipalMapping.html) API를 사용하여 사용자를 그룹 및 데이터 소스에 매핑하는 경우 사용자 정보만 해당합니다. 또한 [UserGroupResolutionConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UserGroupResolutionConfiguration.html) 객체를 사용하여 IAM Identity Center ID 소스에 있는 그룹 및 사용자의 액세스 수준을 가져올 수 있습니다.

이 정보가 쿼리에 포함되지 않은 경우는 모든 문서를 Amazon Kendra 반환합니다. 이 정보를 제공하는 경우 사용자 ID, 그룹 및 데이터 소스가 일치하는 문서만 반환됩니다.

다음은 사용자 ID, 그룹 및 데이터 소스를 포함하는 방법을 보여줍니다.

```
response = kendra.query(
    QueryText = query,
    IndexId = index,
    UserContext={'Token': 'string', 'UserId': 'string', 'Groups': [ 'string', ], 'DataSourceGroups': [ { 'GroupId': 'string', 'DataSourceId': 'string' }, ] },)
```

## 사용 속성으로 필터링
<a name="context-filter-attribute"></a>

인덱스를 쿼리할 때 내장 속성인 `_user_id` 및 `_group_id`를 사용하여 문서에 대한 사용자 또는 그룹의 액세스 권한을 기준으로 검색 결과를 필터링할 수 있습니다. 최대 100개의 그룹 식별자를 설정할 수 있습니다. 쿼리를 실행하면가 사용자 및 그룹 정보를 Amazon Kendra 확인하고 쿼리를 실행합니다. 공개 문서를 포함하여 사용자가 액세스할 수 있는 쿼리와 관련된 모든 문서가 반환됩니다.

[AttributeFilter](https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeFilter.html) 객체에 사용자 및 그룹 속성을 제공하고 이 속성을 [Query](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API에 전달합니다.

다음 예제는 사용자 ID와 사용자가 속한 “HR” 및 “IT” 그룹을 기반으로 쿼리 응답을 필터링하는 요청을 보여줍니다. 쿼리는 허용 목록에 사용자 또는 “HR” 또는 “IT” 그룹이 있는 모든 문서를 반환합니다. 사용자 또는 그룹 중 하나가 문서에 대한 거부 목록에 있는 경우 문서는 반환되지 않습니다.

```
response = kendra.query(
        QueryText = query,
        IndexId = index,
        AttributeFilter = {
            "OrAllFilters": [
                {
                    "EqualsTo": {
                        "Key": "_user_id",
                        "Value": {
                            "StringValue": "user1"
                        }
                     }
                },
                {
                    "EqualsTo": {
                        "Key": "_group_ids",
                        "Value": {
                            "StringListValue": ["HR", "IT"]
                        }
                    }
                }
            ]
        }
        )
```

또한 `Principal` 객체에서 그룹이 액세스할 수 있는 데이터 소스를 지정할 수 있습니다.

**참고**  
사용자 컨텍스트 필터링은 콘텐츠에 대한 인증 또는 권한 부여 제어가 아닙니다. `Query` API로 전송된 사용자 및 그룹에 대해서는 사용자 인증을 수행하지 않습니다. `Query` API로 전송된 사용자 및 그룹 정보가 인증되고 승인되었는지 확인하는 것은 애플리케이션에 달려 있습니다.

각 데이터 소스에 대해 사용자 컨텍스트 필터링이 구현되어 있습니다. 다음 섹션에서는 각 구현에 대해 설명합니다.

**Topics**
+ [사용자 토큰별 필터링](#context-filter-token)
+ [사용자 ID 및 그룹별 필터링](#context-filter-user-incl-datasources)
+ [사용 속성으로 필터링](#context-filter-attribute)
+ [인덱스에 직접 추가된 문서에 대한 사용자 컨텍스트 필터링](#context-filter-batch)
+ [자주 묻는 질문에 대한 사용자 컨텍스트 필터링](#context-filter-faq)
+ [데이터 소스의 사용자 컨텍스트 필터링](#datasource-context-filter)

## 인덱스에 직접 추가된 문서에 대한 사용자 컨텍스트 필터링
<a name="context-filter-batch"></a>

[BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument.html) API를 사용하여 인덱스에 직접 문서를 추가하면 문서의 `AccessControlList` 필드에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다. 문서에 대한 액세스 제어 목록(ACL)을 제공하면 ACL이 문서와 함께 수집됩니다.

[보안 주체](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Principal.html) 객체의 ACL을 `BatchPutDocument` API의 [문서](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Document.html) 객체의 일부로 지정합니다. 다음 정보를 제공합니다.
+ 사용자 또는 그룹이 가져야 하는 액세스 권한 `ALLOW` 또는 `DENY`라고 말할 수 있습니다.
+ 개체의 유형입니다. `USER` 또는 `GROUP`라고 말할 수 있습니다.
+ 사용자 또는 그룹의 이름입니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

## 자주 묻는 질문에 대한 사용자 컨텍스트 필터링
<a name="context-filter-faq"></a>

인덱스에 [FAQ를 추가](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateFaq.html)하면 FAQ JSON 파일의 `AccessControlList` 객체/필드에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다. 액세스 제어를 위한 사용자 지정 필드 또는 속성이 포함된 FAQ CSV 파일을 사용할 수도 있습니다.

다음 정보를 제공합니다.
+ 사용자 또는 그룹이 가져야 하는 액세스 권한 `ALLOW` 또는 `DENY`라고 말할 수 있습니다.
+ 개체의 유형입니다. `USER` 또는 `GROUP`라고 말할 수 있습니다.
+ 사용자 또는 그룹의 이름입니다.

자세한 내용은 [FAQ 파일](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html)을 참조하세요.

## 데이터 소스의 사용자 컨텍스트 필터링
<a name="datasource-context-filter"></a>

Amazon Kendra 또한는 지원되는 데이터 소스 커넥터에서 사용자 및 그룹 액세스 제어 목록(ACL) 정보를 크롤링합니다. 이는 문서에 대한 사용자 또는 해당 그룹의 액세스를 기반으로 검색 결과를 필터링하는 사용자 컨텍스트 필터링에 유용합니다.

**중요**  
Amazon Kendra GenAI Enterprise Edition 인덱스는 v2.0 Amazon Kendra 데이터 소스 커넥터만 지원합니다.

**Topics**
+ [Adobe Experience Manager 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-aem)
+ [Alfresco 데이터 소스의 사용자 컨텍스트 필터링](#context-filter-alfresco)
+ [Aurora (MySQL) 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-aurora-mysql)
+ [Aurora (PostgreSQL) 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-aurora-postgresql)
+ [Amazon FSx 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-fsx)
+ [데이터베이스 데이터 소스의 사용자 컨텍스트 필터링](#context-filter-jdbc)
+ [Amazon RDS (Microsoft SQL Server) 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-rds-ms-sql-server)
+ [Amazon RDS (MySQL) 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-rds-mysql)
+ [Amazon RDS (Oracle) 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-rds-oracle)
+ [Amazon RDS (PostgreSQL) 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-rds-postgresql)
+ [Amazon S3 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-s3)
+ [Box 데이터 소스의 사용자 컨텍스트 필터링](#context-filter-box)
+ [Confluence 데이터 소스의 사용자 컨텍스트 필터링](#context-filter-confluence)
+ [Dropbox 데이터 소스의 사용자 컨텍스트 필터링](#context-filter-dropbox)
+ [Drupal 데이터 소스의 사용자 컨텍스트 필터링](#context-filter-drupal)
+ [GitHub 데이터 소스의 사용자 컨텍스트 필터링](#context-filter-github)
+ [Gmail 데이터 소스의 사용자 컨텍스트 필터링](#context-filter-gmail)
+ [Google Drive 데이터 소스의 사용자 컨텍스트 필터링](#context-filter-google)
+ [IBM DB2 데이터 소스의 사용자 컨텍스트 필터링](#context-filter-ibm-db2)
+ [Jira 데이터 소스의 사용자 컨텍스트 필터링](#context-filter-jira)
+ [Microsoft Exchange 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-exchange)
+ [Microsoft OneDrive 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-onedrive)
+ [Microsoft OneDrive v2.0 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-onedrivev2)
+ [Microsoft SharePoint 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-sharepoint-online)
+ [Microsoft SQL Server 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-ms-sql-server)
+ [Microsoft Teams 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-teams)
+ [Microsoft Yammer 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-yammer)
+ [MySQL 데이터 소스의 사용자 컨텍스트 필터링](#context-filter-mysql)
+ [Oracle Database 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-oracle-database)
+ [PostgreSQL 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-postgresql)
+ [Quip 데이터 소스의 사용자 컨텍스트 필터링](#context-filter-quip)
+ [Salesforce 데이터 소스의 사용자 컨텍스트 필터링](#context-filter-salesforce)
+ [ServiceNow 데이터 소스에 대한 사용자 컨텍스트 필터링](#context-filter-servicenow)
+ [Slack 데이터 소스의 사용자 컨텍스트 필터링](#context-filter-slack)
+ [Zendesk 데이터 소스의 사용자 컨텍스트 필터링](#context-filter-zendesk)

### Adobe Experience Manager 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-aem"></a>

Adobe Experience Manager 데이터 소스를 사용하는 경우는 Adobe Experience Manager 인스턴스에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다.

그룹 및 사용자 ID는 다음과 같이 매핑됩니다.
+ `_group_ids` - 그룹 ID는 액세스 권한이 설정된 Adobe Experience Manager 콘텐츠에 존재합니다. 이들은 Adobe Experience Manager의 그룹 이름을 기반으로 매핑됩니다.
+ `_user_id` - 사용자 ID는 액세스 권한이 설정된 Adobe Experience Manager 콘텐츠에 존재합니다. 사용자 이메일에서 Adobe Experience Manager의 ID로 매핑됩니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Alfresco 데이터 소스의 사용자 컨텍스트 필터링
<a name="context-filter-alfresco"></a>

Alfresco 데이터 소스를 사용하면는 Alfresco 인스턴스에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다.

그룹 및 사용자 ID는 다음과 같이 매핑됩니다.
+ `_group_ids` - Alfresco에는 설정된 액세스 권한이 있는 파일의 그룹 ID가 있습니다. Alfresco에 있는 그룹의 시스템 이름(디스플레이 이름 아님)에서 매핑됩니다.
+ `_user_id` - Alfresco에는 설정된 액세스 권한이 있는 파일의 사용자 ID가 있습니다. 사용자 이메일에서 Alfresco의 ID로 매핑됩니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Aurora (MySQL) 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-aurora-mysql"></a>

 Aurora (MySQL) 데이터 소스를 사용하는 경우는 소스 테이블의 열에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다. 콘솔에서 또는 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html) API의 일부로 [TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html) 객체를 사용하여 이 열을 지정합니다.

A Aurora (MySQL) 데이터베이스 데이터 소스에는 다음과 같은 제한 사항이 있습니다.
+ 데이터베이스 데이터 소스의 허용 목록만 지정할 수 있습니다. 거부 목록을 지정할 수 없습니다.
+ 그룹만 지정할 수 있습니다. 허용 목록에 개별 사용자를 지정할 수는 없습니다.
+ 데이터베이스 열은 세미콜론으로 구분된 그룹 목록을 포함하는 문자열이어야 합니다.

### Aurora (PostgreSQL) 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-aurora-postgresql"></a>

 Aurora (PostgreSQL) 데이터 소스를 사용하면 Amazon Kendra 는 소스 테이블의 열에서 사용자 및 그룹 정보를 가져옵니다. 콘솔에서 또는 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html) API의 일부로 [TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html) 객체를 사용하여 이 열을 지정합니다.

A Aurora (PostgreSQL) 데이터베이스 데이터 소스에는 다음과 같은 제한 사항이 있습니다.
+ 데이터베이스 데이터 소스의 허용 목록만 지정할 수 있습니다. 거부 목록을 지정할 수 없습니다.
+ 그룹만 지정할 수 있습니다. 허용 목록에 개별 사용자를 지정할 수는 없습니다.
+ 데이터베이스 열은 세미콜론으로 구분된 그룹 목록을 포함하는 문자열이어야 합니다.

### Amazon FSx 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-fsx"></a>

 Amazon FSx 데이터 소스를 사용하면 인스턴스의 Amazon FSx 디렉터리 서비스에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다.

 Amazon FSx 그룹 및 사용자 IDs됩니다.
+ `_group_ids` - Amazon FSx 에는 설정된 액세스 권한이 있는 파일의 그룹 ID가 있습니다. 디렉터리 서비스의 시스템 그룹 이름에서 매핑됩니다 Amazon FSx.
+ `_user_id`- 사용자 IDs는 설정된 액세스 권한이 있는 파일의 Amazon FSx 에 있습니다. 디렉터리 서비스의 시스템 사용자 이름에서 매핑됩니다 Amazon FSx.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### 데이터베이스 데이터 소스의 사용자 컨텍스트 필터링
<a name="context-filter-jdbc"></a>

와 같은 데이터베이스 데이터 소스를 사용하면 소스 테이블의 열에서 사용자 및 그룹 정보를 Amazon Aurora PostgreSQL Amazon Kendra 가져옵니다. [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html) API에서 [DatabaseConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DatabaseConfiguration.html) 객체의 일부로 [AclConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_AclConfiguration.html) 객체의 이 열을 지정합니다.

데이터베이스 데이터 소스에는 다음과 같은 제한 사항이 적용됩니다.
+ 데이터베이스 데이터 소스의 허용 목록만 지정할 수 있습니다. 거부 목록을 지정할 수 없습니다.
+ 그룹만 지정할 수 있습니다. 허용 목록에 개별 사용자를 지정할 수는 없습니다.
+ 데이터베이스 열은 세미콜론으로 구분된 그룹 목록을 포함하는 문자열이어야 합니다.

### Amazon RDS (Microsoft SQL Server) 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-rds-ms-sql-server"></a>

 Amazon RDS (Microsoft SQL Server) 데이터 소스를 사용하는 경우는 소스 테이블의 열에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다. 콘솔에서 또는 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html) API의 일부로 [TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html) 객체를 사용하여 이 열을 지정합니다.

A Amazon RDS (Microsoft SQL Server) 데이터베이스 데이터 소스에는 다음과 같은 제한 사항이 있습니다.
+ 데이터베이스 데이터 소스의 허용 목록만 지정할 수 있습니다. 거부 목록을 지정할 수 없습니다.
+ 그룹만 지정할 수 있습니다. 허용 목록에 개별 사용자를 지정할 수는 없습니다.
+ 데이터베이스 열은 세미콜론으로 구분된 그룹 목록을 포함하는 문자열이어야 합니다.

### Amazon RDS (MySQL) 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-rds-mysql"></a>

 Amazon RDS (MySQL) 데이터 소스를 사용하는 경우는 소스 테이블의 열에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다. 콘솔에서 또는 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html) API의 일부로 [TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html) 객체를 사용하여 이 열을 지정합니다.

A Amazon RDS (MySQL) 데이터베이스 데이터 소스에는 다음과 같은 제한 사항이 있습니다.
+ 데이터베이스 데이터 소스의 허용 목록만 지정할 수 있습니다. 거부 목록을 지정할 수 없습니다.
+ 그룹만 지정할 수 있습니다. 허용 목록에 개별 사용자를 지정할 수는 없습니다.
+ 데이터베이스 열은 세미콜론으로 구분된 그룹 목록을 포함하는 문자열이어야 합니다.

### Amazon RDS (Oracle) 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-rds-oracle"></a>

 Amazon RDS (Oracle) 데이터 소스를 사용하면 Amazon Kendra 는 소스 테이블의 열에서 사용자 및 그룹 정보를 가져옵니다. 콘솔에서 또는 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html) API의 일부로 [TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html) 객체를 사용하여 이 열을 지정합니다.

A Amazon RDS (Oracle) 데이터베이스 데이터 소스에는 다음과 같은 제한 사항이 있습니다.
+ 데이터베이스 데이터 소스의 허용 목록만 지정할 수 있습니다. 거부 목록을 지정할 수 없습니다.
+ 그룹만 지정할 수 있습니다. 허용 목록에 개별 사용자를 지정할 수는 없습니다.
+ 데이터베이스 열은 세미콜론으로 구분된 그룹 목록을 포함하는 문자열이어야 합니다.

### Amazon RDS (PostgreSQL) 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-rds-postgresql"></a>

 Amazon RDS (PostgreSQL) 데이터 소스를 사용하면 Amazon Kendra 는 소스 테이블의 열에서 사용자 및 그룹 정보를 가져옵니다. 콘솔에서 또는 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html) API의 일부로 [TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html) 객체를 사용하여 이 열을 지정합니다.

A Amazon RDS (PostgreSQL) 데이터베이스 데이터 소스에는 다음과 같은 제한 사항이 있습니다.
+ 데이터베이스 데이터 소스의 허용 목록만 지정할 수 있습니다. 거부 목록을 지정할 수 없습니다.
+ 그룹만 지정할 수 있습니다. 허용 목록에 개별 사용자를 지정할 수는 없습니다.
+ 데이터베이스 열은 세미콜론으로 구분된 그룹 목록을 포함하는 문자열이어야 합니다.

### Amazon S3 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-s3"></a>

문서와 연결된 메타데이터 파일을 사용하여 Amazon S3 데이터 소스의 문서에 사용자 컨텍스트 필터링을 추가합니다. JSON 문서의 `AccessControlList` 필드에 정보를 추가합니다. Amazon S3 데이터 소스에서 인덱싱된 문서에 메타데이터를 추가하는 방법에 대한 자세한 내용은 [S3 문서 메타데이터](https://docs.aws.amazon.com/kendra/latest/dg/s3-metadata.html)를 참조하세요.

다음과 같은 세 가지 정보를 제공합니다.
+ 개체가 가져야 하는 액세스 권한. `ALLOW` 또는 `DENY`라고 말할 수 있습니다.
+ 개체의 유형입니다. `USER` 또는 `GROUP`라고 말할 수 있습니다.
+ 개체의 이름입니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Box 데이터 소스의 사용자 컨텍스트 필터링
<a name="context-filter-box"></a>

Box 데이터 소스를 사용하면는 Box 인스턴스에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다.

Box 그룹 및 사용자 ID는 다음과 같이 매핑됩니다.
+ `_group_ids` - Box에는 설정된 액세스 권한이 있는 파일의 그룹 ID가 있습니다. Box에서 그룹의 이름을 기반으로 매핑됩니다.
+ `_user_id` - Box에는 설정된 액세스 권한이 있는 파일의 사용자 ID가 있습니다. 사용자 이메일에서 Box의 사용자 ID로 매핑됩니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Confluence 데이터 소스의 사용자 컨텍스트 필터링
<a name="context-filter-confluence"></a>

Confluence 데이터 소스를 사용하면는 Confluence 인스턴스에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다.

스페이스 권한 페이지를 사용하여 스페이스에 대한 사용자 및 그룹 액세스를 구성합니다. 페이지와 블로그의 경우 제한 페이지를 사용합니다. 스페이스 권한에 대한 자세한 내용은 Confluence 지원 웹 사이트의 [스페이스 권한 개요](https://confluence.atlassian.com/doc/space-permissions-overview-139521.html)를 참조하세요. 페이지 및 블로그 제한에 대한 자세한 내용은 Confluence 지원 웹 사이트의 [페이지 제한](https://confluence.atlassian.com/doc/page-restrictions-139414.html)을 참조하세요.

Confluence 그룹 및 사용자 이름은 다음과 같이 매핑됩니다.
+ `_group_ids` - 그룹 이름은 제한이 있는 스페이스, 페이지 및 블로그에 표시됩니다. Confluence에서 그룹의 이름을 기반으로 매핑됩니다. 그룹 이름은 항상 소문자입니다.
+ `_user_id` - 사용자 이름은 제한이 있는 스페이스, 페이지 및 블로그에 표시됩니다. 사용 중인 Confluence 인스턴스 유형에 따라 매핑됩니다.

  **Confluence 커넥터 v1.0의 경우**
  + 서버 - `_user_id`는 사용자 이름입니다. 사용자 이름은 항상 소문자입니다.
  + 클라우드 - `_user_id`는 사용자의 계정 ID입니다.

  **Confluence 커넥터 v2.0의 경우**
  + 서버 - `_user_id`는 사용자 이름입니다. 사용자 이름은 항상 소문자입니다.
  + 클라우드 - `_user_id`는 사용자의 이메일 ID입니다.
**중요**  
Confluence 커넥터에서 사용자 컨텍스트 필터링이 제대로 작동하려면 Confluence 페이지에 대한 액세스 권한이 부여된 사용자의 표시 여부를 **모두**로 설정해야 합니다. 자세한 내용은 Atlassian 개발자 설명서에서 [이메일 표시 여부 설정](https://support.atlassian.com/confluence-cloud/docs/configure-user-email-visibility/)을 참조하세요.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Dropbox 데이터 소스의 사용자 컨텍스트 필터링
<a name="context-filter-dropbox"></a>

Dropbox 데이터 소스를 사용하면는 Dropbox 인스턴스에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다.

그룹 및 사용자 ID는 다음과 같이 매핑됩니다.
+ `_group_ids` - Dropbox에는 설정된 액세스 권한이 있는 파일의 그룹 ID가 있습니다. Box에서 그룹의 이름을 기반으로 매핑됩니다.
+ `_user_id` - Dropbox에는 설정된 액세스 권한이 있는 파일의 사용자 ID가 있습니다. 사용자 이메일에서 Dropbox의 사용자 ID로 매핑됩니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Drupal 데이터 소스의 사용자 컨텍스트 필터링
<a name="context-filter-drupal"></a>

Drupal 데이터 소스를 사용하면는 Drupalinstance에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다.

그룹 및 사용자 ID는 다음과 같이 매핑됩니다.
+ `_group_ids` - Drupal에는 설정된 액세스 권한이 있는 파일의 그룹 ID가 있습니다. Drupal에서 그룹의 이름을 기반으로 매핑됩니다.
+ `_user_id` - Drupal에는 설정된 액세스 권한이 있는 파일의 사용자 ID가 있습니다. 사용자 이메일에서 Drupal의 사용자 ID로 매핑됩니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### GitHub 데이터 소스의 사용자 컨텍스트 필터링
<a name="context-filter-github"></a>

GitHub 데이터 소스를 사용하는 경우는 GitHub 인스턴스에서 사용자 정보를 Amazon Kendra 가져옵니다.

GitHub 사용자 ID는 다음과 같이 매핑됩니다.
+ `_user_id` - GitHub에는 설정된 액세스 권한이 있는 파일의 사용자 ID가 있습니다. 사용자 이메일에서 GitHub의 사용자 ID로 매핑됩니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Gmail 데이터 소스의 사용자 컨텍스트 필터링
<a name="context-filter-gmail"></a>

Gmail 데이터 소스를 사용하는 경우는 Gmail 인스턴스에서 사용자 정보를 Amazon Kendra 가져옵니다.

사용자 ID는 다음과 같이 매핑됩니다.
+ `_user_id` - Gmail에는 설정된 액세스 권한이 있는 파일의 사용자 ID가 있습니다. 사용자 이메일에서 Gmail의 사용자 ID로 매핑됩니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Google Drive 데이터 소스의 사용자 컨텍스트 필터링
<a name="context-filter-google"></a>

Google Workspace Drive 데이터 소스는 Google Drive 사용자 및 그룹의 사용자 및 그룹 정보를 반환합니다. 그룹 및 도메인 멤버십은 `_group_ids` 인덱스 필드에 매핑됩니다. Google Drive 사용자 이름이 `_user_id` 필드에 매핑됩니다.

`Query` API에 사용자 이메일 주소를 하나 이상 입력하면 해당 이메일 주소와 공유된 문서만 반환됩니다. 다음 `AttributeFilter` 파라미터는 “martha@example.com”과 공유한 문서만 반환합니다.

```
"AttributeFilter": {
                "EqualsTo":{
                   "Key": "_user_id", 
                   "Value": {
                       "StringValue": "martha@example.com"
                   }
               }
           }
```

쿼리에 그룹 이메일 주소를 하나 이상 입력하면 그룹과 공유된 문서만 반환됩니다. 다음 `AttributeFilter` 파라미터는 “hr@example.com” 그룹과 공유한 문서만 반환합니다.

```
"AttributeFilter": {
                "EqualsTo":{
                   "Key": "_group_ids", 
                   "Value": {
                       "StringListValue": ["hr@example.com"]
                   }
               }
           }
```

쿼리에 도메인을 입력하면 도메인과 공유된 모든 문서가 반환됩니다. 다음 `AttributeFilter` 파라미터는 “example.com” 도메인과 공유된 문서를 반환합니다.

```
"AttributeFilter": {
                "EqualsTo":{
                   "Key": "_group_ids", 
                   "Value": {
                       "StringListValue": ["example.com"]
                   }
               }
           }
```

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.



### IBM DB2 데이터 소스의 사용자 컨텍스트 필터링
<a name="context-filter-ibm-db2"></a>

IBM DB2 데이터 소스를 사용하는 경우는 소스 테이블의 열에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다. 콘솔에서 또는 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html) API의 일부로 [TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html) 객체를 사용하여 이 열을 지정합니다.

IBM DB2 데이터베이스 데이터 소스에는 다음과 같은 제한 사항이 적용됩니다.
+ 데이터베이스 데이터 소스의 허용 목록만 지정할 수 있습니다. 거부 목록을 지정할 수 없습니다.
+ 그룹만 지정할 수 있습니다. 허용 목록에 개별 사용자를 지정할 수는 없습니다.
+ 데이터베이스 열은 세미콜론으로 구분된 그룹 목록을 포함하는 문자열이어야 합니다.

### Jira 데이터 소스의 사용자 컨텍스트 필터링
<a name="context-filter-jira"></a>

Jira 데이터 소스를 사용하는 경우는 Jira 인스턴스에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다.

Jira 사용자 ID는 다음과 같이 매핑됩니다.
+ `_user_id` - Jira에는 설정된 액세스 권한이 있는 파일의 사용자 ID가 있습니다. 사용자 이메일에서 Jira의 사용자 ID로 매핑됩니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Microsoft Exchange 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-exchange"></a>

Microsoft Exchange 데이터 소스를 사용하는 경우는 Microsoft Exchange 인스턴스에서 사용자 정보를 Amazon Kendra 가져옵니다.

Microsoft Exchange 사용자 ID는 다음과 같이 매핑됩니다.
+ `_user_id` - Microsoft Exchange의 권한 설정에는 사용자가 특정 콘텐츠에 액세스할 수 있도록 사용자 ID가 존재합니다. 사용자 이름에서 Microsoft Exchange의 ID로 매핑됩니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Microsoft OneDrive 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-onedrive"></a>

Amazon Kendra 는 사이트의 문서를 인덱싱할 때 Microsoft OneDrive에서 사용자 및 그룹 정보를 검색합니다. 사용자 및 그룹 정보는 OneDrive를 호스팅하는 기본 Microsoft SharePoint 사이트에서 가져옵니다.

OneDrive 사용자 또는 그룹을 검색 결과 필터링에 사용할 경우 다음과 같이 ID를 계산하세요.

1. 사이트 이름을 변경합니다. 예: `https://host.onmicrosoft.com/sites/siteName.`

1. 사이트 이름의 MD5 해시를 가져오세요. 예를 들어 `430a6b90503eef95c89295c8999c7981`입니다.

1. MD5 해시를 세로 막대(\$1)와 ID로 연결하여 사용자 이메일 또는 그룹 ID를 생성합니다. 예를 들어, 그룹 이름이 'localGroupName'일 경우 그룹 ID는 다음과 같습니다.

   `"430a6b90503eef95c89295c8999c7981 | localGroupName"`
**참고**  
세로 막대 앞뒤에 공백을 넣으세요. 세로 막대는 MD5 해시로 `localGroupName`을 식별하는 데 사용됩니다.

   사용자 이름 “someone@host.onmicrosoft.com”의 경우 사용자 ID는 다음과 같습니다.

   `"430a6b90503eef95c89295c8999c7981 | someone@host.onmicrosoft.com"`

[쿼리](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API를 호출할 때 사용자 또는 그룹 ID를 `_user_id` 또는 `_group_id` 속성 Amazon Kendra 으로에 전송합니다. 예를 들어 그룹을 사용하여 검색 결과를 필터링하는 AWS CLI 명령은 다음과 같습니다.

```
aws kendra  query \
                --index-id index ID  
                --query-text "query text" 
                --attribute-filter '{
                   "EqualsTo":{
                     "Key": "_group_id", 
                     "Value": {"StringValue": "430a6b90503eef95c89295c8999c7981 | localGroupName"}
                  }}'
```

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Microsoft OneDrive v2.0 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-onedrivev2"></a>

Microsoft OneDrive v2.0 데이터 소스는 OneDrive 액세스 제어 목록(ACL) 엔터티에서 섹션 및 페이지 정보를 반환합니다.는 OneDrive 테넌트 도메인을 Amazon Kendra 사용하여 OneDrive 인스턴스에 연결한 다음 섹션 및 파일 이름에 대한 사용자 또는 그룹 액세스를 기반으로 검색 결과를 필터링할 수 있습니다.

표준 객체의 경우 `_user_id` 및 `_group_id`는 다음과 같이 사용됩니다.
+ `_user_id` - Microsoft OneDrive 사용자 이메일 ID가 `_user_id` 필드에 매핑됩니다.
+ `_group_id` - Microsoft OneDrive 그룹 이메일이 `_group_id` 필드에 매핑됩니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Microsoft SharePoint 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-sharepoint-online"></a>

Amazon Kendra 는 사이트 문서를 인덱싱할 때 Microsoft SharePoint에서 사용자 및 그룹 정보를 검색합니다. 사용자 또는 그룹 액세스를 기준으로 검색 결과를 필터링하려면 `Query` API를 직접 호출할 때 사용자 및 그룹 정보를 제공합니다.

사용자 이름을 사용하여 필터링하려면 사용자의 이메일 주소를 사용합니다. 예: johnstiles@example.com.

SharePoint 그룹을 검색 결과 필터링에 사용하는 경우 다음과 같이 그룹 ID를 계산하세요.

**로컬 그룹의 경우**

1. 사이트 이름을 변경합니다. 예: `https://host.onmicrosoft.com/sites/siteName.`

1. 사이트 이름의 SHA256 해시를 가져옵니다. 예를 들어 `430a6b90503eef95c89295c8999c7981`입니다.

1. SHA256 해시를 세로 막대(\$1)와 그룹 이름으로 연결하여 그룹 ID를 생성합니다. 예를 들어, 그룹 이름이 'localGroupName'일 경우 그룹 ID는 다음과 같습니다.

   `"430a6b90503eef95c89295c8999c7981 | localGroupName"`
**참고**  
세로 막대 앞뒤에 공백을 넣으세요. 세로 막대는 SHA256 해시로 `localGroupName`을 식별하는 데 사용됩니다.

[쿼리 API](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html)를 호출할 때 그룹 ID를 `_group_id` 속성 Amazon Kendra 으로에 전송합니다. 예를 들어 AWS CLI 명령은 다음과 같습니다.

```
aws kendra  query \
                --index-id index ID  
                --query-text "query text" 
                --attribute-filter '{
                   "EqualsTo":{
                     "Key": "_group_id", 
                     "Value": {"StringValue": "430a6b90503eef95c89295c8999c7981 | localGroupName"}
                  }}'
```

**AD 그룹의 경우**

1. AD 그룹 ID를 사용하여 검색 결과의 필터링을 구성합니다.

[쿼리](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API를 호출할 때 그룹 ID를 `_group_id` 속성 Amazon Kendra 으로에 전송합니다. 예를 들어 AWS CLI 명령은 다음과 같습니다.

```
aws kendra  query \
                --index-id index ID  
                --query-text "query text" 
                --attribute-filter '{
                   "EqualsTo":{
                     "Key": "_group_id", 
                     "Value": {"StringValue": "AD group"}
                  }}'
```

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Microsoft SQL Server 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-ms-sql-server"></a>

Microsoft SQL Server 데이터 소스를 사용하는 경우는 소스 테이블의 열에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다. 콘솔에서 또는 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html) API의 일부로 [TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html) 객체를 사용하여 이 열을 지정합니다.

Microsoft SQL Server 데이터베이스 데이터 소스에는 다음과 같은 제한 사항이 적용됩니다.
+ 데이터베이스 데이터 소스의 허용 목록만 지정할 수 있습니다. 거부 목록을 지정할 수 없습니다.
+ 그룹만 지정할 수 있습니다. 허용 목록에 개별 사용자를 지정할 수는 없습니다.
+ 데이터베이스 열은 세미콜론으로 구분된 그룹 목록을 포함하는 문자열이어야 합니다.

### Microsoft Teams 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-teams"></a>

Amazon Kendra 는 문서를 인덱싱할 때 Microsoft Teams에서 사용자 정보를 검색합니다. 사용자 정보는 기본 Microsoft Teams 인스턴스에서 가져옵니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Microsoft Yammer 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-yammer"></a>

Amazon Kendra 는 문서를 인덱싱할 때 Microsoft Yammer에서 사용자 정보를 검색합니다. 사용자 및 그룹 정보는 기본 Microsoft Yammer 인스턴스에서 가져옵니다.

Microsoft Yammer 사용자 ID는 다음과 같이 매핑됩니다.
+ `_email_id` - `_user_id` 필드에 매핑된 Microsoft 이메일 ID입니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.



### MySQL 데이터 소스의 사용자 컨텍스트 필터링
<a name="context-filter-mysql"></a>

MySQL 데이터 소스를 사용하는 경우는 소스 테이블의 열에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다. 콘솔에서 또는 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html) API의 일부로 [TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html) 객체를 사용하여 이 열을 지정합니다.

MySQL 데이터베이스 데이터 소스에는 다음과 같은 제한 사항이 적용됩니다.
+ 데이터베이스 데이터 소스의 허용 목록만 지정할 수 있습니다. 거부 목록을 지정할 수 없습니다.
+ 그룹만 지정할 수 있습니다. 허용 목록에 개별 사용자를 지정할 수는 없습니다.
+ 데이터베이스 열은 세미콜론으로 구분된 그룹 목록을 포함하는 문자열이어야 합니다.

### Oracle Database 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-oracle-database"></a>

Oracle Database 데이터 소스를 사용하는 경우는 소스 테이블의 열에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다. 콘솔에서 또는 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html) API의 일부로 [TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html) 객체를 사용하여 이 열을 지정합니다.

Oracle Database 데이터 소스에는 다음과 같은 제한 사항이 적용됩니다.
+ 데이터베이스 데이터 소스의 허용 목록만 지정할 수 있습니다. 거부 목록을 지정할 수 없습니다.
+ 그룹만 지정할 수 있습니다. 허용 목록에 개별 사용자를 지정할 수는 없습니다.
+ 데이터베이스 열은 세미콜론으로 구분된 그룹 목록을 포함하는 문자열이어야 합니다.

### PostgreSQL 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-postgresql"></a>

PostgreSQL 데이터 소스를 사용하는 경우는 소스 테이블의 열에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다. 콘솔에서 또는 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html) API의 일부로 [TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html) 객체를 사용하여 이 열을 지정합니다.

PostgreSQL 데이터베이스 데이터 소스에는 다음과 같은 제한 사항이 적용됩니다.
+ 데이터베이스 데이터 소스의 허용 목록만 지정할 수 있습니다. 거부 목록을 지정할 수 없습니다.
+ 그룹만 지정할 수 있습니다. 허용 목록에 개별 사용자를 지정할 수는 없습니다.
+ 데이터베이스 열은 세미콜론으로 구분된 그룹 목록을 포함하는 문자열이어야 합니다.

### Quip 데이터 소스의 사용자 컨텍스트 필터링
<a name="context-filter-quip"></a>

Quip 데이터 소스를 사용하는 경우는 Quip 인스턴스에서 사용자 정보를 Amazon Kendra 가져옵니다.

Quip 사용자 ID는 다음과 같이 매핑됩니다.
+ `_user_id` - Quip에는 설정된 액세스 권한이 있는 파일의 사용자 ID가 있습니다. 사용자 이메일에서 Quip의 사용자 ID로 매핑됩니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Salesforce 데이터 소스의 사용자 컨텍스트 필터링
<a name="context-filter-salesforce"></a>

Salesforce 데이터 소스는 Salesforce 액세스 제어 목록(ACL) 개체로부터 사용자 및 그룹 정보를 반환합니다. 사용자 컨텍스트 필터링을 Salesforce 표준 객체 및 채터 피드에 적용할 수 있습니다. Salesforce 지식 문서에는 사용자 컨텍스트 필터링을 사용할 수 없습니다.

Salesforce 필드를 Amazon Kendra의 문서 제목 및 문서 본문 필드에 매핑하면 Amazon Kendra는 검색 응답에서 문서 제목과 본문 필드의 데이터를 활용합니다.

표준 객체의 경우 `_user_id` 및 `_group_ids`는 다음과 같이 사용됩니다.
+ `_user_id` - Salesforce 사용자의 사용자 이름입니다.
+ `_group_ids`—
  + Salesforce `Profile`의 이름
  + Salesforce `Group`의 이름
  + Salesforce `UserRole`의 이름
  + Salesforce `PermissionSet`의 이름

채터 피드의 경우 `_user_id` 및 `_group_ids`는 다음과 같이 사용됩니다.
+ `_user_id` - Salesforce 사용자의 사용자 이름입니다. 항목이 사용자 피드에 게시된 경우에만 사용할 수 있습니다.
+ `_group_ids` - 그룹 ID는 다음과 같이 사용됩니다. 피드 항목이 채터 또는 공동 작업 그룹에 게시된 경우에만 사용할 수 있습니다.
  + 채터 또는 공동 작업 그룹의 이름.
  + 그룹이 공개 그룹인 경우 `PUBLIC:ALL`.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### ServiceNow 데이터 소스에 대한 사용자 컨텍스트 필터링
<a name="context-filter-servicenow"></a>

ServiceNow의 사용자 컨텍스트 필터링은 TemplateConfiguration API 및 ServiceNow 커넥터 v2.0에서만 지원됩니다. ServiceNowConfiguration API 및 ServiceNow 커넥터 v1.0은 사용자 컨텍스트 필터링을 지원하지 않습니다.

ServiceNow 데이터 소스를 사용하는 경우는 ServiceNow 인스턴스에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다.

그룹 및 사용자 ID는 다음과 같이 매핑됩니다.
+ `_group_ids` - ServiceNow에는 설정된 액세스 권한이 있는 파일의 그룹 ID가 있습니다. 이들은 ServiceNow에서 `sys_ids`의 역할 이름을 기반으로 매핑됩니다.
+ `_user_id` - ServiceNow에는 설정된 액세스 권한이 있는 파일의 사용자 ID가 있습니다. 사용자 이메일에서 ServiceNow의 ID로 매핑됩니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Slack 데이터 소스의 사용자 컨텍스트 필터링
<a name="context-filter-slack"></a>

Slack 데이터 소스를 사용하는 경우는 Slack 인스턴스에서 사용자 정보를 Amazon Kendra 가져옵니다.

Slack 사용자 ID는 다음과 같이 매핑됩니다.
+ `_user_id` - Slack에서 액세스 권한이 설정된 메시지 및 채널의 사용자 ID가 존재합니다. 사용자 이메일에서 Slack의 사용자 ID로 매핑됩니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

### Zendesk 데이터 소스의 사용자 컨텍스트 필터링
<a name="context-filter-zendesk"></a>

Zendesk 데이터 소스를 사용하면는 Zendesk 인스턴스에서 사용자 및 그룹 정보를 Amazon Kendra 가져옵니다.

그룹 및 사용자 ID는 다음과 같이 매핑됩니다.
+ `_group_ids` - 그룹 ID는 액세스 권한이 설정된 Zendesk 티켓 및 문서에 있습니다. Zendesk에서 그룹의 이름을 기반으로 매핑됩니다.
+ `_user_id` - 그룹 ID는 액세스 권한이 설정된 Zendesk 티켓 및 문서에 있습니다. 사용자 이메일에서 Zendesk의 사용자 ID로 매핑됩니다.

`AccessControlList` 필드에 개체를 200개까지 추가할 수 있습니다.

# 쿼리 응답 및 응답 유형
<a name="query-responses-types"></a>

**참고**  
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 [인덱스 유형](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)을 참조하세요.

Amazon Kendra 는 다양한 쿼리 응답 및 응답 유형을 지원합니다.

## 쿼리 응답
<a name="query-responses"></a>

[Query](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API를 호출하면 검색 결과에 대한 정보가 반환됩니다. 결과는 [QueryResultItem](https://docs.aws.amazon.com/kendra/latest/APIReference/API_QueryResultItem.html) 객체(`ResultItems`)의 배열에 있습니다. 각 `QueryResultItem` 항목에는 결과 요약이 포함됩니다. 쿼리 결과와 관련된 문서 속성이 포함됩니다.

**요약 정보**  
요약 정보는 결과 유형에 따라 달라집니다. 각 경우에 검색어와 일치하는 문서 텍스트가 포함됩니다. 또한 애플리케이션 출력에서 검색 텍스트를 강조 표시하는 데 사용할 수 있는 강조 표시 정보도 포함되어 있습니다. 예를 들어 검색어가 *스페이스 니들 높이는 얼마인가요?*인 경우, 요약 정보에는 *높이* 및 *스페이스 니들*이라는 단어의 텍스트 위치가 포함됩니다. 응답 유형에 대한 자세한 내용은 [쿼리 응답 및 응답 유형](#query-responses-types) 단원을 참조하세요.

**문서 속성**  
각 결과에는 쿼리와 일치하는 문서의 문서 속성이 포함됩니다. `DocumentId`, `DocumentTitle`, `DocumentUri` 등 일부 속성은 미리 정의되어 있습니다. 다른 것들은 사용자가 정의하는 사용자 지정 속성입니다. 문서 속성을 사용하여 `Query` API의 응답을 필터링할 수 있습니다. 예를 들어, 특정 작성자가 작성한 문서나 문서의 특정 버전만 원할 수 있습니다. 자세한 내용은 [검색 필터링 및 패싯](filtering.md) 단원을 참조하십시오. 인덱스에 문서를 추가할 때 문서 속성을 지정합니다. 자세한 내용은 [사용자 지정 필드 또는 속성](https://docs.aws.amazon.com/kendra/latest/dg/custom-attributes.html)을 참조하세요.

다음은 쿼리 결과를 위한 샘플 JSON 코드입니다. `DocumentAttributes` 및 `AdditionalAttributes`의 문서 속성을 기록해 두세요.

```
{
    "QueryId": "query-id",
    "ResultItems": [
        {
            "Id": "result-id",
            "Type": "ANSWER",
            "AdditionalAttributes": [
                {
                    "Key": "AnswerText",
                    "ValueType": "TEXT_WITH_HIGHLIGHTS_VALUE",
                    "Value": {
                        "TextWithHighlightsValue": {
                            "Text": "text",
                            "Highlights": [
                                {
                                    "BeginOffset": 55,
                                    "EndOffset": 90,
                                    "TopAnswer": false
                                }
                            ]
                        }
                    }
                }
            ],
            "DocumentId": "document-id",
            "DocumentTitle": {
                "Text": "title"
            },
            "DocumentExcerpt": {
                "Text": "text",
                "Highlights": [
                    {
                        "BeginOffset": 0,
                        "EndOffset": 300,
                        "TopAnswer": false
                    }
                ]
            },
            "DocumentURI": "uri",
            "DocumentAttributes": [],
            "ScoreAttributes": "score",
            "FeedbackToken": "token"
        },
        {
            "Id": "result-id",
            "Type": "ANSWER",
            "Format": "TABLE",
            "DocumentId": "document-id",
            "DocumentTitle": {
                "Text": "title"
            },
            "TableExcerpt": {
                "Rows": [{
                    "Cells": [{
                        "Header": true,
                        "Highlighted": false,
                        "TopAnswer": false,
                        "Value": "value"
                    }, {
                        "Header": true,
                        "Highlighted": false,
                        "TopAnswer": false,
                        "Value": "value"
                    }, {
                        "Header": true,
                        "Highlighted": false,
                        "TopAnswer": false,
                        "Value": "value"
                    }, {
                        "Header": true,
                        "Highlighted": false,
                        "TopAnswer": false,
                        "Value": "value"
                    }]
                }, {
                    "Cells": [{
                        "Header": false,
                        "Highlighted": false,
                        "TopAnswer": false,
                        "Value": "value"
                    }, {
                        "Header": false,
                        "Highlighted": false,
                        "TopAnswer": false,
                        "Value": "value"
                    }, {
                        "Header": false,
                        "Highlighted": true,
                        "TopAnswer": true,
                        "Value": "value"
                    }, {
                        "Header": false,
                        "Highlighted": false,
                        "TopAnswer": false,
                        "Value": "value"
                    ]}
                  }],
                    "TotalNumberofRows": number
			},
            "DocumentURI": "uri",
            "ScoreAttributes": "score",
            "FeedbackToken": "token"
        },
        {
            "Id": "result-id",
            "Type": "DOCUMENT",
            "AdditionalAttributes": [],
            "DocumentId": "document-id",
            "DocumentTitle": {
                "Text": "title",
                "Highlights": []
            },
            "DocumentExcerpt": {
                "Text": "text",
                "Highlights": [
                    {
                        "BeginOffset": 74,
                        "EndOffset": 77,
                        "TopAnswer": false
                    }
                ]
            },
            "DocumentURI": "uri",
            "DocumentAttributes": [
                {
                    "Key": "_source_uri",
                    "Value": {
                        "StringValue": "uri"
                    }
                }
            ],
            "ScoreAttributes": "score",
            "FeedbackToken": "token",
        }
    ],
    "FacetResults": [],
    "TotalNumberOfResults": number
}
```

## 응답 유형
<a name="response-types"></a>

Amazon Kendra 는 세 가지 유형의 쿼리 응답을 반환합니다.
+ 답변(테이블 답변 포함)
+ 문서
+ 질문 및 답변

응답 유형은 [QueryResultItem](https://docs.aws.amazon.com/kendra/latest/APIReference/API_QueryResultItem.html) 객체의 `Type` 응답 필드에 반환됩니다.

### Answer
<a name="query-answer"></a>

Amazon Kendra 가 응답에서 하나 이상의 질문 답변을 탐지했습니다. 팩토이드는 누가, 무엇을, 언제, 어디를 묻는 질문(예: *가장 가까운 서비스 센터는 어디입니까?*)에 대한 응답입니다. Amazon Kendra 는 쿼리와 가장 일치하는 인덱스의 텍스트를 반환합니다. 텍스트는 `AnswerText` 필드에 있으며 응답 텍스트 내 검색어에 대한 강조 표시 정보를 포함합니다. `AnswerText`는 전체 문서 발췌문과 강조 표시된 텍스트를 포함하고, `DocumentExcerpt`는 잘린(290자) 문서 발췌문과 강조 표시된 텍스트를 포함합니다.

Amazon Kendra 는 문서당 하나의 답변만 반환하며, 이는 신뢰도가 가장 높은 답변입니다. 한 문서에서 여러 개의 답을 반환하려면 문서를 여러 문서로 분할해야 합니다.

```
{
    'AnswerText': {
        'TextWithHighlights': [
            {
                'BeginOffset': 271,
                'EndOffset': 279,
                'TopAnswer': False
            },
            {
                'BeginOffset': 481,
                'EndOffset': 489,
                'TopAnswer': False
            },
            {
                'BeginOffset': 547,
                'EndOffset': 555,
                'TopAnswer': False
            },
            {
                'BeginOffset': 764,
                'EndOffset': 772,
                'TopAnswer': False
            }
        ],
        'Text': 'Asynchronousoperationscan\n''alsoprocess\n''documentsthatareinPDF''format.UsingPDFformatfilesallowsyoutoprocess''multi-page\n''documents.\n''Forinformationabouthow''AmazonTextractrepresents\n''documentsasBlockobjects,
        ''seeDocumentsandBlockObjects.\n''\n''\n''\n''Forinformationaboutdocument''limits,
        seeLimitsinAmazonTextract.\n''\n''\n''\n''TheAmazonTextractsynchronous''operationscanprocessdocumentsstoredinanAmazon\n''S3Bucketoryoucanpass''base64encodedimagebytes.\n''Formoreinformation,
        see''CallingAmazonTextractSynchronousOperations.''Asynchronousoperationsrequireinputdocuments\n''tobesuppliedinanAmazon''S3Bucket.'
    },
    'DocumentExcerpt': {
        'Highlights': [
            {
                'BeginOffset': 0,
                'EndOffset': 300,
                'TopAnswer': False
            }
        ],
        'Text': 'Asynchronousoperationscan\n''alsoprocess\n''documentsthatareinPDF''format.UsingPDFformatfilesallowsyoutoprocess''multi-page\n''documents.\n''ForinformationabouthowAmazon''Textractrepresents\n'''
    },
    'Type': 'ANSWER'
}
```

### 문서
<a name="query-document"></a>

Amazon Kendra 는 검색어와 일치하는 문서에 대해 순위가 매겨진 문서를 반환합니다. 순위는 검색 결과의 정확성 Amazon Kendra 에 대한의 신뢰도를 기반으로 합니다. 일치하는 문서에 대한 정보가 [QueryResultItem](https://docs.aws.amazon.com/kendra/latest/APIReference/API_QueryResultItem.html)에 반환됩니다. 문서의 제목이 들어 있습니다. 발췌문에는 검색 텍스트의 강조 표시 정보와 문서 내 일치하는 텍스트 섹션이 포함되어 있습니다. 일치하는 문서의 URI는 `SourceURI` 문서 속성에 있습니다. 다음 샘플 JSON은 일치하는 문서에 대한 문서 요약을 보여줍니다.

```
{
    'DocumentTitle': {
        'Highlights': [
            {
                'BeginOffset': 7,
                'EndOffset': 15,
                'TopAnswer': False
            },
            {
                'BeginOffset': 97,
                'EndOffset': 105,
                'TopAnswer': False
            }
        ],
        'Text': 'AmazonTextractAPIPermissions: Actions,
        \n''Permissions,
        andResourcesReference-''AmazonTextract'
    },
    'DocumentExcerpt': {
        'Highlights': [
            {
                'BeginOffset': 68,
                'EndOffset': 76,
                'TopAnswer': False
            },
            {
                'BeginOffset': 121,
                'EndOffset': 129,
                'TopAnswer': False
            }
        ],
        'Text': '...LoggingandMonitoring\tMonitoring\n''\tCloudWatchMetricsforAmazonTextract\n''\tLoggingAmazonTextractAPICallswithAWSCloudTrail\n''\tAPIReference\tActions\tAnalyzeDocument\n''\tDetectDocumentText\n''\tGetDocumentAnalysis...'
    },
    'Type': 'DOCUMENT'
}
```

### 질문 및 답변
<a name="query-question-answer"></a>

가 인덱스에서 자주 묻는 질문 중 하나와 질문을 Amazon Kendra 일치시키면 질문과 답변 응답이 반환됩니다. 이 응답에는 [QueryResultItem](https://docs.aws.amazon.com/kendra/latest/APIReference/API_QueryResultItem.html) 필드에 일치하는 질문과 답변이 포함됩니다. 또한 쿼리 문자열에서 감지된 쿼리 용어에 대한 강조 표시 정보도 포함됩니다. 다음 JSON은 질문 및 답변 응답을 보여줍니다. 응답에는 질문 텍스트가 포함되어 있다는 점에 유의하세요.

```
{
    'AnswerText': {
        'TextWithHighlights': [
            
        ],
        'Text': '605feet'
    },
    'DocumentExcerpt': {
        'Highlights': [
            {
                'BeginOffset': 0,
                'EndOffset': 8,
                'TopAnswer': False
            }
        ],
        'Text': '605feet'
    },
    'Type': 'QUESTION_ANSWER',
    'QuestionText': {
        'Highlights': [
            {
                'BeginOffset': 12,
                'EndOffset': 18,
                'TopAnswer': False
            },
            {
                'BeginOffset': 26,
                'EndOffset': 31,
                'TopAnswer': False
            },
            {
                'BeginOffset': 32,
                'EndOffset': 38,
                'TopAnswer': False
            }
        ],
        'Text': 'whatistheheightoftheSpaceNeedle?'
    }
}
```

인덱스에 질문 및 답변 텍스트를 추가하는 방법에 대한 자세한 내용은 [FAQ 생성](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html)을 참조하세요.

# 응답 조정 및 정렬
<a name="tuning-sorting-responses"></a>

**참고**  
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 [인덱스 유형](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)을 참조하세요.

관련성 조정을 통해 검색 관련성에 대한 필드 또는 속성의 영향을 수정할 수 있습니다. 특정 속성 또는 필드를 기준으로 검색 결과를 정렬할 수도 있습니다.

**Topics**
+ [응답 조정](#tuning-responses)
+ [응답 정렬](#sorting-responses)

## 응답 조정
<a name="tuning-responses"></a>

관련성 조정을 통해 검색 관련성에 대한 필드 또는 속성의 영향을 수정할 수 있습니다. 관련성 조정을 빠르게 테스트하려면 [Query](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API를 사용하여 조정 구성을 쿼리에 전달하세요. 그러면 다양한 구성에서 얻은 다양한 검색 결과를 볼 수 있습니다. 콘솔에서는 쿼리 수준의 관련성 조정이 지원되지 않습니다. `StringList` 유형의 필드나 속성도 인덱스 수준에서만 조정할 수 있습니다. 자세한 내용은 [검색 관련성 조정](https://docs.aws.amazon.com/kendra/latest/dg/tuning.html)을 참조하세요.

기본적으로 쿼리 응답은 응답의 각 결과에 대해가 Amazon Kendra 결정하는 관련성 점수를 기준으로 정렬됩니다.

다음 유형의 기본 제공 또는 사용자 지정 속성/필드에 대한 결과를 조정할 수 있습니다.
+ 날짜 값
+ long 값
+ 문자열 값

다음 유형의 속성은 정렬할 수 없습니다.
+ 문자열 목록 값

**문서 결과 순위 지정 및 조정(AWS SDK)**  
`Searchable` 파라미터를 true로 설정하면 문서 메타데이터 구성이 향상됩니다.

쿼리의 속성을 조정하려면 `Query` API의 `DocumentRelevanceOverrideConfigurations` 파라미터를 설정하고 조정할 속성의 이름을 지정하세요.

다음 JSON 예제는 인덱스의 “부서”라는 속성에 대한 조정을 재정의하는 `DocumentRelevanceOverrideConfigurations` 객체를 보여줍니다.

```
"DocumentRelevanceOverrideConfigurations" : [
    "Name": "department",
    "Relevance": {
        "Importance": 1,
        "ValueImportanceMap": {
            "IT": 3,
            "HR": 7
        }
    }
]
```

## 응답 정렬
<a name="sorting-responses"></a>

Amazon Kendra 는 쿼리에서 반환되는 문서에 대한 기준의 일부로 정렬 속성 또는 필드를 사용합니다. 예를 들어, “\$1created\$1at”로 정렬된 쿼리에서 반환된 결과에는 “\$1version”으로 정렬된 쿼리와 동일한 결과가 포함되지 않을 수 있습니다.

기본적으로 쿼리 응답은 응답의 각 결과에 대해가 Amazon Kendra 결정하는 관련성 점수를 기준으로 정렬됩니다. 정렬 순서를 변경하려면 문서 속성을 정렬 가능하게 만든 다음 해당 속성을 사용하여 응답을 정렬 Amazon Kendra 하도록를 구성합니다.

다음 유형의 기본 제공 또는 사용자 지정 속성/필드에 대한 결과를 정렬할 수 있습니다.
+ 날짜 값
+ long 값
+ 문자열 값

다음 유형의 속성은 정렬할 수 없습니다.
+ 문자열 목록 값

각 쿼리에서 하나 이상의 문서 속성을 기준으로 정렬할 수 있습니다. 쿼리는 100개의 결과를 반환합니다. 정렬 속성이 설정된 문서가 100개 미만인 경우, 정렬 속성 값이 없는 문서는 쿼리와의 관련성에 따라 정렬되어 결과 끝에 반환됩니다.

**문서 결과를 정렬하려면(AWS SDK)**

1. [UpdateIndex](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateIndex.html) API를 사용하여 속성을 정렬 가능하게 만들려면 `Sortable` 파라미터를 `true`로 설정합니다. 다음 JSON 예제는 인덱스에 “Department”라는 속성을 추가하고 정렬 가능하게 만드는 데 `DocumentMetadataConfigurationUpdates`를 사용합니다.

   ```
   "DocumentMetadataConfigurationUpdates": [
      {
          "Name": "Department",
          "Type": "STRING_VALUE",
          "Search": {
              "Sortable": "true"
          }
      }
   ]
   ```

1. 쿼리에 정렬 가능한 속성 하나를 사용하려면 [Query](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API의 `SortingConfiguration` 파라미터를 설정합니다. 정렬할 속성의 이름과 응답을 오름차순 또는 내림차순으로 정렬할지 여부를 지정합니다.

   다음 JSON 예제는 “Department” 속성을 기준으로 쿼리 결과를 오름차순으로 정렬하는 데 사용하는 `SortingConfiguration` 파라미터를 보여줍니다.

   ```
      "SortingConfiguration": { 
         "DocumentAttributeKey": "Department",
         "SortOrder": "ASC"
      }
   ```

1. 쿼리에 정렬 가능한 속성을 두 개 이상 사용하려면 [Query](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API의 `SortingConfigurations` 파라미터를 설정합니다. Amazon Kendra 가 결과를 정렬해야 하는 필드를 3개까지 설정할 수 있습니다. 결과를 오름차순 또는 내림차순으로 정렬할지 지정할 수도 있습니다. 정렬 필드 할당량을 늘릴 수 있습니다.

   정렬 구성을 제공하지 않으면에서 결과에 대해 Amazon Kendra 결정하는 관련성을 기준으로 결과가 정렬됩니다. 결과 정렬이 같을 경우 관련성에 따라 결과가 정렬됩니다.

   다음 JSON 예제는 "Name" 및 "Price" 속성을 기준으로 쿼리 결과를 오름차순으로 정렬하는 데 사용하는 `SortingConfigurations` 파라미터를 보여줍니다.

   ```
   "CollapseConfiguration" : {
       "DocumentAttributeKey": "Name",
       "SortingConfigurations": [
           { 
               "DocumentAttributeKey": "Price",
               "SortOrder": "ASC"
           }
       ],
       "MissingAttributeKeyStrategy": "IGNORE"
   }
   ```

**문서 결과 정렬 (콘솔)**
**참고**  
다중 속성 정렬은 현재 AWS Management Console에서 지원되지 않습니다.

1. 콘솔에서 속성을 정렬 가능하게 만들려면 속성 정의에서 **정렬 가능**을 선택합니다. 속성을 생성할 때 속성을 정렬 가능하게 만들거나 나중에 수정할 수 있습니다.

1. 콘솔에서 쿼리 응답을 정렬하려면 **정렬** 메뉴에서 응답을 정렬할 속성을 선택합니다. 데이터소스 구성 중에 정렬 가능으로 표시된 속성만 목록에 표시됩니다.

# 쿼리 결과 축소/확대
<a name="expand-collapse-query-results"></a>

**참고**  
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 [인덱스 유형](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)을 참조하세요.

 Amazon Kendra 데이터에 연결하면 , `_document_title` `_created_at`및 같은 [문서 메타데이터 속성을](https://docs.aws.amazon.com/kendra/latest/dg/hiw-document-attributes.html) 크롤링`_document_id`하고 이러한 속성 또는 필드를 사용하여 쿼리 시간 동안 고급 검색 기능을 제공합니다.

Amazon Kendra의 쿼리 결과 축소 및 확장 기능을 사용하면 공통 문서 속성을 사용하여 검색 결과를 그룹화하고 지정된 기본 문서 아래에 축소되거나 부분적으로 확장된 검색 결과를 표시할 수 있습니다.

**참고**  
쿼리 결과 축소 및 확장 기능은 현재 [Amazon Kendra API](https://docs.aws.amazon.com/kendra/latest/APIReference/welcome.html)를 통해서만 사용할 수 있습니다.

이는 다음과 같은 검색 상황에서 유용합니다.
+ 인덱스 내 문서에는 여러 버전의 콘텐츠가 있습니다. 최종 사용자가 인덱스를 쿼리할 때는 중복 항목이 숨겨지거나 접힌 상태로 가장 관련성이 높은 문서 버전을 보길 원할 것입니다. 예를 들어, 인덱스에 'NYC 퇴사 정책'이라는 문서의 여러 버전이 포함되어 있는 경우 '유형' 속성/필드를 사용하여 특정 그룹 'HR' 및 '법률'에 맞게 문서를 축소하도록 선택할 수 있습니다.  
![\[예제 1.\]](http://docs.aws.amazon.com/ko_kr/kendra/latest/dg/images/expand-collapse-1.png)
+ 인덱스에는 제품 인벤토리와 같이 한 종류의 품목 또는 객체에 대한 고유 정보로 구성된 여러 문서가 포함되어 있습니다. 항목 정보를 편리하게 캡처하고 정렬하려면 최종 사용자가 항목 또는 객체로 연결된 모든 문서를 하나의 검색 결과로 액세스할 수 있도록 해야 합니다. 아래 예에서 고객이 '애니멀 프린트 셔츠'를 검색하면 이름별로 그룹화되고 가격 오름차순으로 정렬된 결과가 나타납니다.  
![\[예제 2.\]](http://docs.aws.amazon.com/ko_kr/kendra/latest/dg/images/expand-collapse-2.png)

## 결과 축소
<a name="expand-results"></a>

유사하거나 관련된 문서를 함께 그룹화하려면 축소할 속성을 지정해야 합니다. 예를 들어, 문서를 `_category`로 축소/그룹화할 수 있습니다. 이렇게 하려면 [쿼리 API](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html)를 호출하고 [CollapConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CollapseConfiguration.html) 객체를 사용하여 축소할 `DocumentAttributeKey`를 지정하세요. `DocumentAttributeKey`는 검색 결과를 축소할 필드를 제어합니다. 지원되는 속성 키 필드에는 `String` 및 `Number`이 포함됩니다. `String list` 및 `Date` 유형은 지원되지 않습니다.

## 정렬 순서를 사용하여 기본 문서 선택
<a name="primary-document"></a>

축소된 그룹에 표시할 기본 문서를 구성하려면 [CollapseConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CollapseConfiguration.html) 아래에 있는 `SortingConfigurations` 파라미터를 사용합니다. 예를 들어, 문서의 최신 버전을 가져오려면 축소된 각 그룹을 `_version`을 기준으로 정렬합니다. `SortingConfigurations`를 사용하여 정렬 기준으로 삼을 속성/필드를 최대 3개까지 지정하고 각 속성/필드의 정렬 순서를 지정할 수 있습니다. 정렬 속성 수에 대한 할당량 증가를 요청할 수 있습니다.

기본적으로는 응답의 각 결과에 대해 결정한 관련성 점수를 기준으로 쿼리 응답을 Amazon Kendra 정렬합니다. 기본 정렬 순서를 변경하려면 문서 속성을 정렬 가능하게 만든 다음 이러한 속성을 사용하여 응답을 정렬 Amazon Kendra 하도록를 구성합니다. 자세한 내용은 [응답 정렬](https://docs.aws.amazon.com/kendra/latest/dg/tuning-sorting-responses.html#sorting-responses)을 참조하세요.

## 누락된 문서 키 전략
<a name="missing-doc-key"></a>

문서에 축소 속성 값이 없는 경우 Amazon Kendra 는 다음 세 가지 사용자 지정 옵션을 제공합니다.
+ 한 그룹에서 값이 null이거나 누락된 모든 문서를 `COLLAPSE`하기로 선택합니다. 기본 구성입니다.
+ 값이 null이거나 누락된 문서를 `IGNORE`하기로 선택합니다. 무시된 문서는 쿼리 결과에 표시되지 않습니다.
+ 값이 null이거나 누락된 각 문서를 하나의 고유한 그룹으로 `EXPAND`하기로 선택합니다.

## 결과 확대
<a name="expanding-results"></a>

[CollapseConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CollapseConfiguration.html) 객체의 `Expand` 파라미터를 사용하여 축소된 검색 결과 그룹을 확장할지 여부를 선택할 수 있습니다. 확장된 결과에는 그룹의 기본 문서를 선택할 때 사용한 것과 동일한 정렬 순서가 유지됩니다.

축소된 검색 결과 그룹의 수를 확장하도록 구성하려면 [ExpandConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_ExpandConfiguration.html) 객체의 `MaxResultItemstoExpand` 파라미터를 사용합니다. 예를 들어 이 값을 10으로 설정하면 100개의 결과 그룹 중 처음 10개만 확장 기능을 사용할 수 있습니다.

축소된 기본 문서당 표시할 확장된 결과 수를 구성하려면 `MaxExpandResultsPerItem` 파라미터를 사용하세요. 예를 들어 이 값을 3으로 설정하면 축소된 그룹당 최대 3개의 결과가 표시됩니다.

## 다른 Amazon Kendra 기능과의 상호 작용
<a name="cross-feature-interactions"></a>
+ 결과를 축소 및 확장해도 패싯 수가 변경되거나 표시된 총 결과 수에는 영향을 주지 않습니다.
+ Amazon Kendra [추천 검색 결과](https://docs.aws.amazon.com/kendra/latest/dg/featured-results.html)는 사용자가 구성한 축소 필드와 필드 값이 같더라도 축소되지 않습니다.
+ 결과 축소 및 확장은 `DOCUMENT` 유형의 결과에만 적용됩니다.