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)
Untuk melihat informasi versi kluster Anda, buka konsol PolarDB atau jalankan pernyataan SHOW polardb_version;. Jika versi revisi tidak memenuhi persyaratan, perbarui.
Penggunaan
Pasang ekstensi smlar.
CREATE EXTENSION smlar;CatatanOperator
%dari smlar bertentangan dengan rum. Oleh karena itu, Anda tidak dapat membuat kedua ekstensi tersebut dalam skema yang sama.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)CatatanUntuk informasi lebih lanjut tentang fungsi lainnya, lihat Fungsi dan Operator.
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: |
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:
|
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: |
smlar.tf_method STRING | Metode yang digunakan untuk menghitung frekuensi istilah (TF). Nilai default: n. Nilai valid:
|
smlar.idf_plus_one BOOL | Metode yang digunakan untuk menghitung frekuensi dokumen terbalik (IDF). Nilai default: FALSE. Nilai valid:
|
Referensi
Untuk informasi lebih lanjut tentang ekstensi smlar, lihat: