シソーラスを更新する - Amazon Kendra

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

シソーラスを更新する

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

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

注記

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

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

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

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

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

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

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

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

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

既存のパスからシソーラスをリロードするには
  1. 左側のナビゲーションペインの変更するインデックスで、[Synonyms] (シノニム) を選択します。

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

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

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."); } }