FT.SEARCH - Amazon ElastiCache

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

Esegue una ricerca nell'indice specificato. Vengono restituite le chiavi che corrispondono all'espressione della query.

FT.SEARCH <index-name> <query> [NOCONTENT] [RETURN <token_count> (<field-identifier> [AS <alias>])+] [TIMEOUT timeout] [PARAMS <count> <name> <value> [<name> <value>]] [LIMIT <offset> <count>]
  • <index>(obbligatorio): Il nome dell'indice su cui si desidera eseguire la query.

  • <query>(obbligatorio): La stringa di query, vedi sotto per i dettagli.

  • NOCONTENT (opzionale): quando presente, vengono restituiti solo i nomi delle chiavi risultanti, non vengono inclusi i valori chiave.

  • TIMEOUT <timeout>(opzionale): consente di impostare un valore di timeout per il comando di ricerca. Deve essere un numero intero in millisecondi.

  • <count><name1><value1><name2><value2>PARAMETRI... (opzionale): count indica il numero di argomenti, cioè il doppio del numero di coppie di nomi di valori. Vedi la stringa di query per i dettagli sull'utilizzo.

  • RITORNA <count><field1><field2>... (opzionale): count è il numero di campi da restituire. Specificate i campi che desiderate recuperare dai documenti, insieme agli eventuali alias per i valori restituiti. Per impostazione predefinita, vengono restituiti tutti i campi a meno che non sia impostata l'opzione NOCONTENT, nel qual caso non viene restituito alcun campo. Se count è impostato su 0, si comporta come NOCONTENT.

  • LIMIT: <offset><count>: Consente di scegliere una parte del risultato. Le prime <offset>chiavi vengono ignorate e viene <count>incluso solo un massimo di chiavi. L'impostazione predefinita è LIMIT 0 10, che restituisce al massimo 10 chiavi.

  • PARAMS: due volte il numero di coppie chiave-valore. È possibile fare riferimento alle key/value coppie di parametri dall'interno dell'espressione di query. Per ulteriori informazioni, vedete Espressione di interrogazione di ricerca vettoriale.

  • DIALETTO: <dialect>(opzionale): specifica il dialetto. L'unico dialetto supportato è il 2.

RISPOSTA

Il comando restituisce un array in caso di successo o un errore.

In caso di successo, la prima voce nell'array di risposta rappresenta il conteggio delle chiavi corrispondenti, seguita da una voce dell'array per ogni chiave corrispondente. Nota che se l'LIMITopzione viene specificata, controllerà solo il numero di chiavi restituite e non influirà sul valore della prima voce.

Quando NOCONTENT viene specificato, ogni voce nella risposta contiene solo il nome chiave corrispondente. Altrimenti, ogni voce include il nome chiave corrispondente, seguito da una matrice dei campi restituiti. I campi dei risultati per una chiave sono costituiti da un insieme di name/value coppie. La prima name/value coppia è per la distanza calcolata. Il nome di questa coppia è costruito a partire dal nome del campo vettoriale preceduto da «__» e aggiunto da «_score» e il valore è la distanza calcolata. Le name/value coppie rimanenti sono i membri e i valori della chiave controllati dalla clausola. RETURN

La stringa di interrogazione è conforme alla seguente sintassi:

<filtering>=>[ KNN <K> @<vector_field_name> $<vector_parameter_name> <query-modifiers> ]

Dove:

  • <filtering>: È un * o un'espressione di filtro. Un * indica l'assenza di filtri e pertanto la ricerca viene effettuata in tutti i vettori all'interno dell'indice. È possibile fornire un'espressione di filtro per designare un sottoinsieme dei vettori da cercare.

  • <vector_field_name>: il nome di un campo vettoriale all'interno dell'indice specificato.

  • <K>: il numero di vettori vicini più prossimi da restituire.

  • <vector_parameter_name>: un nome PARAM il cui valore corrispondente fornisce il vettore di interrogazione per l'algoritmo KNN. Si noti che questo parametro deve essere codificato come virgola mobile binaria IEEE 754 a 32 bit in formato little-endian.

  • <query-modifiers>: (Facoltativo) Un elenco di coppie che modificano questa particolare ricerca KNN. keyword/value Attualmente sono supportate due parole chiave:

    • EF_RUNTIME: questa parola chiave è accompagnata da un valore intero che sostituisce il valore predefinito di EF_RUNTIME specificato al momento della creazione dell'indice.

    • AS: Questa parola chiave è accompagnata da un valore di stringa che diventa il nome del campo di punteggio nel risultato, sostituendo l'algoritmo di generazione dei nomi dei campi di punteggio predefinito.

Espressione di filtro

Un'espressione di filtro è costruita come una combinazione logica di operatori di ricerca numerici e tag contenuti tra parentesi.

Tag

L'operatore di ricerca per tag viene specificato con una o più stringhe separate dal carattere |. Una chiave soddisferà l'operatore di ricerca dei tag se il campo indicato contiene una delle stringhe specificate.

@<field_name>:{<tag>} or @<field_name>:{<tag1> | <tag2>} or @<field_name>:{<tag1> | <tag2> | ...}

Ad esempio, la seguente query restituirà documenti di colore blu O nero O verde.

@color:{blue | black | green}

Come altro esempio, la seguente query restituirà documenti contenenti «hello world» o «hello universe».

@description:{hello world | hello universe}

Intervallo numerico

L'operatore di intervallo numerico consente di filtrare le query per restituire solo i valori compresi tra un determinato valore iniziale e finale. Sono supportate sia le interrogazioni con intervallo inclusivo che quelle con intervallo esclusivo. Per semplici confronti relazionali, è possibile utilizzare +inf, -inf con una query di intervallo. La sintassi per un operatore di ricerca per intervalli è:

@<field_name>:[ [(] <bound> [(] <bound>]

... dove <bound>è un numero o +inf o -inf. I limiti senza la parentesi principale aperta sono inclusivi, mentre i limiti con la parentesi principale aperta sono esclusivi.

Utilizza la tabella seguente come guida per mappare le espressioni matematiche alle interrogazioni di filtraggio:

min <= field <= max @field:[min max] min < field <= max @field:[(min max] min <= field < max @field:[min (max] min < field < max @field:[(min (max] field >= min @field:[min +inf] field > min @field:[(min +inf] field <= max @field:[-inf max] field < max @field:[-inf (max] field == val @field:[val val]

Operatori logici

È possibile utilizzare più tag e operatori di ricerca numerici per creare query complesse utilizzando operatori logici.

AND logico

Per impostare un AND logico, utilizzate uno spazio tra i predicati. Esempio:

query1 query2 query3

OR logico

Per impostare un OR logico, utilizzate uno spazio tra i predicati. Esempio:

query1 | query2 | query3

Negazione logica

Qualsiasi interrogazione può essere annullata anteponendo il - carattere prima di ogni interrogazione. Le query negative restituiscono tutte le voci che non corrispondono alla query. Ciò include anche le chiavi che non dispongono del campo.

Ad esempio, una query negativa su @genre: {comedy} restituirà tutti i libri che non sono comici E tutti i libri che non hanno un campo di genere.

La seguente query restituirà tutti i libri di genere «commedia» che non sono stati pubblicati tra il 2015 e il 2024 o che non hanno il campo dell'anno: @genre: [commedia] - @year: [2015 2024]

Precedenza degli operatori

Si applicano le tipiche regole di precedenza degli operatori, ad esempio NEGATE logico è la priorità più alta, seguito da AND logico e quindi OR logico con la priorità più bassa. Le parentesi possono essere utilizzate per sovrascrivere le regole di precedenza predefinite.

Esempi di combinazione di operatori logici

Gli operatori logici possono essere combinati per formare espressioni di filtro complesse.

La seguente query restituirà tutti i libri di genere «commedia» o «horror» (AND) pubblicati tra il 2015 e il 2024: @genre:[comedy|horror] @year:[2015 2024]

La seguente query restituirà tutti i libri di genere «commedia» o «horror» (OR) pubblicati tra il 2015 e il 2024: @genre:[comedy|horror] | @year:[2015 2024]

La seguente query restituirà tutti i libri che non hanno un campo di genere o un campo di genere diverso da «commedia», pubblicati tra il 2015 e il 2024: -@genre:[comedy] @year:[2015 2024]