Opérateurs StructArrayCompatible with Milvus 3.0.x

Le tableau de structures, ou StructArray, d'une entité stocke un ensemble ordonné d'éléments de structures. Chaque structure du tableau partage le même schéma prédéfini, qui comprend plusieurs vecteurs et champs scalaires. Lorsqu'un sous-champ scalaire d'une structure est indexé, vous pouvez utiliser des filtres d'éléments et des opérateurs de la famille match pour effectuer un filtrage scalaire.

Un filtre d'élément sélectionne les entités qui contiennent au moins une valeur dans un champ StructArray correspondant au prédicat spécifié. En revanche, les opérateurs de la famille match sont utilisés pour trouver des entités qui contiennent des nombres ou des proportions spécifiques de valeurs dans un champ StructArray correspondant au prédicat spécifié.

Lorsque vous créez des prédicats sur $[subField], assurez-vous que le sous-champ est indexé si vous travaillez avec des ensembles de données à grande échelle, car ces opérateurs nécessitent d'itérer à travers les éléments du tableau pour chaque entité candidate.

Filtre d'élément

Utilisez les filtres d'éléments lorsque vous devez vérifier si une entité contient les valeurs correspondant à un prédicat spécifique dans son champ StructArray.

element_filter(chunks, $[text] LIKE "Red%")

Comme le montre l'expression du filtre d'éléments ci-dessus, le filtre d'éléments renvoie les entités qui contiennent au moins un morceau commençant par "Red" dans le sous-champ text. Le premier paramètre est le nom du champ StructArray, tandis que le second est le prédicat qui s'applique au sous-champ Struct.

Vous pouvez utiliser des opérateurs de comparaison, de plage et arithmétiques pour construire la condition, ainsi que des opérateurs logiques pour concaténer plusieurs conditions, comme indiqué dans Opérateurs de base.

Toutefois, lorsque vous construisez une expression de filtre qui combine à la fois un prédicat de niveau entité et un filtre d'élément, vous devez toujours placer le filtre d'élément à la fin, comme le montre l'exemple suivant.

# correct
id > 0 && element_filter(chunks, $[x] > 1)

# incorrect, resulting errors
element_filter(chunks, $[x] > 1) && id > 0

Opérateurs de famille de correspondance

Les opérateurs de famille de correspondance fonctionnent également sur un champ StructArray. Au lieu de simplement vérifier si un élément existe, vous pouvez déterminer combien d'éléments (ou quelle proportion) doivent satisfaire un prédicat d'élément.

MATCH_ANY

Cet opérateur est considéré comme vrai si au moins un élément du tableau satisfait au prédicat, ce qui indique que l'équivalent structurel d'une OR logique s'applique à tous les éléments du tableau.

Les opérateurs MATCH_ANY et les filtres d'éléments sont sémantiquement identiques et vous pouvez les utiliser de manière interchangeable. Lorsque vous devez exprimer la logique count(matches) >= 1, vous devez les utiliser.

EXEMPLE :

L'exemple suivant renvoie les entités dont n'importe quelle partie du document commence par "Rouge".

MATCH_ANY(chunks, $[text] LIKE 'Red%')

MATCH_ALL

Cet opérateur ne s'évalue comme vrai que si chaque élément du tableau satisfait au prédicat.

Lorsque vous devez exprimer la logique count(matches) == total elements, utilisez cet opérateur.

EXEMPLE :

MATCH_ALL(chunks, $[text] LIKE 'Red%')

MATCH_LEAST

Cet opérateur est un filtre quantitatif qui renvoie une réponse positive si le nombre d'éléments satisfaisant au prédicat est supérieur ou égal à une constante spécifiée kk k.

Lorsque vous devez exprimer la logique count(matches) >= k, utilisez cet opérateur.

EXEMPLE :

MATCH_LEAST(chunks, $[text] LIKE 'Red%', 3)

MATCH_MOST

Cet opérateur est un filtre quantitatif qui renvoie un résultat positif si le nombre d'éléments satisfaisant au prédicat est inférieur ou égal à une constante spécifiée kk k.

Cet opérateur est particulièrement utile pour filtrer les entités qui ciblent trop un mot-clé spécifique (réduction du bruit).

EXEMPLE :

MATCH_MOST(chunks, $[text] LIKE 'Red%', 3)

MATCH_EXACT

Cet opérateur est l'opérateur quantitatif le plus restrictif de la famille. Il renvoie un résultat positif si et seulement si le nombre d'éléments satisfaisant le prédicat est exactement kk k.

EXEMPLE :

MATCH_EXACT(chunks, $[text] LIKE 'Red%', 3)

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Cette page a-t - elle été utile ?