Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
FT. SEARCH
Utilizza l'espressione di query fornita per individuare le chiavi all'interno di un indice. Una volta individuati, è possibile restituire il conteggio e/o il contenuto dei campi indicizzati all'interno di tali chiavi. Per ulteriori informazioni, vedere Espressione di interrogazione di ricerca vettoriale.
Per creare dati da utilizzare in questi esempi, consulta il FT. CREATEcomando.
Sintassi
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: Questa clausola identifica quali campi di una chiave vengono restituiti. La clausola AS opzionale su ogni campo sostituisce il nome del campo nel risultato. È possibile specificare solo i campi che sono stati dichiarati per questo indice.
LIMIT: <offset><count>: Questa clausola fornisce la funzionalità di impaginazione in quanto vengono restituite solo le chiavi che soddisfano i valori di offset e count. Se questa clausola viene omessa, il valore predefinito è "LIMIT0 10", ovvero verranno restituite solo un massimo di 10 chiavi.
PARAMS: due volte il numero di coppie chiave-valore. È possibile fare riferimento alle coppie chiave/valore del parametro dall'interno dell'espressione di query. Per ulteriori informazioni, vedete Espressione di interrogazione di ricerca vettoriale.
COUNT: Questa clausola elimina la restituzione del contenuto delle chiavi, viene restituito solo il numero di chiavi. Questo è un alias per "0 0". LIMIT
Valori restituiti
Restituisce una matrice o una risposta di errore.
Se l'operazione viene completata correttamente, restituisce un array. Il primo elemento è il numero totale di chiavi corrispondenti alla query. Gli elementi rimanenti sono coppie di nomi di chiavi ed elenchi di campi. L'elenco dei campi è un altro array che comprende coppie di nomi di campo e valori.
Se l'indice è in corso di riempimento, il comando restituisce immediatamente una risposta di errore.
Se viene raggiunto il timeout, il comando restituisce una risposta di errore.
Esempio: esegui alcune ricerche
Nota
L'esempio seguente utilizza argomenti nativi di valkey-cli
Una ricerca hash
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"
Ciò produce due risultati, ordinati in base al punteggio, che è la distanza dal vettore di query (immessa come esadecimale).
JSONricerche
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]}]"
Ciò produce i due risultati più vicini, ordinati in base al punteggio, e nota che i valori JSON vettoriali vengono convertiti in float e il vettore di query è ancora costituito da dati vettoriali. Nota anche che, poiché il KNN
parametro è 2, ci sono solo due risultati. Un valore maggiore restituirà più risultati:
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]}]"