

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

# FT.SEARCH
<a name="vector-search-commands-ft.search"></a>

インデックス内のキーを検索するために、指定されたクエリ式を使用します。見つかると、それらのキー内のインデックス付きフィールドのカウントおよび/または内容を返すことができます。詳細については、「[ベクトル検索クエリ式](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html#vector-search-query-expression)」を参照してください。

これらの例で使用するデータを作成するには、[FT.CREATE](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-commands-ft.create.html) コマンドを参照してください。

**[Syntax]** (構文)

```
FT.SEARCH <index-name> <query>
[RETURN <token_count> (<field-identifier> [AS <alias>])+]
[TIMEOUT timeout] 
[PARAMS <count> <name> <value> [<name> <value>]]
[LIMIT <offset> <count>]
[COUNT]
```
+ RETURN: この句は、キーのどのフィールドが返されるかを指定します。各フィールドのオプションの AS 句は、結果内のフィールドの名前を上書きします。このインデックスのために宣言されているフィールドのみを指定できます。
+ LIMIT: <offset> <count>: この句は、オフセットおよびカウントの値を満たすキーのみが返されるというページネーション機能を提供します。この句を省略すると、デフォルトで「LIMIT 0 10」になります。すなわち、最大 10 個のキーのみが返されます。
+ PARAMS: key-value ペアの数の 2 倍。Param の key/value ペアはクエリ式内から参照できます。詳細については、「[ベクトル検索クエリ式](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html#vector-search-query-expression)」を参照してください。
+ COUNT: この句はキーの内容を返すことを抑制し、キーの数のみが返されます。これは「LIMIT 0 0」のエイリアスです。

**戻る**

配列またはエラー応答を返します。
+ オペレーションが正常に完了すると、配列が返されます。最初の要素は、クエリに一致するキーの総数です。残りの要素は、キー名とフィールドリストのペアです。フィールドリストは、フィールド名と値のペアで構成される別の配列です。
+ インデックスのバックフィルが進行中の場合、コマンドは直ちにエラー応答を返します。
+ タイムアウトに達すると、コマンドはエラー応答を返します。

**例: 検索を実行する**

**注記**  
次の例では、データを Valkey または Redis OSS に送信する前に、そのデータの引用符の削除やエスケープの削除など、[valkey-cli](https://valkey.io/topics/cli/) にネイティブな引数を使用します。他のプログラミング言語クライアント (Python、Ruby、C\$1 など) を使用するには、それらの環境の文字列およびバイナリデータの処理規則に従います。サポートされているクライアントの詳細については、[「 で構築するツール AWS](https://aws.amazon.com/developer/tools/)」を参照してください。

**ハッシュ検索**

```
FT.SEARCH hash_idx1 "*=>[KNN 2 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2
1) (integer) 2
2) "hash:0"
3) 1) "__VEC_score"
   2) "0"
   3) "vec"
   4) "\x00\x00\x00\x00\x00\x00\x00\x00"
4) "hash:1"
5) 1) "__VEC_score"
   2) "1"
   3) "vec"
   4) "\x00\x00\x00\x00\x00\x00\x80\xbf"
```

これにより、クエリベクトル (16 進数で入力) からの距離であるスコアによってソートされた 2 つの結果が生成されます。

**JSON 検索**

```
FT.SEARCH json_idx1 "*=>[KNN 2 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2
1) (integer) 2
2) "json:2"
3) 1) "__VEC_score"
   2) "11.11"
   3) "$"
   4) "[{\"vec\":[1.1, 1.2, 1.3, 1.4, 1.5, 1.6]}]"
4) "json:0"
5) 1) "__VEC_score"
   2) "91"
   3) "$"
   4) "[{\"vec\":[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]}]"
```

これにより、スコア順に並べ替えられた最も近い 2 つの結果が生成されます。JSON ベクトル値は浮動小数点数に変換され、クエリベクトルは依然としてベクトルデータであることに留意してください。`KNN` パラメータが 2 であるため、結果は 2 つだけであることにも留意してください。値が大きいほど、より多くの結果が返されます:

```
FT.SEARCH json_idx1 "*=>[KNN 100 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2
1) (integer) 3
2) "json:2"
3) 1) "__VEC_score"
   2) "11.11"
   3) "$"
   4) "[{\"vec\":[1.1, 1.2, 1.3, 1.4, 1.5, 1.6]}]"
4) "json:0"
5) 1) "__VEC_score"
   2) "91"
   3) "$"
   4) "[{\"vec\":[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]}]"
6) "json:1"
7) 1) "__VEC_score"
   2) "9100"
   3) "$"
   4) "[{\"vec\":[10.0, 20.0, 30.0, 40.0, 50.0, 60.0]}]"
```