Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Use the smlar extension

Última atualização: Aug 21, 2026

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;