Cette rubrique explique comment utiliser l'extension smlar pour calculer la similarité entre deux tableaux du même type de données.
Prérequis
L'instance RDS exécute PostgreSQL 10 ou une version ultérieure.
Si la version majeure du moteur de l'instance RDS répond aux exigences mais que l'extension n'est pas prise en charge, mettez à jour la version mineure du moteur. Par exemple, si votre instance RDS exécute PostgreSQL 17, la version mineure du moteur doit être 20241030 ou ultérieure. Pour plus d'informations, consultez Mettre à jour la version mineure du moteur.
Contexte
L'extension smlar fournit plusieurs fonctions pour calculer la similarité entre deux tableaux du même type de données. Elle propose également des paramètres pour contrôler les méthodes de calcul. Tous les types de données intégrés sont pris en charge.
Description des fonctions
-
float4 smlar(anyarray, anyarray)
Calcule la similarité entre deux tableaux du même type de données.
-
float4 smlar(anyarray, anyarray, bool useIntersect)
Calcule la similarité entre deux tableaux de types de données composites. Le type de données composite se définit comme suit :
CREATE TYPE type_name AS (element_name anytype, weight_name FLOAT4);Si le paramètre useIntersect est défini sur true, le calcul ne porte que sur les parties contenant des éléments en double. S'il est défini sur false, tous les éléments sont utilisés pour le calcul.
-
float4 smlar( anyarray a, anyarray b, text formula )
Calcule la similarité entre deux tableaux du même type de données. Les tableaux sont spécifiés par le paramètre formula.
Les variables prédéfinies pour formula sont décrites ci-dessous :
N.i : nombre d'éléments communs aux deux tableaux.
N.a : nombre d'éléments distincts dans le tableau a.
N.b : nombre d'éléments distincts dans le tableau b.
-
float4 set_smlar_limit(float4)
Définit le paramètre smlar.threshold.
-
float4 show_smlar_limit()
Affiche la valeur du paramètre smlar.threshold.
-
anyarray % anyarray
Renvoie true si la similarité entre les tableaux est supérieure à la valeur du paramètre smlar.threshold. Sinon, la fonction renvoie false.
-
text[] tsvector2textarray(tsvector)
Convertit le type tsvector en type text.
-
anyarray array_unique(anyarray)
Trie les éléments d'un tableau (en excluant les doublons).
-
float4 inarray(anyarray, anyelement)
Renvoie 1 si la valeur du paramètre anyelement existe dans la valeur du paramètre anyarray. Sinon, la fonction renvoie 0.
-
float4 inarray(anyarray, anyelement, float4, float4)
Renvoie la troisième valeur de paramètre si anyelement existe dans anyarray. Sinon, la fonction renvoie la quatrième valeur de paramètre.
Pour plus d'informations sur la description des paramètres et les types de données pris en charge, visitez smlar.
Utiliser l'extension
-
Une fois connecté à l'instance, exécutez l'instruction suivante pour créer l'extension smlar :
testdb=> create extension smlar; -
Exécutez les instructions suivantes pour utiliser les fonctions de base de smlar :
testdb=> SELECT smlar('{1,4,6}'::int[], '{5,4,6}' ); smlar ---------- 0.666667 (1 row) testdb=> SELECT smlar('{1,4,6}'::int[], '{5,4,6}', 'N.i / sqrt(N.a * N.b)' ); smlar ---------- 0.666667 (1 row) -
Exécutez l'instruction suivante pour supprimer smlar :
testdb=> drop extension smlar;