

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

# シソーラスを更新する
<a name="index-synonyms-update"></a>

シソーラスの作成後に設定を変更することができます。シソーラス名や IAM 情報などの詳細を変更できます。シソーラスファイル Amazon S3 パスの場所を変更することもできます。シソーラスファイルへのパスを変更すると、 Amazon Kendra は既存のシソーラスを、更新されたパスで指定されたシソーラスに置き換えます。

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

**注記**  
シソーラスファイルに検証エラーまたは構文エラーがある場合、以前にアップロードされたシソーラスファイルは保持されます。

以下の手順は、シソーラスの詳細を変更する方法を示しています。

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

**シソーラスの詳細を変更するには**

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

1. **[Synonym]** (シノニム) ページで、変更するシソーラスを選択し、**[Edit]** (編集) を選択します。

1. **[Update thesaurus]** (シソーラスを更新) ページで、シソーラスの詳細を更新します。

1. (オプション) **シソーラスファイルパスを変更**を選択し、新しいシソーラスファイルへの Amazon S3 パスを指定します。既存のシソーラスファイルは、指定したファイルに置き換えられます。パスを変更しない場合、 は既存のパスからシソーラス Amazon Kendra を再ロードします。

   **現在のシソーラスファイルを保持** を選択した場合、 Amazon Kendra はシソーラスファイルを再ロードしません。

1. **[Save]** (保存) を選択して設定を保存します。

既存のシソーラスパスからシソーラスをリロードすることもできます。

**既存のパスからシソーラスをリロードするには**

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

1. **[シノニム]** ページで、リロードするシソーラスを選択し、**[更新]** を選択します。

1. **[シソーラスファイルのリロード]** ページで、シソーラスファイルを更新することを確認します。

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

シソーラスを更新するには、`update-thesaurus` を呼び出します。

```
aws kendra update-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
```

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

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

kendra = boto3.client("kendra")

print("Update a thesaurus")

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

thesaurus_id = "thesaurus-id"
index_id = "index-id"

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

try:
    kendra.update_thesaurus(
        Id = thesaurus_id,
        IndexId = index_id,
        Description = thesaurus_description,
        Name = thesaurus_name,
        RoleArn = thesaurus_role_arn,
        SourceS3Path = source_s3_path
    )
    
    print("Wait for Kendra to update the thesaurus.")

    while True:
        # Get thesaurus description
        thesaurus_description = kendra.describe_thesaurus(
            Id = thesaurus_id,
            IndexId = index_id
        )
        # If status is not UPDATING quit
        status = thesaurus_description["Status"]
        print("Updating thesaurus. Status: " + status)
        if status != "UPDATING":
            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.UpdateThesaurusRequest;
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 UpdateThesaurusExample {

  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 thesaurusId = "thesaurus-id";
    String indexId = "index-id";

    UpdateThesaurusRequest updateThesaurusRequest = UpdateThesaurusRequest
        .builder()
        .id(thesaurusId)
        .indexId(indexId)
        .name(thesaurusName)
        .description(thesaurusDescription)
        .roleArn(thesaurusRoleArn)
        .sourceS3Path(S3Path.builder()
            .bucket(s3BucketName)
            .key(s3Key)
            .build())
        .build();
    kendra.updateThesaurus(updateThesaurusRequest);

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

    // a new source s3 path requires re-consumption by Kendra 
    // and so can take as long as a Create Thesaurus operation
    while (true) {
      DescribeThesaurusRequest describeThesaurusRequest = DescribeThesaurusRequest.builder()
          .id(thesaurusId)
          .indexId(indexId)
          .build();
      DescribeThesaurusResponse describeThesaurusResponse = kendra.describeThesaurus(describeThesaurusRequest);
      ThesaurusStatus status = describeThesaurusResponse.status();
      if (status != ThesaurusStatus.UPDATING) {
        break;
      }

      TimeUnit.SECONDS.sleep(60);
    }

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

------