英尺。 SEARCH - Amazon MemoryDB

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

英尺。 SEARCH

使用提供的查询表达式查找索引中的键。查找到键后,可以返回这些键中已编入索引的字段数量和/或内容。有关更多信息,请参阅向量搜索查询表达式

要创建用于这些示例的数据,请参阅英国《金融时报》。 CREATE命令。

语法

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>: 此子句提供分页功能,因为只有满足偏移量和计数值的键才会返回。如果省略此子句,则默认为 “LIMIT0 10",也就是说,最多只返回 10 个密钥。

  • PARAMS:键值对数量的两倍。可以在查询表达式中引用参数键/值对。有关更多信息,请参阅向量搜索查询表达式

  • COUNT: 此子句禁止返回密钥的内容,只返回密钥的数量。这是 “LIMIT0 0” 的别名。

Return

返回数组或错误响应。

  • 如果操作成功完成,则返回一个数组。第一个元素是与查询匹配的键的总数。其余元素是键名称和字段列表配对。字段列表是另一个数组,包含字段名称和对应值的配对。

  • 如果索引正在回填,该命令会立即返回错误响应。

  • 如果超时,该命令将返回错误响应。

示例:进行一些搜索

注意

以下示例在将数据发送到 Redis 之前使用 redis-cli 原生的参数,例如对数据进行去引号和去转义。OSS要使用其他编程语言客户端(Python、Ruby、C# 等),请遵循这些环境处理字符串和二进制数据的处理规则。有关支持的客户端的更多信息,请参阅构建工具 AWS

哈希搜索

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"

这将生成两个结果,按其分数排序,即与查询向量的距离(以十六进制输入)。

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]}]"

这将生成两个最接近的结果,按其分数排序,请注意,向JSON量值被转换为浮点数,查询向量仍然是向量数据。另请注意,由于 KNN 参数为 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]}]"