All Products
Search
Document Center

PolarDB:smlar

Last Updated:Jul 02, 2025

Perhitungan kesamaan pada sejumlah besar data merupakan kunci dalam bidang seperti e-commerce dan mesin pencari. Implementasi sederhana dari perhitungan kesamaan memerlukan banyak sumber daya dan menghasilkan performa yang rendah. smlar adalah ekstensi pihak ketiga open-source untuk PolarDB for PostgreSQL (Compatible with Oracle). Ekstensi ini menyediakan fungsi-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.

Prasyarat

Ekstensi ini didukung pada kluster PolarDB for PostgreSQL (Compatible with Oracle) yang menjalankan mesin berikut:

  • PolarDB for PostgreSQL (Compatible with Oracle) 2.0 (versi revisi 2.0.14.1.0 atau lebih baru).

Catatan

Anda dapat mengeksekusi pernyataan berikut untuk melihat versi revisi dari kluster PolarDB for PostgreSQL (Compatible with Oracle):

SHOW polar_version;

Penggunaan

  1. Instal 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. Eksekusi 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

Eksekusi 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 dari 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 (%) mirip.

smlar.persistent_cache BOOL

Menentukan apakah akan menyimpan statistik global yang di-cache dalam memori yang independen dari 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 mengeksekusi 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: