

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

# クエリの提案
<a name="query-suggestions"></a>

**注記**  
機能のサポートは、使用されているインデックスタイプと検索 API によって異なります。使用しているインデックスタイプと検索 API でこの機能がサポートされているかどうかを確認するには、[インデックスのタイプ](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)に関するページを参照してください。

Amazon Kendra の *[クエリの提案]* は、ユーザーが検索クエリをより速く入力し、検索をガイドするのに役立ちます。

Amazon Kendra は、次のいずれかに基づいてユーザーに関連するクエリを提案します。
+ クエリ履歴またはクエリログでよく使われるクエリ
+ ドキュメントフィールド/属性の内容

`SuggestionTypes` を `QUERY` または `DOCUMENT_ATTRIBUTES` のいずれかを設定し、[https://docs.aws.amazon.com/kendra/latest/APIReference/API_GetQuerySuggestions.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_GetQuerySuggestions.html) を呼び出すことにより、クエリ履歴またはドキュメントフィールドを使用する際の優先順位を設定できます。デフォルトでは、 はクエリ履歴 Amazon Kendra を使用して提案に基づいています。を呼び出したときにクエリ履歴とドキュメントフィールドの両方がアクティブ化[https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateQuerySuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateQuerySuggestionsConfig.html)されていて、ドキュメントフィールドを使用する`SuggestionTypes`ように設定していない場合、 はクエリ履歴 Amazon Kendra を使用します。

コンソールを使用すると、クエリの提案をクエリ履歴またはドキュメントフィールドのいずれかに基づくことができます。最初にインデックスを選択し、ナビゲーションメニューの **[エンリッチメント]** で **[クエリの提案]** を選択します。次に、**[クエリの提案の設定]** を選択します。クエリの提案を設定すると、検索コンソールが表示され、右側のパネルで **[クエリ履歴]** または **[ドキュメントフィールド]** のいずれかを選択すると、検索バーに検索クエリを入力できます。

デフォルトでは、クエリ履歴とドキュメントフィールドを使用したクエリの提案、はどちらも追加料金なしで有効化されています。これらのタイプのクエリの提案は、`UpdateQuerySuggestionsConfig` API を使用していつでも無効化できます。クエリ履歴に基づくクエリの提案を無効にするには、`UpdateQuerySuggestionsConfig` を呼び出す際に `Mode` を `DISABLED` に設定します。ドキュメントフィールドに基づくクエリの提案を無効にするには、ドキュメントフィールド設定で `AttributeSuggestionsMode` を `INACTIVE` に設定し、次に `UpdateQuerySuggestionsConfig>` を呼び出します。コンソールを使用している場合は、**[クエリの提案の設定]** でクエリの提案を無効にできます。

クエリ提案では大文字と小文字が区別されません。 はクエリプレフィックスと提案されたクエリを小文字 Amazon Kendra に変換し、すべての一重引用符と二重引用符を無視し、複数の空白文字を 1 つのスペースに置き換えます。 Amazon Kendra は、他のすべての特殊文字をそのまま使用します。ユーザーが 2 文字未満または 60 文字を超えると、候補は表示 Amazon Kendra されません。

**Topics**
+ [クエリ履歴を使用したクエリの提案](#query-suggestions-history)
+ [ドキュメントフィールドを使用したクエリの提案](#query-suggestions-doc-fields)
+ [特定のクエリやドキュメントフィールドの内容を提案からブロックする](#query-suggestions-blocklist)

## クエリ履歴を使用したクエリの提案
<a name="query-suggestions-history"></a>

**注記**  
機能のサポートは、使用されているインデックスタイプと検索 API によって異なります。使用しているインデックスタイプと検索 API でこの機能がサポートされているかどうかを確認するには、[インデックスのタイプ](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)に関するページを参照してください。

**Topics**
+ [提案用のクエリを選択するための設定](#query-suggestions-history-settings)
+ [クエリ履歴を保持したままで提案を消去する](#query-suggestions-history-clear)
+ [提案がありません。](#query-suggestions-history-none)

クエリ履歴またはクエリログの一般的なクエリに基づいて、ユーザーに関連するクエリを提案することを選択できます。 は、ユーザーが検索するすべてのクエリ Amazon Kendra を使用し、これらのクエリから学習して、ユーザーに提案を行います。 は、ユーザーがクエリの入力を開始するときに、ユーザーに一般的なクエリ Amazon Kendra を提案します。 は、クエリのプレフィックスまたは最初の数文字が、ユーザーがクエリとして入力し始めた内容と一致する場合に、クエリ Amazon Kendra を提案します。

例えば、ユーザーが「upcoming events」というクエリの入力を開始したとします。 Amazon Kendra はクエリ履歴から、多くのユーザーが「upcoming events 2050」を何度も検索していることを学習します。検索バーの真下に「upcoming events 2050」が表示され、検索クエリが自動入力されます。ユーザーがこのクエリの提案を選択すると、検索結果に「New events: What's happening in 2050」というドキュメントが表示されます。

がユーザーに提案する適格なクエリ Amazon Kendra を選択する方法を指定できます。たとえば、クエリ提案が少なくとも 10 人の一意のユーザー (デフォルトは 3 人) によって検索され、過去 30 日以内に検索され、[ブロックリストから](https://docs.aws.amazon.com/kendra/latest/dg/query-suggestions.html#query-suggestions-blocklist)の単語やフレーズが含まれていないことを指定できます。 Amazon Kendra は、クエリに少なくとも 1 つの検索結果があり、4 文字を超える単語が少なくとも 1 つ含まれている必要があります。

### 提案用のクエリを選択するための設定
<a name="query-suggestions-history-settings"></a>

[https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateQuerySuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateQuerySuggestionsConfig.html) API を使用することにより、次の設定を構成して、提案用のクエリを選択できます。
+ **モード** - クエリ履歴を使用するクエリの低名は、`ENABLED` または `LEARN_ONLY` のいずれかです。 Amazon Kendra は、デフォルトでクエリの提案を有効にします。`LEARN_ONLY` は、クエリの提案を無効にします。オフにすると、 Amazon Kendra は引き続き提案を学習しますが、ユーザーにクエリ提案を行いません。
+ **クエリログの期間** - クエリログの期間内で表示された最新のクエリ。タイムウィンドウは、現在の日から過去の日までの日数の整数値です。
+ **ユーザー情報のないクエリ** - `TRUE` に設定し、すべてのクエリを含めるか、`FALSE` に設定してユーザー情報を含むクエリのみを含めます。この設定は、ユーザーがクエリを発行したときに、検索アプリケーションにユーザー ID などのユーザー情報が含まれている場合に使用できます。この設定は、デフォルトではクエリに関連する特定のユーザー情報がない場合、クエリをフィルタリングしません。ただし、この設定を使用して、ユーザー情報を含むクエリに基づく提案のみを行うことができます。
+ **一意のユーザー** - ユーザーに的確な提案をするために、クエリを検索する必要がある一意のユーザーの最小数。この数値は整数値です。
+ **クエリ数** - ユーザーに的確な提案をするために、クエリを検索する必要がある最小検索回数。この数値は整数値です。

これらの設定は、ユーザーに提案する一般的なクエリとしてクエリを選択する方法に影響します。設定の調整方法は、特定のニーズによって異なります。以下に例を挙げます。
+ 通常、ユーザーが平均月 1 回検索する場合、クエリログ期間の日数を 30 に設定できます。この設定を使用すると、期間の中で陳腐化する前に、ユーザーの最近のクエリのほとんどをキャプチャできます。
+ ユーザー情報を含むクエリの数が少なく、少ないサンプル数に基づいてクエリを提案しない場合は、すべてのユーザーを含むようにクエリを設定できます。
+ [popular queries] (人気のあるクエリ) を 10 人以上のユニークユーザーに 100 回以上検索されたものと定義する場合は、ユニークユーザーを 10、クエリ数を 100 に設定します。

**警告**  
設定の変更はすぐには反映されない場合があります。[https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsConfig.html) API を使用して、設定の変更を追跡できます。更新した設定が有効になるまでの時間は、更新した内容やインデックス内の検索クエリの数によって異なります。 Amazon Kendra は、設定を変更した後、または[ブロックリスト](https://docs.aws.amazon.com/kendra/latest/dg/query-suggestions.html#query-suggestions-blocklist)を適用した後、24 時間ごとに自動的に提案を更新します。

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

**クエリの提案を取得するには**

```
aws kendra get-query-suggestions \
 --index-id index-id \
 --query-text "query-text" \
 --suggestion-types '["QUERY"]' \
 --max-suggestions-count 1 // If you want to limit the number of suggestions
```

**クエリの提案を更新するには**

例えば、クエリログタイムウィンドウと、クエリを検索する必要がある最小回数を変更するには、以下の操作を行います。

```
aws kendra update-query-suggestions-config \
 --index-id index-id \
 --query-log-look-back-window-in-days 30 \
 --minimum-query-count 100
```

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

**クエリの提案を取得するには**

```
import boto3
from botocore.exceptions import ClientError

kendra = boto3.client("kendra")

print("Get query suggestions.")

# Provide the index ID
index_id = "index-id"

# Provide the query text
query_text = "query"

# Provide the query suggestions type
query_suggestions_type = "QUERY"


# If you want to limit the number of suggestions
num_suggestions = 1
 
try:
    query_suggestions_response = kendra.get_query_suggestions(
        IndexId = index_id,
        QueryText = query_text,
        SuggestionTypes = query_suggestions_type,
        MaxSuggestionsCount = num_suggestions
    )

    # Print out the suggestions you received
    if ("Suggestions" in query_suggestions_response.keys()) {
        for (suggestion: query_suggestions_response["Suggestions"]) {
            print(suggestion["Value"]["Text"]["Text"]);
        }
    }
   
except ClientError as e:
        print("%s" % e)

print("Program ends.")
```

**クエリの提案を更新するには**

例えば、クエリログタイムウィンドウと、クエリを検索する必要がある最小回数を変更するには、以下の操作を行います。

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

kendra = boto3.client("kendra")

print("Updating query suggestions settings/configuration for an index.")

# Provide the index ID
index_id = "index-id"

# Configure the settings you want to update
minimum_query_count = 100
query_log_look_back_window_in_days = 30

try:
    kendra.update_query_suggestions_config(
        IndexId = index_id,
        MinimumQueryCount = minimum_query_count,
        QueryLogLookBackWindowInDays = query_log_look_back_window_in_days
    )

    print("Wait for Amazon Kendra to update the query suggestions.")

    while True:
        # Get query suggestions description of settings/configuration
        query_sugg_config_response = kendra.describe_query_suggestions_config(
            IndexId = index_id
        )
        
        # If status is not UPDATING, then quit
        status = query_sugg_config_response["Status"]
        print(" Updating query suggestions config. Status: " + status)
        if status != "UPDATING":
            break
        time.sleep(60)

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

print("Program ends.")
```

------

### クエリ履歴を保持したままで提案を消去する
<a name="query-suggestions-history-clear"></a>

**注記**  
機能のサポートは、使用されているインデックスタイプと検索 API によって異なります。使用しているインデックスタイプと検索 API でこの機能がサポートされているかどうかを確認するには、[インデックスのタイプ](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)に関するページを参照してください。

[https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsConfig.html) API を使用して、クエリの提案を消去できます。提案をクリアすると、既存のクエリ提案のみが削除されます。クエリ履歴内のクエリは削除されません。提案をクリアすると、 は提案をクリアした時点からクエリログに追加された新しいクエリに基づいて、新しい提案を Amazon Kendra 学習します。

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

**クエリの提案を消去するには**

```
aws  kendra clear-query-suggestions \
 --index-id index-id
```

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

**クエリの提案を消去するには**

```
import boto3
from botocore.exceptions import ClientError

kendra = boto3.client("kendra")

print("Clearing out query suggestions for an index.")

# Provide the index ID
index_id = "index-id"

try:
    kendra.clear_query_suggestions(
        IndexId = index_id
    )

    # Confirm last cleared date-time and that there are no suggestions
    query_sugg_config_response = kendra.describe_query_suggestions_config(
        IndexId = index_id
    )
    print("Query Suggestions last cleared at: " + str(query_sugg_config_response["LastClearTime"]));
    print("Number of suggestions available from the time of clearing: " + str(query_sugg_config_response["TotalSuggestionsCount"]));
        
except ClientError as e:
        print("%s" % e)

print("Program ends.")
```

------

### 提案がありません。
<a name="query-suggestions-history-none"></a>

クエリの提案が表示されない場合は、次のいずれかの理由が考えられます。
+ が学習 Amazon Kendra するための十分なクエリがインデックスにありません。
+ クエリの提案の設定が厳しすぎるため、ほとんどのクエリが提案から除外されています。
+ 最近提案をクリアしました Amazon Kendra が、新しい提案を学習するには、新しいクエリが累積する時間が必要です。

[https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsConfig.html) API を使用して、現在の設定を確認できます。

## ドキュメントフィールドを使用したクエリの提案
<a name="query-suggestions-doc-fields"></a>

**Topics**
+ [提案用のフィールドを選択するための設定](#query-suggestions-doc-fields-settings)
+ [ドキュメントフィールドのユーザーコントロール](#query-suggestions-doc-fields-user-control)

ドキュメントフィールドの内容に基づいて、ユーザーに関連するクエリの提案を選択できます。クエリ履歴を使用して他の一般的な関連クエリを提案する代わりに、ドキュメントフィールドに含まれる情報を使用できます。これは、クエリを自動補完するのに役立ちます。 は、 に設定`Suggestable`され、ユーザーのクエリと密接に一致するフィールド内の関連コンテンツ Amazon Kendra を検索します。次に、 は、ユーザーがクエリの入力を開始したときに、このコンテンツをユーザーに Amazon Kendra 提案します。

たとえば、提案のベースとなるタイトルフィールドを指定し、ユーザーがクエリ「How amazon ken...」の入力を開始した場合、最も関連性の高いタイトル「How Amazon Kendra works」が検索を自動補完するために提案される可能性があります。検索バーの真下に Amazon Kendra 「仕組み」が表示され、検索クエリが自動入力されます。ユーザーがこのクエリ提案を選択すると、ドキュメント Amazon Kendra 「仕組み」が検索結果に返されます。

クエリの提案のためのフィールド設定の一部として、フィールドを `Suggestable` に設定することにより、`String` および `StringList` のタイプのドキュメントフィールドの内容を使用してクエリを提案できます。[ブロックリスト](https://docs.aws.amazon.com/kendra/latest/dg/query-suggestions.html#query-suggestions-blocklist)を使用して、特定の語句が含まれるドキュメントフィールドの提案をユーザーに表示しないようにすることもできます。ブロックリストは 1 つしか使用できません。ブロックリストは、クエリの提案にクエリ履歴、またはドキュメント文書フィールドのどちらを使用するように設定したかにかかわらず適用されます。

### 提案用のフィールドを選択するための設定
<a name="query-suggestions-doc-fields-settings"></a>

次の設定を構成することにより、[https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeSuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeSuggestionsConfig.html) を使用して提案用のドキュメントフィールドを選択し、[https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateQuerySuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateQuerySuggestionsConfig.html) API を呼び出してインデックスレベルで設定を更新できます。
+ **フィールド/属性提案モード** - ドキュメントフィールドを使用するクエリの提案は、`ACTIVE` または `INACTIVE` のいずれかです。 Amazon Kendra では、デフォルトでクエリの提案を有効にします。
+ **提案が可能なフィールド/属性** - 提案の基になるフィールド名またはフィールドキー。これらのフィールドは、フィールド設定の一部として `Suggestable` の場合は `TRUE` に設定する必要があります。インデックスレベルでは設定を維持したまま、クエリレベルではフィールドの設定をオーバーライドできます。[GetQuerySuggestions](https://docs.aws.amazon.com/kendra/latest/APIReference/API_GetQuerySuggestions.html) API を使用して、クエリレベルで `AttributeSuggestionConfig` を変更してください。このクエリレベルの設定は、インデックスレベルで設定を更新しなくても、異なるドキュメントフィールドをすばやく試用するのに便利です。
+ **追加フィールド/属性** - クエリの提案のレスポンスに含める追加フィールド。これらのフィールドは、レスポンスに追加情報を提供するために使用されますが、提案のベースには使用されません。

**警告**  
設定の変更はすぐには反映されない場合があります。[https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsConfig.html) API を使用して、設定の変更を追跡できます。更新した設定が有効になる時間は、ユーザーが行う更新によって異なります。 は、設定を変更した後、または[ブロックリスト](https://docs.aws.amazon.com/kendra/latest/dg/query-suggestions.html#query-suggestions-blocklist)を適用した後、24 時間ごとに自動的に提案 Amazon Kendra を更新します。

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

インデックスレベルで設定を変更する代わりに、クエリレベルでクエリの提案を取得してドキュメントフィールドの設定をオーバーライドできます。

```
aws kendra get-query-suggestions \
 --index-id index-id \
 --query-text "query-text" \
 --suggestion-types '["DOCUMENT_ATTRIBUTES"]' \
 --attribute-suggestions-config '{"SuggestionAttributes":'["field/attribute key 1", "field/attribute key 2"]', "AdditionalResponseAttributes":'["response field/attribute key 1", "response field/attribute key 2"]'}' \
 --max-suggestions-count 1 // If you want to limit the number of suggestions
```

**クエリの提案を更新するには**

例えば、ドキュメントフィールドの設定をインデックスレベルで変更するには:

```
aws kendra update-query-suggestions-config \
 --index-id index-id \
 --attribute-suggestions-config '{"SuggestableConfigList": '[{"SuggestableConfig": "_document_title", "Suggestable": true}]', "AttributeSuggestionsMode": "ACTIVE"}'
```

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

インデックスレベルで設定を変更する代わりに、クエリレベルでクエリの提案を取得してドキュメントフィールドの設定をオーバーライドできます。

```
import boto3
from botocore.exceptions import ClientError

kendra = boto3.client("kendra")

print("Get query suggestions.")

# Provide the index ID
index_id = "index-id"

# Provide the query text
query_text = "query"

# Provide the query suggestions type
query_suggestions_type = "DOCUMENT_ATTRIBUTES"

# Override fields/attributes configuration at query level
configuration = {"SuggestionAttributes":
    '["field/attribute key 1", "field/attribute key 2"]', 
      "AdditionalResponseAttributes":
          '["response field/attribute key 1", "response field/attribute key 2"]'
          }

# If you want to limit the number of suggestions
num_suggestions = 1

try:
    query_suggestions_response = kendra.get_query_suggestions(
        IndexId = index_id,
        QueryText = query_text,
        SuggestionTypes = [query_suggestions_type],
        AttributeSuggestionsConfig = configuration,
        MaxSuggestionsCount = num_suggestions
    )

    # Print out the suggestions you received
    if ("Suggestions" in query_suggestions_response.keys()) {
        for (suggestion: query_suggestions_response["Suggestions"]) {
            print(suggestion["Value"]["Text"]["Text"]);
        }
    }
   
except ClientError as e:
        print("%s" % e)

print("Program ends.")
```

**クエリの提案を更新するには**

例えば、ドキュメントフィールドの設定をインデックスレベルで変更するには:

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

kendra = boto3.client("kendra")

print("Updating query suggestions settings/configuration for an index.")

# Provide the index ID
index_id = "index-id"

# Configure the settings you want to update at the index level
configuration = {"SuggestableConfigList": 
    '[{"SuggestableConfig": "_document_title", "Suggestable": true}]', 
       "AttributeSuggestionsMode": "ACTIVE"
       }

try:
    kendra.update_query_suggestions_config(
        IndexId = index_id,
        AttributeSuggestionsConfig = configuration
    )

    print("Wait for Amazon Kendra to update the query suggestions.")

    while True:
        # Get query suggestions description of settings/configuration
        query_sugg_config_response = kendra.describe_query_suggestions_config(
            IndexId = index_id
        )
        
        # If status is not UPDATING, then quit
        status = query_sugg_config_response["Status"]
        print(" Updating query suggestions config. Status: " + status)
        if status != "UPDATING":
            break
        time.sleep(60)

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

print("Program ends.")
```

------

### ドキュメントフィールドのユーザーコントロール
<a name="query-suggestions-doc-fields-user-control"></a>

クエリの提案のベースにするドキュメントフィールドに、ユーザーコンテキストフィルタリングを適用できます。これにより、ユーザーまたはグループのドキュメントへのアクセスに基づいて、ドキュメントフィールド情報をフィルタリングします。例えば、インターンが会社のポータルを検索したが、会社の極秘文書にはアクセスできなかったとします。そのため、極秘文書のタイトルや、その他の提案可能なフィールドに基づいて提案されたクエリは、インターンには表示されません。

アクセスコントロールリスト (ACL) を使用してドキュメントにインデックスを付け、ドキュメントへのアクセスを指定するユーザーやグループを定義でます。その後、クエリの提案のドキュメントフィールドにユーザーコンテキストフィルタリングを適用できます。現在、インデックスに設定されているユーザーコンテキストフィルタリングは、クエリの提案のドキュメントフィールド設定に適用されているユーザーコンテキストフィルタリングと同じです。ユーザーコンテキストフィルタリングは、ドキュメントフィールド設定の一部です。[https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeSuggestionsConfig.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeSuggestionsConfig.html) を使用して、[https://docs.aws.amazon.com/kendra/latest/APIReference/API_GetQuerySuggestions.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_GetQuerySuggestions.html) を呼び出します。

## 特定のクエリやドキュメントフィールドの内容を提案からブロックする
<a name="query-suggestions-blocklist"></a>

*ブロックリスト* Amazon Kendra は、ユーザーへの特定のクエリの提案を停止します。ブロックリストは、クエリ提案から除外する単語またはフレーズのリストです。 Amazon Kendra は、ブロックリスト内の単語またはフレーズの完全一致を含むクエリを除外します。

ブロックリストを使用すると、クエリ履歴またはドキュメントフィールドに一般的に表示される、 Amazon Kendra が提案として選択する可能性がある不快な単語や語句から保護できます。ブロックリストは、パブリック Amazon Kendra にリリースまたは発表する準備ができていない情報を含むクエリを が提案できないようにすることもできます。例えば、新製品がリリースされる可能性があり、ユーザーが頻繁に問い合わせているとします。ただし、まだリリースする準備ができていないために製品を提案しない場合は、製品名やその製品情報を含むクエリを提案からブロックできます。

[https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateQuerySuggestionsBlockList.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateQuerySuggestionsBlockList.html) API を使用して、クエリのブロックリストを作成できます。各単語または語句はテキストファイルで個別の行に配置します。次に、Amazon S3 バケットにテキストファイルをアップロードし、 のファイルへのパスまたは場所を指定します Amazon S3。 Amazon Kendra は現在、1 つのブロックリストの作成のみをサポートしています。

 Amazon S3 バケット内のブロックされた単語やフレーズのテキストファイルを置き換えることができます。でブロックリストを更新するには Amazon Kendra、 [https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateQuerySuggestionsBlockList.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateQuerySuggestionsBlockList.html) API を使用します。

[https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsBlockList.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeQuerySuggestionsBlockList.html) API を使用してブロックリストのステータスを取得します。また、`DescribeQuerySuggestionsBlockList` は、次のようなその他の有用な情報を提供できます。
+ ブロックリストの最終更新日時
+ 現在のブロックリストにある語句の数
+ ブロックリストを作成する際に役立つエラーメッセージ

また、[https://docs.aws.amazon.com/kendra/latest/APIReference/API_ListQuerySuggestionsBlockLists.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_ListQuerySuggestionsBlockLists.html) API を使用して、インデックスに対するブロックリストの概要のリストを取得できます。

ブロックリストを削除するには、[DeleteQuerySuggestionsBlockList](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DeleteQuerySuggestionsBlockList.html) API を使用します。

ブロックリストへの更新はすぐには反映されない場合があります。`DescribeQuerySuggestionsBlockList` API を使用すると、更新を追跡できます。

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

**ブロックリストを作成するには**

```
aws kendra create-query-suggestions-block-list \
 --index-id index-id \
 --name "block-list-name" \
 --description "block-list-description" \
 --source-s3-path "Bucket=bucket-name,Key=query-suggestions/block_list.txt" \
 --role-arn role-arn
```

**ブロックリストを更新するには**

```
aws kendra update-query-suggestions-block-list \
 --index-id index-id \
 --name "new-block-list-name" \
 --description "new-block-list-description" \
 --source-s3-path "Bucket=bucket-name,Key=query-suggestions/new_block_list.txt" \
 --role-arn role-arn
```

**ブロックリストを削除するには**

```
aws kendra delete-query-suggestions-block-list \
 --index-id index-id \
 --id block-list-id
```

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

**ブロックリストを作成するには**

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

kendra = boto3.client("kendra")

print("Create a query suggestions block list.")

# Provide a name for the block list
block_list_name = "block-list-name"
# Provide an optional description for the block list
block_list_description = "block-list-description"
# Provide the IAM role ARN required for query suggestions block lists
block_list_role_arn = "role-arn"

# Provide the index ID
index_id = "index-id"

s3_bucket_name = "bucket-name"
s3_key = "query-suggestions/block_list.txt"
source_s3_path = {
    'Bucket': s3_bucket_name,
    'Key': s3_key
}

try:
    block_list_response = kendra.create_query_suggestions_block_list(
        Description = block_list_description,
        Name = block_list_name,
        RoleArn = block_list_role_arn,
        IndexId = index_id,
        SourceS3Path = source_s3_path
    )

    print(block_list_response)

    block_list_id = block_list_response["Id"]

    print("Wait for Amazon Kendra to create the block list.")

    while True:
        # Get block list description
        block_list_description = kendra.describe_query_suggestions_block_list(
            Id = block_list_id,
            IndexId = index_id
        )
        # If status is not CREATING, then quit
        status = block_list_description["Status"]
        print("Creating block list. Status: " + status)
        if status != "CREATING":
            break
        time.sleep(60)
        
except ClientError as e:
        print("%s" % e)

print("Program ends.")
```

**ブロックリストを更新するには**

```
import boto3
from botocore.exceptions import ClientError
import pprint
import time
                        
kendra = boto3.client("kendra")
                        
print("Update a block list for query suggestions.")

# Provide the block list name you want to update
block_list_name = "new-block-list-name"
# Provide the block list description you want to update
block_list_description = "new-block-list-description"
# Provide the IAM role ARN required for query suggestions block lists
block_list_role_arn = "role-arn"

# Provide the block list ID
block_list_id = "block-list-id"
# Provide the index ID
index_id = "index-id"
                        
s3_bucket_name = "bucket-name"
s3_key = "query-suggestions/new_block_list.txt"
source_s3_path = {
'Bucket': s3_bucket_name,
'Key': s3_key
}
                        
try:
    kendra.update_query_suggestions_block_list(
        Id = block_list_id,
        IndexId = index_id,
        Description = block_list_description,
        Name = block_list_name,
        RoleArn = block_list_role_arn,
        SourceS3Path = source_s3_path
    )
                        
    print("Wait for Amazon Kendra to update the block list.")
                        
    while True:
        # Get block list description
        block_list_description = kendra.describe_query_suggestions_block_list(
            Id = block_list_id,
            IndexId = index_id
        )
        # If status is not UPDATING, then the update has finished 
        status = block_list_description["Status"]
        print("Updating block list. Status: " + status)
        if status != "UPDATING":
            break
        time.sleep(60)
                        
except ClientError as e:
print("%s" % e)
                        
print("Program ends.")
```

**ブロックリストを削除するには**

```
import boto3
from botocore.exceptions import ClientError

kendra = boto3.client("kendra")

print("Delete a block list for query suggestions.")

# provide the block list ID
query_suggestions_block_list_id = "query-suggestions-block-list-id"
# Provide the index ID
index_id = "index-id"

try:
    kendra.delete_query_suggestions_block_list(
        Id = query_suggestions_block_list_id,
        IndexId = index_id
    )

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

print("Program ends.")
```

------