Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
FT.SEARCH
Effectue une recherche dans l'index spécifié. Les clés correspondant à l'expression de requête sont renvoyées.
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>(obligatoire) : Le nom de l'index que vous souhaitez interroger.
<query>(obligatoire) : La chaîne de requête, voir ci-dessous pour plus de détails.
NOCONTENT (facultatif) : lorsqu'ils sont présents, seuls les noms de clé obtenus sont renvoyés, aucune valeur de clé n'est incluse.
TIMEOUT <timeout>(facultatif) : permet de définir une valeur de délai d'attente pour la commande de recherche. Il doit s'agir d'un entier en millisecondes.
<count><name1><value1><name2><value2>PARAMÈTRES... (facultatif) :
countreprésente le nombre d'arguments, c'est-à-dire le double du nombre de paires de noms de valeurs. Consultez la chaîne de requête pour plus de détails sur l'utilisation.RETOUR <count><field1><field2>... (facultatif) : count est le nombre de champs à renvoyer. Spécifie les champs que vous souhaitez récupérer dans vos documents, ainsi que les alias des valeurs renvoyées. Par défaut, tous les champs sont renvoyés sauf si l'option NOCONTENT est définie, auquel cas aucun champ n'est renvoyé. Si le nombre est défini sur 0, il se comporte de la même manière que NOCONTENT.
LIMITE <offset><count>: Vous permet de choisir une partie du résultat. Les premières <offset>touches sont ignorées et seul un maximum de <count>clés est inclus. La valeur par défaut est LIMIT 0 10, qui renvoie au maximum 10 clés.
PARAMS : deux fois le nombre de paires clé-valeur. Les key/value paires de paramètres peuvent être référencées depuis l'expression de requête. Pour plus d'informations, voir Expression de requête de recherche vectorielle.
DIALECTE : <dialect>(facultatif) : Spécifie votre dialecte. Le seul dialecte pris en charge est le 2.
RÉPONSE
La commande renvoie soit un tableau en cas de succès, soit une erreur.
En cas de succès, la première entrée du tableau de réponses représente le nombre de clés correspondantes, suivie d'une entrée de tableau pour chaque clé correspondante. Notez que si l'LIMIToption est spécifiée, elle ne contrôlera que le nombre de clés renvoyées et n'affectera pas la valeur de la première entrée.
Lorsque NOCONTENT cette valeur est spécifiée, chaque entrée de la réponse contient uniquement le nom de clé correspondant. Sinon, chaque entrée inclut le nom de clé correspondant, suivi d'un tableau des champs renvoyés. Les champs de résultat d'une clé sont constitués d'un ensemble de name/value paires. La première name/value paire correspond à la distance calculée. Le nom de cette paire est construit à partir du nom du champ vectoriel précédé par « __ » et ajouté par « _score » et la valeur est la distance calculée. Les name/value paires restantes sont les membres et les valeurs de la clé tels que contrôlés par la RETURN clause.
La chaîne de requête est conforme à cette syntaxe :
<filtering>=>[ KNN <K> @<vector_field_name> $<vector_parameter_name> <query-modifiers> ]
Où :
<filtering>: est soit une expression*, soit une expression de filtre. Un * indique qu'il n'y a aucun filtrage et que tous les vecteurs de l'index sont donc recherchés. Une expression de filtre peut être fournie pour désigner un sous-ensemble des vecteurs à rechercher.
<vector_field_name>: nom d'un champ vectoriel dans l'index spécifié.
<K>: Le nombre de vecteurs du plus proche voisin à renvoyer.
<vector_parameter_name>: nom PARAM dont la valeur correspondante fournit le vecteur de requête pour l'algorithme KNN. Notez que ce paramètre doit être codé sous forme de virgule flottante binaire IEEE 754 32 bits au format little-endian.
<query-modifiers>: (Facultatif) Une liste de keyword/value paires qui modifient cette recherche KNN particulière. Deux mots clés sont actuellement pris en charge :
EF_RUNTIME : Ce mot clé est accompagné d'une valeur entière qui remplace la valeur par défaut de EF_RUNTIME spécifiée lors de la création de l'index.
AS : Ce mot clé est accompagné d'une valeur de chaîne qui devient le nom du champ de score dans le résultat, remplaçant ainsi l'algorithme de génération de nom de champ de score par défaut.
Expression du filtre
Une expression de filtre est construite comme une combinaison logique d'opérateurs de recherche numériques et de balises contenus entre parenthèses.
Balise
L'opérateur de recherche de balises est spécifié par une ou plusieurs chaînes séparées par le caractère |. Une clé satisfera l'opérateur de recherche de balises si le champ indiqué contient l'une des chaînes spécifiées.
@<field_name>:{<tag>} or @<field_name>:{<tag1> | <tag2>} or @<field_name>:{<tag1> | <tag2> | ...}
Par exemple, la requête suivante renverra des documents de couleur bleue, noire OU verte.
@color:{blue | black | green}
Autre exemple, la requête suivante renverra des documents contenant « hello world » ou « hello universe ».
@description:{hello world | hello universe}
Plage numérique
L'opérateur de plage numérique permet de filtrer les requêtes pour ne renvoyer que les valeurs comprises entre une valeur de début et une valeur de fin données. Les requêtes de plage inclusives et exclusives sont prises en charge. Pour des comparaisons relationnelles simples, +inf, -inf peuvent être utilisés avec une requête de plage. La syntaxe d'un opérateur de recherche par plage est la suivante :
@<field_name>:[ [(] <bound> [(] <bound>]
... où <bound>est soit un nombre, soit +inf ou -inf. Les limites sans premier parent ouvert sont inclusives, tandis que les limites avec le premier parent ouvert sont exclusives.
Utilisez le tableau suivant comme guide pour mapper des expressions mathématiques à des requêtes de filtrage :
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]
Opérateurs logiques
Plusieurs balises et opérateurs de recherche numériques peuvent être utilisés pour créer des requêtes complexes à l'aide d'opérateurs logiques.
Logique ET
Pour définir un ET logique, utilisez un espace entre les prédicats. Par exemple :
query1 query2 query3
OU logique
Pour définir un OR logique, utilisez un espace entre les prédicats. Par exemple :
query1 | query2 | query3
Négation logique
Toute requête peut être annulée en ajoutant le - caractère avant chaque requête. Les requêtes négatives renvoient toutes les entrées qui ne correspondent pas à la requête. Cela inclut également les clés qui n'ont pas le champ.
Par exemple, une requête négative sur @genre : {comedy} renverra tous les livres qui ne sont pas des comédies ET tous les livres qui n'ont pas de champ de genre.
La requête suivante renverra tous les livres du genre « comédie » qui n'ont pas été publiés entre 2015 et 2024, ou qui n'ont pas de champ annuel : @genre : [comedy] - @year : [2015 2024]
Priorité des opérateurs
Les règles de priorité des opérateurs typiques s'appliquent, c'est-à-dire que le NEGATE logique est la priorité la plus élevée, suivi par le OU logique ET ensuite le OU logique avec la priorité la plus faible. Les parenthèses peuvent être utilisées pour remplacer les règles de priorité par défaut.
Exemples de combinaison d'opérateurs logiques
Les opérateurs logiques peuvent être combinés pour former des expressions de filtre complexes.
La requête suivante renverra tous les livres du genre « comédie » ou « horreur » (AND) publiés entre 2015 et 2024 : @genre:[comedy|horror] @year:[2015 2024]
La requête suivante renverra tous les livres du genre « comédie » ou « horreur » (OR) publiés entre 2015 et 2024 : @genre:[comedy|horror] | @year:[2015 2024]
La requête suivante renverra tous les livres qui n'ont pas de champ de genre ou dont le champ de genre n'est pas égal à « comédie », publiés entre 2015 et 2024 : -@genre:[comedy] @year:[2015 2024]