

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# シソーラスをインデックスに追加する
<a name="index-synonyms-adding-thesaurus-file"></a>

以下の手順は、シノニムを含むシソーラスファイルをインデックスに追加する方法を示しています。更新されたシソーラスファイルの効果を確認するのに最大 30 分かかる場合があります。シソーラスファイルの詳細については、[シソーラスファイルの作成](index-synonyms-creating-thesaurus-file.md) を参照してください。

------
#### [ Console ]

**シソーラスを追加するには**

1. 左側のナビゲーションペインで、シノニムのリスト、シソーラスを追加するインデックスで、**[Synonyms]** (シノニム) を選択します。

1. **[Synonym]** (シノニム) ページで、**[Add Thesaurus]** (シソーラスを追加) を選択します。

1. **[Define thesaurus]** (シソーラスを定義) で、シソーラスに名前とオプションの説明を付けます。

1. **シソーラス設定**で、シソーラスファイルへの Amazon S3 パスを指定します。ファイルは 5 MB より小さくなければなりません。

1. **IAM ロール**の場合は、ロールを選択するか、**新しいロールの作成**を選択し、ロール名を指定して新しいロールを作成します。 はこのロール Amazon Kendra を使用してユーザーに代わって Amazon S3 リソースにアクセスします。IAM ロールには、プレフィックス「AmazonKendra-」があります。

1. **[Save]** (保存) をクリックして設定を保存し、シソーラスを追加します。シソーラスが取り込まれると、そのシソーラスがアクティブになり、結果でシノニムが強調表示されます。シソーラスファイルの効果を確認するのに最大 30 分かかる場合があります。

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

を使用してインデックスにシサラスを追加するには AWS CLI、 を呼び出します`create-thesaurus`。

```
aws kendra create-thesaurus \
--index-id {{index-id}} \
--name "{{thesaurus-name}}" \
--description "{{thesaurus-description}}" \
--source-s3-path "Bucket={{bucket-name}},Key={{thesaurus/synonyms.txt}}" \
--role-arn {{role-arn}}
```

`list-thesauri` を呼び出してシソーラスのリストを表示します。

```
aws kendra list-thesauri \
--index-id {{index-id}}
```

シソーラスの詳細を表示するには、`describe-thesaurus` を呼び出します。

```
aws kendra describe-thesaurus \
--index-id {{index-id}} \
--index-id {{thesaurus-id}}
```

シソーラスファイルの効果を確認するのに最大 30 分かかる場合があります。

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

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

kendra = boto3.client("kendra")

print("Create a thesaurus")

thesaurus_name = "{{thesaurus-name}}"
thesaurus_description = "{{thesaurus-description}}"
thesaurus_role_arn = "{{role-arn}}"

index_id = "{{index-id}}"

s3_bucket_name = "{{bucket-name}}"
s3_key = "{{thesaurus-file}}"
source_s3_path= {
    'Bucket': s3_bucket_name,
    'Key': s3_key
}

try:
    thesaurus_response = kendra.create_thesaurus(
        Description = thesaurus_description,
        Name = thesaurus_name,
        RoleArn = thesaurus_role_arn,
        IndexId = index_id,
        SourceS3Path = source_s3_path
    )

    pprint.pprint(thesaurus_response)

    thesaurus_id = thesaurus_response["Id"]

    print("Wait for Kendra to create the thesaurus.")

    while True:
        # Get thesaurus description
        thesaurus_description = kendra.describe_thesaurus(
            Id = thesaurus_id,
            IndexId = index_id
        )
        # If status is not CREATING quit
        status = thesaurus_description["Status"]
        print("Creating thesaurus. Status: " + status)
        if status != "CREATING":
            break
        time.sleep(60)

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

print("Program ends.")
```

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

```
package com.amazonaws.kendra;

import software.amazon.awssdk.services.kendra.KendraClient;
import software.amazon.awssdk.services.kendra.model.CreateThesaurusRequest;
import software.amazon.awssdk.services.kendra.model.CreateThesaurusResponse;
import software.amazon.awssdk.services.kendra.model.DescribeThesaurusRequest;
import software.amazon.awssdk.services.kendra.model.DescribeThesaurusResponse;
import software.amazon.awssdk.services.kendra.model.S3Path;
import software.amazon.awssdk.services.kendra.model.ThesaurusStatus;

public class CreateThesaurusExample {

  public static void main(String[] args) throws InterruptedException {

    KendraClient kendra = KendraClient.builder().build();

    String thesaurusName = "{{thesaurus-name}}";
    String thesaurusDescription = "{{thesaurus-description}}";
    String thesaurusRoleArn = "{{role-arn}}";

    String s3BucketName = "{{bucket-name}}";
    String s3Key = "{{thesaurus-file}}";
    String indexId = "{{index-id}}";

    System.out.println(String.format("Creating a thesaurus named %s", thesaurusName));
    CreateThesaurusRequest createThesaurusRequest = CreateThesaurusRequest
        .builder()
        .name(thesaurusName)
        .indexId(indexId)
        .description(thesaurusDescription)
        .roleArn(thesaurusRoleArn)
        .sourceS3Path(S3Path.builder()
            .bucket(s3BucketName)
            .key(s3Key)
            .build())
        .build();
    CreateThesaurusResponse createThesaurusResponse = kendra.createThesaurus(createThesaurusRequest);
    System.out.println(String.format("Thesaurus response %s", createThesaurusResponse));

    String thesaurusId = createThesaurusResponse.id();

    System.out.println(String.format("Waiting until the thesaurus with ID %s is created.", thesaurusId));

    while (true) {
      DescribeThesaurusRequest describeThesaurusRequest = DescribeThesaurusRequest.builder()
          .id(thesaurusId)
          .indexId(indexId)
          .build();
      DescribeThesaurusResponse describeThesaurusResponse = kendra.describeThesaurus(describeThesaurusRequest);
      ThesaurusStatus status = describeThesaurusResponse.status();
      if (status != ThesaurusStatus.CREATING) {
        break;
      }

      TimeUnit.SECONDS.sleep(60);
    }

    System.out.println("Thesaurus creation is complete.");
  }
}
```

------