Este tópico descreve como usar a extensão smlar para calcular a similaridade entre dois arrays do mesmo tipo de dados.
Pré-requisitos
A instância RDS executa o PostgreSQL 10 ou versão posterior.
Se a versão principal do mecanismo da instância RDS atender aos requisitos, mas a extensão ainda não for compatível, atualize a versão secundária do mecanismo. Por exemplo, se a instância RDS executar o PostgreSQL 17, a versão secundária do mecanismo deverá ser 20241030 ou superior. Para mais informações, consulte Atualize a versão secundária do mecanismo.
Informações básicas
A extensão smlar oferece diversas funções para calcular a similaridade entre dois arrays do mesmo tipo de dados e fornece parâmetros para controlar os métodos de cálculo. Todos os tipos de dados integrados são compatíveis.
Descrição das funções
-
float4 smlar(anyarray, anyarray)
Calcula a similaridade entre dois arrays do mesmo tipo de dados.
-
float4 smlar(anyarray, anyarray, bool useIntersect)
Calcula a similaridade entre dois arrays de tipos de dados compostos. O tipo de dado composto tem a seguinte definição:
CREATE TYPE type_name AS (element_name anytype, weight_name FLOAT4);Se o parâmetro useIntersect estiver definido como true, o cálculo considerará apenas as partes com elementos duplicados. Se estiver definido como false, todos os elementos entrarão no cálculo.
-
float4 smlar( anyarray a, anyarray b, text formula )
Calcula a similaridade entre dois arrays do mesmo tipo de dados, especificados pelo parâmetro formula.
As variáveis predefinidas para formula são:
N.i: quantidade de elementos comuns nos dois arrays.
N.a: quantidade de elementos distintos no array a.
N.b: quantidade de elementos distintos no array b.
-
float4 set_smlar_limit(float4)
Defina o parâmetro smlar.threshold.
-
float4 show_smlar_limit()
Exibe o valor do parâmetro smlar.threshold.
-
anyarray % anyarray
Retorna true se a similaridade entre os arrays for maior que o valor do parâmetro smlar.threshold. Caso contrário, retorna false.
-
text[] tsvector2textarray(tsvector)
Converte o tipo tsvector para o tipo text.
-
anyarray array_unique(anyarray)
Ordena os elementos de um array, excluindo duplicatas.
-
float4 inarray(anyarray, anyelement)
Retorna 1 se o valor do parâmetro anyelement existir no valor do parâmetro anyarray. Caso contrário, retorna 0.
-
float4 inarray(anyarray, anyelement, float4, float4)
Retorna o valor do terceiro parâmetro se anyelement existir em anyarray. Caso contrário, retorna o valor do quarto parâmetro.
Para obter mais detalhes sobre as descrições dos parâmetros e os tipos de dados compatíveis, acesse smlar.
Uso da extensão
-
Após conectar-se a uma instância, execute a instrução a seguir para criar a extensão smlar:
testdb=> create extension smlar; -
Execute as instruções abaixo para usar as funções básicas do 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) -
Para remover o smlar, execute a seguinte instrução:
testdb=> drop extension smlar;