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).
Anda dapat mengeksekusi pernyataan berikut untuk melihat versi revisi dari kluster PolarDB for PostgreSQL (Compatible with Oracle):
SHOW polar_version;Penggunaan
Instal 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.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)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 Eksekusi 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 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: |
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: