

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Memperbarui tesaurus
<a name="index-synonyms-update"></a>

Anda dapat mengubah konfigurasi tesaurus setelah dibuat. Anda dapat mengubah detail seperti nama tesaurus dan informasi IAM. Anda juga dapat mengubah lokasi path file tesaurus Amazon S3. Jika Anda mengubah jalur ke file tesaurus, Amazon Kendra ganti tesaurus yang ada dengan tesaurus yang ditentukan di jalur yang diperbarui. 

Diperlukan waktu hingga 30 menit untuk melihat efek dari file tesaurus Anda yang diperbarui. 

**catatan**  
Jika ada kesalahan validasi atau sintaks dalam file tesaurus, file tesaurus yang diunggah sebelumnya akan dipertahankan. 

Prosedur berikut menunjukkan cara mengubah detail tesaurus. 

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

**Untuk mengubah detail tesaurus**

1. Di panel navigasi kiri, di bawah indeks yang ingin Anda ubah, pilih **Sinonim**. 

1. Pada halaman **Sinonim**, pilih tesaurus yang ingin Anda ubah dan kemudian pilih **Edit**. 

1. Pada halaman **Memperbarui tesaurus**, perbarui detail tesaurus. 

1. (Opsional) Pilih **Ubah jalur file tesaurus dan kemudian tentukan Amazon S3 jalur** ke file tesaurus baru. File tesaurus yang ada digantikan oleh file yang Anda tentukan. Jika Anda tidak mengubah jalur, Amazon Kendra muat ulang tesaurus dari jalur yang ada. 

   Jika Anda memilih **Simpan file tesaurus saat ini, Amazon Kendra tidak memuat ulang file** tesaurus. 

1. Pilih **Simpan** untuk menyimpan konfigurasi. 

Anda juga dapat memuat ulang tesaurus dari path tesaurus yang ada. 

**Untuk memuat ulang tesaurus dari path yang ada**

1. Di panel navigasi kiri, di bawah indeks yang ingin Anda ubah, pilih **Sinonim**. 

1. **Pada halaman **Sinonim**, pilih tesaurus yang ingin dimuat ulang dan kemudian pilih Refresh.** 

1. Pada halaman **Reload thesaurus file**, konfirmasikan bahwa Anda ingin me-refresh file tesaurus. 

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

Untuk memperbarui tesaurus, panggil `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.");
  }
}
```

------