Pencarian teks penuh adalah teknologi pengambilan informasi yang dirancang untuk menemukan informasi dengan cepat dan akurat dari sejumlah besar data teks. PolarDB for PostgreSQL menyediakan berbagai kemampuan pencarian teks penuh.
Informasi latar belakang
Dibandingkan dengan pencarian tradisional berbasis kata kunci, pencarian teks penuh dapat menemukan informasi dengan lebih cepat dan akurat dari sejumlah besar data teks. Teknologi ini memproses seluruh isi dokumen, bukan hanya bidang atau tag tertentu.
Secara umum, pencarian teks penuh mencakup langkah-langkah berikut:
Prapemrosesan teks: Menyiapkan teks untuk meningkatkan efisiensi dan akurasi pengambilan. Langkah ini meliputi tugas seperti tokenisasi, menghapus kata-kata umum, dan stemming.
Pembuatan indeks: Membuat indeks pada teks yang telah diproses, biasanya menggunakan struktur indeks terbalik, untuk melacak posisi setiap kata dalam dokumen.
Pemrosesan kueri: Menganalisis pernyataan kueri setelah Anda memasukkan kueri dan mengonversinya ke format yang sesuai untuk pencarian dan pengambilan informasi.
Pengurutan hasil: Mengurutkan hasil pencarian berdasarkan algoritma relevansi dan mengembalikan hasil yang paling sesuai dengan kebutuhan Anda.
Skenario
Pencarian teks penuh dapat diterapkan dalam berbagai skenario.
Sistem manajemen dokumen: Memungkinkan Anda menemukan dokumen internal, laporan, dan kontrak dengan cepat, sehingga meningkatkan efisiensi kerja secara keseluruhan.
Mesin pencari online: Membantu Anda menemukan informasi di internet dengan cepat.
Penelitian akademis: Memungkinkan peneliti menemukan literatur dan data yang relevan dari basis data akademis dan literatur dengan cepat.
E-commerce: Memungkinkan pelanggan menemukan produk yang mereka cari dengan mudah, meningkatkan pengalaman belanja mereka.
Media sosial: Memungkinkan Anda mencari posting, komentar, dan gambar berdasarkan kata kunci, meningkatkan akses ke informasi.
Pengambilan dokumen hukum: Membantu pengacara dan profesional hukum menemukan kasus dan ketentuan hukum yang relevan dengan cepat.
Manajemen rekam medis: Memungkinkan rumah sakit menemukan informasi pasien dan catatan historis dari rekam medis dan laporan dengan cepat.
Dukungan pelanggan: Membantu pelanggan menemukan pertanyaan yang sering diajukan (FAQ) dan dokumen dukungan di sistem layanan pelanggan online.
Sistem manajemen konten: Membantu pengunjung menemukan artikel dan materi yang relevan dari situs web dan blog dengan cepat.
Perpustakaan dan pengambilan informasi: Memungkinkan pembaca menemukan buku dan artikel di perpustakaan dengan mudah.
Fitur
Tokenisasi
Fitur pencarian teks penuh dari PolarDB for PostgreSQL dapat mempraproses dokumen dan menyimpan indeks untuk pencarian selanjutnya. Proses prapemrosesan mencakup langkah-langkah berikut:
Mengurai dokumen menjadi berbagai jenis token. Token dapat mencakup angka, kata, kata kompleks, dan alamat email. Diferensiasi ini memungkinkan token diproses secara berbeda berdasarkan jenisnya.
Menormalisasi token menjadi leksem dengan menyeragamkan bentuk kata. Proses ini mencakup mengubah huruf besar menjadi huruf kecil dan menghapus akhiran seperti s atau es. Ini memungkinkan variasi berbeda dari sebuah kata diperlakukan sebagai satu entitas, meningkatkan efisiensi dan akurasi pencarian.
Menyimpan dokumen yang telah diproses dengan cara yang memfasilitasi pencarian. Misalnya, setiap dokumen direpresentasikan sebagai larik terurut dari leksem. Selain leksem, informasi posisi untuk tujuan peringkat juga disimpan. Informasi ini membantu menentukan relevansi dokumen terhadap kueri. Sebagai contoh, dokumen yang berisi istilah yang dicari di area "padat" memiliki peringkat lebih tinggi dibandingkan dengan dokumen di mana istilah tersebar.
tsvector
Tipe data tsvector di PolarDB for PostgreSQL dirancang untuk pencarian teks penuh yang efisien. Tipe data tsvector dapat menyimpan teks yang telah diproses secara efisien dan mendukung pencarian serta pencocokan yang cepat. Tipe data tsvector menyimpan daftar leksem terurut dari dokumen bersama dengan posisi mereka dalam dokumen.
pg_bigm
pg_bigm adalah ekstensi dari PolarDB for PostgreSQL. Ekstensi pg_bigm memungkinkan Anda melakukan pencarian fuzzy pada teks dan sangat efektif terutama ketika Anda ingin menemukan string yang mirip. Ide utama dari ekstensi pg_bigm adalah untuk meningkatkan efisiensi dan akurasi pencarian teks dengan menggunakan "n-gram" (n-tuple).
Ekstensi pg_bigm dapat secara signifikan meningkatkan efisiensi pencarian dengan menggunakan wildcard, misalnya, menggunakan wildcard dalam format %xxxx%.
pg_trgm
pg_trgm adalah ekstensi dari PolarDB for PostgreSQL yang mendukung trigram. Trigram adalah urutan tiga karakter berturut-turut yang diekstraksi dari string dan berguna untuk pencocokan fuzzy dan pencarian kesamaan teks. Ekstensi pg_trgm meningkatkan efisiensi kueri untuk dataset teks besar dengan membuat indeks dan operator kueri. Ekstensi ini cocok untuk berbagai skenario, seperti pencarian teks penuh, autocompletion, dan koreksi ejaan.
Ekstensi pg_trgm dapat secara signifikan meningkatkan efisiensi pencarian dengan menggunakan wildcard, misalnya, menggunakan wildcard dalam format %xxxx%.
Segmentasi teks Cina
Dalam bahasa Cina, kata-kata adalah unit bermakna terkecil. Berbeda dengan teks bahasa Inggris, teks Cina tidak menggunakan spasi untuk memisahkan kata-kata. Hal ini membuat mesin pencarian teks penuh default PostgreSQL sulit untuk secara akurat melakukan segmentasi kata sesuai dengan semantik Cina.
Untuk memproses teks Cina secara efektif, PolarDB for PostgreSQL menyediakan ekstensi pg_jieba dan zhparser.
pg_jieba
Jieba adalah pustaka segmentasi teks Cina yang banyak digunakan yang dapat secara akurat mengidentifikasi dan membagi kata-kata dalam kalimat Cina. Ekstensi pg_jieba mengintegrasikan kemampuan segmentasi kata Jieba ke dalam database untuk memungkinkan pemrosesan kata teks Cina yang efisien dan meningkatkan pencarian teks penuh.
Zhparser
Simple Chinese Word Segmentation (SCWS) adalah mesin segmentasi kata Cina sumber terbuka berbasis kamus frekuensi kata. SCWS dapat secara akurat membagi teks Cina menjadi kata-kata individu.
Zhparser adalah ekstensi segmentasi kata Cina yang dikembangkan berdasarkan SCWS. Ekstensi Zhparser kompatibel dengan fitur pencarian teks penuh PostgreSQL dan menyediakan berbagai opsi konfigurasi fitur dan kamus kustom.
Pengindeksan
PolarDB for PostgreSQL menyediakan berbagai struktur pengindeksan untuk meningkatkan kemampuan pencarian teks penuh.
Pengindeksan GIN
Generalized inverted index (GIN) adalah jenis indeks di PostgreSQL yang mendukung pencarian teks penuh. Pengindeksan GIN sangat menguntungkan untuk menangani sejumlah besar data teks. Pengindeksan GIN mendukung operasi kueri cepat, terutama dalam kueri teks kompleks yang menggunakan tipe data tsvector dan tsquery. Pengindeksan GIN mendukung tipe data seperti JSONB.
Pengindeksan RUM
RUM adalah ekstensi PostgreSQL yang menyediakan tipe indeks RUM untuk pencarian teks penuh dan persyaratan pengindeksan lainnya. Pengindeksan RUM dirancang untuk meningkatkan kinerja pencarian teks penuh, terutama dalam skenario yang memerlukan peringkat dokumen berdasarkan relevansi.
Indeks RUM adalah indeks terbalik yang mirip dengan indeks GIN bawaan. Perbedaan utama antara kedua indeks tersebut terletak pada informasi tambahan yang dapat disimpan oleh indeks RUM. Informasi tambahan ini memfasilitasi akses lebih cepat ke hasil pengurutan atau operasi terkait lainnya. Sebagai contoh, dalam pencarian teks penuh, indeks RUM dapat menyimpan informasi posisi istilah dalam dokumen. Informasi ini digunakan selama kueri untuk menghitung peringkat relevansi secara lebih efisien.
Pemrosesan kueri
tsquery
Tipe data tsquery dirancang untuk menangani kueri data teks dalam pencarian teks penuh. tsquery memungkinkan Anda membuat kondisi pencarian kompleks untuk menemukan informasi secara efisien dari sejumlah besar data teks. PolarDB for PostgreSQL juga menyediakan metode to_tsquery, yang dapat Anda gunakan untuk mengonversi teks menjadi tsquery. Anda dapat menggunakan tipe data tsvector dan operator pencarian teks penuh untuk menyelesaikan kueri pencarian teks penuh.
tsquery mendukung operator @@ (mengandung) dan operator Boolean seperti & (AND), | (OR), dan ! (NOT). Ini memungkinkan Anda membuat kueri pencarian kondisi majemuk.
Pengurutan
ts_rank
ts_rank adalah fungsi di PostgreSQL dan digunakan dalam pencarian teks penuh untuk menghitung skor yang menunjukkan relevansi dokumen terhadap kueri. Anda dapat menggunakan skor untuk menilai pentingnya atau relevansi dokumen sehubungan dengan kriteria pencarian tertentu.