本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
FT。SEARCH
使用提供的查詢表達式來尋找索引內的索引鍵。找到後,即可傳回這些金鑰內索引欄位的計數和/或內容。如需詳細資訊,請參閱向量搜尋查詢表達式 。
若要建立資料以用於這些範例,請參閱 FT.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>:此子句提供分頁功能,其中只會傳回滿足偏移和計數值的金鑰。如果省略此子句,則預設為 "LIMIT 0 10",即最多只會傳回 10 個金鑰。
PARAMS:金鑰值對數量的兩倍。可以在查詢表達式中從 參考參數鍵/值對。如需詳細資訊,請參閱向量搜尋查詢表達式 。
COUNT:此子句禁止傳回金鑰的內容,只會傳回金鑰數目。這是 "LIMIT 0 0" 的別名。
傳回
傳回陣列或錯誤回應。
如果操作成功完成,則會傳回陣列。第一個元素是符合查詢的金鑰總數。其餘元素是金鑰名稱和欄位清單的對。欄位清單是另一陣列,包含一組欄位名稱和值。
如果索引正在進行回填,命令會立即傳回錯誤回應。
如果達到逾時,命令會傳回錯誤回應。
範例:執行一些搜尋
注意
下列範例使用 valkey-cli
雜湊搜尋
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]}]"