

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將常見問答集 FAQs) 新增至索引
<a name="in-creating-faq"></a>

**注意**  
功能支援會因索引類型和正在使用的搜尋 API 而有所不同。若要查看您正在使用的索引類型和搜尋 API 是否支援此功能，請參閱[索引類型](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)。

您可以使用主控台或 [CreateFaq](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateFaq.html) API，直接將常見問答集 (FAQs) 新增至您的索引。將FAQs新增至索引是一種非同步操作。您可以將常見問答集的資料放在存放在 儲存 Amazon Simple Storage Service 貯體的檔案中。您可以使用 CSV 或 JSON 檔案做為常見問答集的輸入：
+ 基本 CSV - CSV 檔案，其中每一列都包含問題、答案和選用的來源 URI。
+ 自訂 CSV - CSV 檔案，其中包含自訂欄位/屬性的問題、答案和標頭，可用於構面、顯示或排序常見問答集回應。您也可以定義存取控制欄位，將常見問答集回應限制為允許查看常見問答集回應的特定使用者和群組。
+ JSON—JSON 檔案，其中包含問題、答案和自訂欄位/屬性，可用於構面、顯示或排序常見問答集回應。您也可以定義存取控制欄位，將常見問答集回應限制為允許查看常見問答集回應的特定使用者和群組。

例如，以下是基本 CSV 檔案，提供有關美國華盛頓州斯波坎市和美國密蘇里州山景檢視免費診所問題的解答。

```
How many free clinics are in Spokane WA?, 13
How many free clinics are there in Mountain View Missouri?, 7
```

**注意**  
常見問答集檔案必須是 UTF-8-encoded的檔案。

**Topics**
+ [建立常見問答集檔案的索引欄位](#in-custom-fields-faq)
+ [基本 CSV 檔案](#faq-basic-csv)
+ [自訂 CSV 檔案](#faq-custom-csv)
+ [JSON 檔案](#faq-custom-json)
+ [使用您的常見問答集檔案](#using-faq-file)
+ [英文以外語言的常見問答集檔案](#faq-languages)

## 建立常見問答集檔案的索引欄位
<a name="in-custom-fields-faq"></a>

**注意**  
功能支援會因索引類型和正在使用的搜尋 API 而有所不同。若要查看您正在使用的索引類型和搜尋 API 是否支援此功能，請參閱[索引類型](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)。

當您使用[自訂 CSV](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html#faq-custom-csv) 或 [JSON](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html#faq-custom-json) 檔案進行輸入時，您可以為常見問答集問題宣告自訂欄位。例如，您可以建立自訂欄位，將每個常見問答集問題指派給業務單位。在回應中傳回 FAQ 時，您可以使用 部門做為構面，將搜尋縮小為僅限「HR」或「財務」。

自訂欄位必須對應至索引欄位。在 主控台中，您可以使用**面向定義**頁面來建立索引欄位。使用 API 時，您必須先使用 [UpdateIndex](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateIndex.html) API 建立索引欄位。

常見問答集檔案中的欄位/屬性類型必須符合相關聯的索引欄位類型。例如，「部門」欄位是`STRING_LIST`類型欄位。因此，您必須提供部門欄位的值做為常見問答集檔案中的字串清單。您可以使用 主控台中的**面向定義**頁面或使用 [DescribeIndex](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeIndex.html) API 來檢查索引欄位的類型。

當您建立映射到自訂屬性的索引欄位時，您可以標記它可顯示、可面向或可排序。您無法將自訂屬性設為可搜尋。

除了自訂屬性之外，您也可以使用 Amazon Kendra 自訂 CSV 或 JSON 檔案中的預留或常用欄位。如需詳細資訊，請參閱[文件屬性或欄位](https://docs.aws.amazon.com/kendra/latest/dg/hiw-document-attributes.html)。

## 基本 CSV 檔案
<a name="faq-basic-csv"></a>

當您想要為FAQs使用簡單的結構時，請使用基本 CSV 檔案。在基本 CSV 檔案中，每一列有兩個或三個欄位：問題、答案和選用來源 URI，指向具有更多資訊的文件。

檔案的內容必須遵循[逗號分隔值 (CSV) 檔案的 RFC 4180 常見格式和 MIME 類型](https://tools.ietf.org/html/rfc4180)。

以下是基本 CSV 格式的常見問答集檔案。

```
How many free clinics are in Spokane WA?, 13, https://s3.region.company.com/bucket-name/directory/faq.csv
How many free clinics are there in Mountain View Missouri?, 7, https://s3.region.company.com/bucket-name/directory/faq.csv
```

## 自訂 CSV 檔案
<a name="faq-custom-csv"></a>

當您想要將自訂欄位/屬性新增至常見問答集問題時，請使用自訂 CSV 檔案。對於自訂 CSV 檔案，您可以使用 CSV 檔案中的標頭列來定義其他屬性。

CSV 檔案必須包含下列兩個必要欄位：
+ `_question`- 常見問答集
+ `_answer`- 常見問題的答案

您的自訂 CSV 檔案可以同時包含 Amazon Kendra 預留欄位 (`_faq_id`、`_document_title`、 `_data_source_id`和 除外`_file_type`) 和任何自訂欄位。

 以下是自訂 CSV 檔案的範例。

```
_question,_answer,_last_updated_at,custom_string
How many free clinics are in Spokane WA?, 13, 2012-03-25T12:30:10+01:00, Note: Some free clinics require you to meet certain criteria in order to use their services
How many free clinics are there in Mountain View Missouri?, 7, 2012-03-25T12:30:10+01:00, Note: Some free clinics require you to meet certain criteria in order to use their services
```

自訂檔案的內容必須遵循[逗號分隔值 (CSV) 檔案的 RFC 4180 常見格式和 MIME 類型](https://tools.ietf.org/html/rfc4180)。

以下列出自訂欄位的類型：
+ 日期 - ISO 8601 編碼的日期和時間值。

  例如，2012-03-25T12:30:10\$101:00 表示以 ISO 8601 格式記錄的時間：歐洲中部時間 2012 年 3 月 25 日 12:30 (加 10 秒)。
+ 長 - 數字，例如 `1234`。
+ String - 字串值。如果您的字串包含逗號，請以雙引號 (") 括住整個值 （例如 `"custom attribute, and more"`)。
+ 字串清單 - 字串值的清單。列出逗號分隔清單中以引號 (") 括住的值 （例如 `"item1, item2, item3"`)。如果清單只包含單一項目，您可以省略引號 （例如 `item1`)。

自訂 CSV 檔案可包含使用者存取控制欄位。您可以使用這些欄位，將常見問答集的存取權限制在特定使用者和群組。若要篩選使用者內容，使用者必須在查詢中提供使用者和群組資訊。否則，會傳回所有相關FAQs。如需詳細資訊，請參閱[使用者內容篩選](https://docs.aws.amazon.com/kendra/latest/dg/user-context-filter.html)。

以下列出FAQs的使用者內容篩選條件：
+ `_acl_user_allow`- 允許清單中的使用者可以在查詢回應中查看常見問答集。常見問答集不會傳回給其他使用者。
+ `_acl_user_deny`- 拒絕清單中的使用者看不到查詢回應中的常見問答集。當與查詢相關時，常見問答集會傳回給所有其他使用者。
+ `_acl_group_allow`—身為允許群組成員的使用者可以在查詢回應中查看常見問答集。常見問答集不會傳回給屬於另一個群組的使用者。
+ `_acl_group_deny`- 拒絕群組成員的使用者在查詢回應中看不到常見問答集。常見問答集會在與查詢相關時傳回給其他群組。

在以引號括住的逗號分隔清單中提供允許和拒絕清單的值 （例如，`"user1,user2,user3"`)。您可以在允許清單或拒絕清單中包含使用者或群組，但不能同時包含個別允許相同使用者但也拒絕群組的使用者。如果您在兩者中都包含使用者或群組，您會收到錯誤。

以下是具有使用者內容資訊的自訂 CSV 檔案範例。

```
_question, _answer, _acl_user_allow, _acl_user_deny, _acl_group_allow, _acl_group_deny
How many free clinics are in Spokane WA?, 13, "userID6201,userID7552", "userID1001,userID2020", groupBasicPlusRate, groupPremiumRate
```

## JSON 檔案
<a name="faq-custom-json"></a>

您可以使用 JSON 檔案來提供索引的問題、答案和欄位。您可以將任何 Amazon Kendra 預留欄位或自訂欄位新增至常見問答集。

以下是 JSON 檔案的結構描述。

```
{
    "SchemaVersion": 1,
    "FaqDocuments": [
        {
            "Question": string,
            "Answer": string,
            "Attributes": {
                string: object
                additional attributes
            },
            "AccessControlList": [
               {
                   "Name": string,
                   "Type": enum( "GROUP" | "USER" ),
                   "Access": enum( "ALLOW" | "DENY" )
               },
               additional user context
            ]
        },
        additional FAQ documents
    ]
}
```

下列範例 JSON 檔案顯示兩份常見問答集文件。其中一個文件只有必要的問題和答案。其他文件也包含其他欄位和使用者內容或存取控制資訊。

```
{
    "SchemaVersion": 1,
    "FaqDocuments": [
        {
            "Question": "How many free clinics are in Spokane WA?",
            "Answer": "13"
        },
        {
            "Question": "How many free clinics are there in Mountain View Missouri?",
            "Answer": "7",
            "Attributes": {
                "_source_uri": "https://s3.region.company.com/bucket-name/directory/faq.csv",
                "_category": "Charitable Clinics"
            },
            "AccessControlList": [
               {
                   "Name": "user@amazon.com",
                   "Type": "USER",
                   "Access": "ALLOW"
               },
               {
                   "Name": "Admin",
                   "Type": "GROUP",
                   "Access": "ALLOW"
               }
            ]
        }
    ]
}
```

以下列出自訂欄位的類型：
+ Date - 具有 ISO 8601 編碼日期和時間值的 JSON 字串值。例如，2012-03-25T12:30:10\$101:00 表示以 ISO 8601 格式記錄的時間：歐洲中部時間 2012 年 3 月 25 日 12:30 (加 10 秒)。
+ 長 - JSON 數字值，例如 `1234`。
+ 字串 - JSON 字串值 （例如 `"custom attribute"`)。
+ 字串清單 - 字串值的 JSON 陣列 （例如，`["item1,item2,item3"]`)。

JSON 檔案可包含使用者存取控制欄位。您可以使用這些欄位，將常見問答集的存取權限制在特定使用者和群組。若要篩選使用者內容，使用者必須在查詢中提供使用者和群組資訊。否則，會傳回所有相關FAQs。如需詳細資訊，請參閱[使用者內容篩選](https://docs.aws.amazon.com/kendra/latest/dg/user-context-filter.html)。

您可以在允許清單或拒絕清單中包含使用者或群組，但不能同時包含個別允許相同使用者但也拒絕群組的使用者。如果您在兩者中都包含使用者或群組，您會收到錯誤。

以下是包含 JSON 常見問答集使用者存取控制的範例。

```
"AccessControlList": [
                {
                    "Name": "group or user name",
                    "Type": "GROUP | USER",
                    "Access": "ALLOW | DENY"
                },
                additional user context
            ]
```

## 使用您的常見問答集檔案
<a name="using-faq-file"></a>

將常見問答集輸入檔案存放在 S3 儲存貯體之後，您可以使用 主控台或 `CreateFaq` API 將問題和答案放入您的索引。如果您想要更新常見問答集，請刪除常見問答集並再次建立。您可以使用 `DeleteFaq` API 來刪除常見問答集。

您必須提供可存取包含來源檔案之 S3 儲存貯體 IAM 的角色。您可以在 主控台或 `RoleArn` 參數中指定角色。以下是將常見問答集檔案新增至索引的範例。

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

```
import boto3

kendra = boto3.client("kendra")

# Provide the index ID
index_id = "index-id"
# Provide the IAM role ARN required to index documents in an S3 bucket
role_arn = "arn:aws:iam::${accountId}:role/${roleName}"

# Provide the S3 bucket path information to the FAQ file
faq_path = {
    "Bucket": "bucket-name",
    "Key": "FreeClinicsUSA.csv"
}

response = kendra.create_faq(
    S3Path =  faq_path,
    Name = "FreeClinicsUSA",
    IndexId = index_id,
    RoleArn = role_arn
)

print(response)
```

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

```
package com.amazonaws.kendra;

import software.amazon.awssdk.services.kendra.KendraClient;
import software.amazon.awssdk.services.kendra.model.CreateFaqRequest;
import software.amazon.awssdk.services.kendra.model.CreateFaqResponse;
import software.amazon.awssdk.services.kendra.model.S3Path;

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

        String indexId = "yourIndexId";
        String roleArn = "your role for accessing S3 files";

        CreateFaqRequest createFaqRequest = CreateFaqRequest
            .builder()
            .indexId(indexId)
            .name("FreeClinicsUSA")
            .roleArn(roleArn)
            .s3Path(
                S3Path
                    .builder()
                    .bucket("amzn-s3-demo-bucket")
                    .key("FreeClinicsUSA.csv")
                    .build())
            .build();

        CreateFaqResponse response = kendra.createFaq(createFaqRequest);

        System.out.println(String.format("The result of creating FAQ: %s", response));

    }
}
```

------

## 英文以外語言的常見問答集檔案
<a name="faq-languages"></a>

您可以用支援的語言為常見問答集編製索引。如果您未指定語言，預設會以英文為FAQs編製 Amazon Kendra 索引。您可以在呼叫 [CreateFaq](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateFaq.html) 操作時指定語言代碼，也可以在常見問答集中繼資料中包含常見問答集的語言代碼做為欄位。如果常見問答集在其中繼資料欄位中指定的中繼資料中沒有語言代碼，則常見問答集會使用您呼叫 `CreateFAQ`操作時指定的語言代碼來編製索引。若要在主控台中以支援的語言編製常見問答集文件索引，請前往**FAQs**，然後選取**新增常見問答集**。您可以從下拉式清單中選擇語言****。