All Products
Search
Document Center

PolarDB:smlar

Last Updated:Jul 04, 2025

Perhitungan kesamaan pada sejumlah besar data merupakan kunci dalam bidang seperti e-commerce dan mesin pencari. Implementasi sederhana perhitungan kesamaan mengonsumsi banyak sumber daya dan memberikan performa rendah. smlar adalah ekstensi pihak ketiga open-source untuk PolarDB for PostgreSQL. Ekstensi ini menyediakan fungsi untuk menghitung kesamaan data di dalam database serta operator kesamaan yang mendukung indeks GiST dan GIN. Ekstensi smlar mendukung semua tipe data bawaan PostgreSQL.

Versi yang didukung

Ekstensi smlar hanya didukung jika kluster PolarDB for PostgreSQL Anda menjalankan salah satu versi mesin database berikut:

  • PolarDB for PostgreSQL 16 (versi revisi 2.0.16.9.6.0 atau lebih baru)

  • PolarDB for PostgreSQL 14 (versi revisi 2.0.14.5.1.0 atau lebih baru)

  • PolarDB for PostgreSQL 11 (versi revisi 2.0.11.9.28.0 atau lebih baru)

Catatan

Untuk melihat informasi versi kluster Anda, buka konsol PolarDB atau jalankan pernyataan SHOW polardb_version;. Jika versi revisi tidak memenuhi persyaratan, perbarui.

Penggunaan

  1. Pasang ekstensi smlar.

    CREATE EXTENSION smlar;
    Catatan

    Operator % dari smlar bertentangan dengan rum. Oleh karena itu, Anda tidak dapat membuat kedua ekstensi tersebut dalam skema yang sama.

  2. Jalankan pernyataan berikut untuk menghitung kesamaan array.

    SELECT smlar('{3,2}'::int[], '{3,2,1}');
      smlar
    ----------
     0.816497
    (1 row)
    
    SELECT smlar('{1,4,6}'::int[], '{5,4,6}', 'N.i / (N.a + N.b)' );
      smlar
    ----------
     0.333333
    (1 row)
    Catatan

    Untuk informasi lebih lanjut tentang fungsi lainnya, lihat Fungsi dan Operator.

  3. Hapus ekstensi smlar.

    DROP EXTENSION smlar;

Fungsi dan operator

Fungsi dan operator

Deskripsi

float4 smlar(anyarray, anyarray)

Menghitung kesamaan dua array dengan tipe data yang sama. Array harus menggunakan tipe data yang sama.

float4 smlar(anyarray, anyarray, bool useIntersect)

Menghitung kesamaan dua array tipe komposit kustom (elemen dan bobot). Parameter useIntersect menentukan apakah hanya elemen yang tumpang tindih atau semua elemen yang terlibat dalam operasi.

Catatan

Jalankan pernyataan berikut untuk mendefinisikan tipe komposit:

CREATE TYPE type_name AS (element_name anytype, weight_name FLOAT4);

float4 smlar(anyarray a, anyarray b, text formula)

Menghitung kesamaan antara dua array dengan tipe data yang sama. Array ditentukan oleh parameter formula. Variabel yang telah ditentukan untuk parameter formula:

  • N.i: jumlah elemen identik dalam dua array (irisan).

  • N.a: jumlah elemen unik dalam array pertama.

  • N.b: jumlah elemen unik dalam array kedua.

anyarray % anyarray

Mengembalikan TRUE jika kesamaan dua array melebihi ambang batas. Jika tidak, mengembalikan FALSE.

text[] tsvector2textarray(tsvector)

Mengonversi array tipe tsvector menjadi string.

anyarray array_unique(anyarray)

Mengurutkan dan menghapus duplikat array.

float4 inarray(anyarray, anyelement)

Mengembalikan 1.0 jika elemen ada dalam array. Jika tidak, mengembalikan 0.

float4 inarray(anyarray, anyelement, float4, float4)

Mengembalikan parameter ketiga jika elemen ada dalam array. Jika tidak, mengembalikan parameter keempat.

Parameter

Parameter

Deskripsi

smlar.threshold FLOAT

Ambang batas kesamaan. Digunakan untuk menentukan apakah dua array yang digabungkan dengan operator persen (%) serupa.

smlar.persistent_cache BOOL

Menentukan apakah akan menyimpan statistik global yang di-cache dalam memori independen transaksi.

smlar.type STRING

Rumus yang digunakan untuk menghitung kesamaan. Jenis kesamaan berikut tersedia: consine (default), tfidf, dan overlap.

smlar.stattable STRING

Nama tabel yang menyimpan statistik rentang koleksi. Anda dapat menjalankan pernyataan berikut untuk membuat tabel:

CREATE TABLE table_name (
  value   data_type UNIQUE,
  ndoc    int4 (or bigint)  NOT NULL CHECK (ndoc>0)
);

smlar.tf_method STRING

Metode yang digunakan untuk menghitung frekuensi istilah (TF). Nilai default: n. Nilai valid:

  • n: penghitungan sederhana

  • log: 1 + log(n)

  • const: 1

smlar.idf_plus_one BOOL

Metode yang digunakan untuk menghitung frekuensi dokumen terbalik (IDF). Nilai default: FALSE. Nilai valid:

  • FALSE :log(d/df)

  • TRUE :log(1 + d/df).

Referensi

Untuk informasi lebih lanjut tentang ekstensi smlar, lihat: