Mengenal Full Text Search, Database Search Engine-Salah satu hal penting dalam database adalah proses pencarian (Search), terutama jika sobat telah bekerja dengan database berukuran besar dan sering membutuhkan informasi tertentu didalamnya.
Apakah database yang memiliki kapasitas terbesar telah sobat ketahui? Apakah database milik perusahaan sobat, database website jaringan sosial, ataukah database game online? Atau bagaimana dengan database sebuah internet search engine? Singkat kata, tentunya database dengan ukuran luar biasa besar sudah bukan merupakan hal yang luar biasa lagi.
Karena itu, mungkin sibat pernah merasa takjub saat menyadari kemampuan pencarian sebuah program atau website tertentu yang mampu menelusuri database yang besar dan menampilkan hasil pencarian dalam tempo yang relatif singkat. Contohnya saja pada internet search engine, proses pencarian keyword yang sobat ketikkan mungkin hanya memakan waktu hitungan detik, sementara sobat bahkan sukar membayangkan betapa banyaknya data yang harus dicari oleh search engine.
Semua itu dimungkinkan karena optimasi pemrograman database, khususnya dalam hal pencarian record. Salah satu komponen pencarian yang dapat bekerja secara mengagumkan adalah Full Text Search. Full text search tidak hanya membantu dalam hal kecepatan, tetapi juga fleksibilitas dan ruang lingkup pencarian yang mengagumkan.
Ilustrasi Pencarian.
Bayangkan sobat memiliki sebuah database yang memiliki ratusan tabel, pada masing-masing table memiliki ratusan field, dimana record pada table tersebut mencapai ribuan atau bahkan jutaan record. Kemudian sobat menyediakan sebuah fitur pencarian yang mengizinkan pengguna memasukkan keyword yang diinginkan (contohnya seperti pada search engine), program harus dapat mencari dan menampilkan record yang mengandung keyword tersebut.
Tantangannya adalah bagaimana agar program dapat menampilkan hasil dengan cepat dan luas sehingga membuat pengguna awam mengira sebuah database hanyalah sebuah file berukuran beberapa kilobyte? Solusinya bukan dengan mengganti komputer pengguna dengan sebuah superkomputer, tetapi dengan mengimplementasikan Full Text Search yang bekerja berdasarkan index.
Kita akan melihat terlebih dahulu ilustrasi pencarian dengan menggunakan metode pencarian berdasarkan karakter, yang umumnya menggunakan perintah “Select” diikuti dengan nama field, nama table, dan kondisi “Like“. Katakanlah sobat memiliki table sederhana bernama Produk dengan field dan record seperti pada tabel 1.
Misalnya untuk mencari kata “Diskon” pada field Keterangan, sintaksnya secara umum adalah “Select” Keterangan “From” Produk “Where” Keterangan “Like” ‘%Diskon%’. Metode ini lebih umum dikenal programer dan database administrator, yang memang efektif untuk pencarian sederhana atau di dalam kapasitas database yang relatif kecil.
Tetapi didalam database yang besar dan kompleks, permasalahannya adalah sering kali pencarian tidak hanya dilakukan pada satu field. Contohnya kata “Diskon” yang dimasukkan sebagai keyword tadi bisa saja dimaksudkan untuk mencari informasi pada field Jenis, sehingga seharusnya juga mencari pada field tersebut.
Semakin banyak field yang dimasukkan dalam pencarian, akan semakin kompleks query yang harus dibuat, kerumitan akan bertambah berkali-kali lipat jika pencarian meluas meliputi tabel-tabel yang lain. Ditambah lagi pencarian yang membutuhkan dua kata yang terpisah, akan membuat query yang menggunakan perintah “Like” menjadi semakin kompleks, misalnya jika keyword sobat adalah “Piring Emas”, maka program harus dapat menampilkan hasil pencarian “Piring berlapis emas” yang terdapat pada field Keterangan.
Jelaslah bahwa metode pencarian berdasarkan karakter dengan perintah “Like” bukanlah solusi yang tepat untuk database yang besar, memerlukan pencarian yang cepat dan luas, di mana fungsi cari adalah salah satu fitur utama yang sering digunakan. Sekarang kita akan melihat ilustrasi dengan menggunakan metode full text search. Telah disebutkan bahwa bisa jadi field yang dicari tidak hanya satu field, tetapi yang pasti juga tidak semua field perlu dicari.
Kembali pada contoh table, di mana table Produk memiliki field Kode, Jenis, dan Keterangan. Terlebih dahulu kita harus mendefinisikan field apa saja yang termasuk di dalam pencarian. Kita berasumsi field Kode tidak akan memberikan informasi yang dibutuhkan oleh pengguna, karena itu kita menentukan field yang termasuk dalam pencarian adalah field Jenis dan Keterangan. Selanjutnya untuk mempercepat pencarian, kita akan melakukan index pada field-field yang termasuk dalam pencarian. Hal inilah yang mempercepat proses pencarian karena data telah ter-index. Karena itu, kita harus memodifikasi struktur tabel di atas agar memiliki index yang kita inginkan, database yang mendukung full text search tentunya telah menyediakan fasilitas untuk keperluan tersebut. Sebagai contoh, untuk menambahkan index untuk keperluan full text search pada field Jenis dan Keterangan pada table Produk, sintaksnya adalah ALTER TABLE Produk ADD FULLTEXT (Jenis, Keterangan).
FULLTEXT merupakan perintah untuk mendefinisikan index field, untuk mulai mencari data, gunakan query sebagai berikut :
Contoh-contoh perintah diatas mengambil contoh sintaks pada MySQL, masing-masing database mungkin berbeda perintah ataupun cara melakukan index, tetapi memiliki konsep yang sama. Cukup mudah, bukan? Lalu, apakah sobat harus mengganti metode pencarian pada seluruh aplikasi database sobat menjadi full text search? Tentunya disesuaikan dengan kebutuhan dan karakteristik full text search itu sendiri.
Karakteristik dasar yang penting dari full text search adalah :
- Full text search ideal digunakan untuk database berukuran besar yang mengandung ribuan atau bahkan jutaan record. Hasilnya dapat diurutkan (ranking) berdasarkan relevansi, yang direpresentasikan oleh angka desimal.
- Full text search akan mengabaikan kata yang terlalu umum (noise words/stop words) dan tidak dibutuhkan dalam pencarian, karena itu akan dihapus dari query. Misalnya kata “and”, “as”. Hal ini dimaksudkan untuk mendapatkan hasil yang lebih akurat.
- Full text search dapat dilakukan pada mode boolean, yang mencari berdasarkan kriteria AND atau OR. Misalnya pada keyword pencarian “+Komputer +Mouse”, maka akan mengembalikan record yang mengandung kata “Komputer” dan “Mouse”.
- Keyword adalah case-insensitive. Artinya, huruf besar dan kecil dianggap sama. “MoBiL” sama dengan “MOBIL” ataupun “mobil”.
Dengan karakteristik-karakteristik dasar diatas, full text search dapat bekerja dengan cepat dan efektif. Walaupun pada dasarnya metode full text search hanya terdiri atas dua fungsi utama, yaitu index dan pencarian, tetapi terdapat cukup banyak aspek yang dapat dikembangkan agar performa full text search semakin baik lagi. Pengembangan fitur-fitur pencarian juga dapat membuat proses pencarian menjadi lebih mudah, misalnya pada Google, Google dapat menyarankan kata yang benar saat sobat salah mengetikkan keyword. Contohnya jika Anda mengetikkan kata “sopisticate” pada search engine seperti Google atau Yahoo!, maka search engine tetap mencari kata “sopisticate”, dan juga menyertakan pesan “Did you mean: sophisticate” sebagai kata yang lebih umum.
Hal ini sangat membantu jika sobat salah mengetik ataupun salah mengeja suatu kata. Walaupun pada umumnya hanya terdapat satu kotak search untuk pengguna mengetikkan keyword pada search engine, tetapi sering kali search engine menambahkan fungsi advanced search yang memungkinkan pengguna memberikan kriteria pencarian yang lain.
Advanced search pada Google memungkinkan sobat menentukan keyword dan kemudian melakukan pengaturan lebih lanjut, misalnya apakah ingin menambahkan keyword yang tidak ingin dimasukkan dalam pencarian, atau pencarian dilakukan dalam ruang lingkup domain tertentu, dan masih banyak lagi.
Full Text Search pada Microsoft SQL Server.
Metode full text search sudah cukup umum digunakan oleh software database popular, seperti Microsoft SQL Server, MySQL, Interbase, dan lain-lain. Cara kerjanya secara prinsip tidak berbeda, hanya implementasi teknikalnya saja yang berbeda di mana tiap-tiap software mengembangkan perintah/fitur sendiri.
Microsoft SQL Server 2000 sebagai salah satu software RDBMS populer, menyertakan full text search sebagai komponen yang diaktifkan melalui sebuah service/engine, yaitu Microsoft Search. Kemampuan Microsoft Search juga dapat digunakan untuk Microsoft Exchange dan SharePoint. Microsoft Search berfungsi untuk menciptakan index, menjalankan query, dan mengembalikan hasilnya berikut dengan informasi ranking pada service SQL Server. Pada Microsoft SQL 2005, Microsoft Search digantikan oleh Microsoft Full-Text Engine for SQL Server (MSFTESQL).
Langkah-langkah konfigurasi untuk mendefinisikan field yang di index, menciptakan katalog, dapat dilakukan melalui GUI ataupun dengan mengetikkan perintah SQL. Setelah semua terkonfigurasi dengan benar, sobat dapat menjalankan query yang memanfaatkan full text search tersebut, salah satu contoh query sederhana pada Microsoft SQL Server adalah sebagai berikut :
Mudah dimengerti pada contoh query bahwa inti pencarian adalah pada perintah CONTAINS, disediakan empat perintah untuk pencarian full text search, yaitu FREETEXT, FREETEXTTABLE, CONTAINS, CONTAINSTABLE.
Full Text Search pada MySQL.
MySQL merupakan salah satu software RDBMS yang sering digunakan dalam aplikasi web, karena itu sudah seharusnya MySQL menawarkan fungsi full text search yang dapat diandalkan. MySQL sendiri telah menambahkan dukungan full text search sejak versi 3.23.23. Terdapat beberapa ketentuan untuk menggunakan full text search pada MySQL, antara lain :
- Hanya dapat digunakan pada table MyISAM.
- Full text index hanya dapat diciptakan untuk field bertipe Char, Varchar, atau Text.
Untuk menambahkan full text index pada field, digunakan perintah FULLTEXT, yang dapat didefinisikan bersamaan pada saat penciptaan table dengan perintah CREATE TABLE, ataupun didefinisikan kemudian pada table yang telah tercipta dengan ALTER TABLE atau CREATE INDEX.
Untuk query pencarian, digunakan perintah MATCH()… AGAINST sebagaimana contoh ilustrasi pencarian di atas. Full text search pada MySQL juga mendukung query expansion, yang digunakan untuk memperluas pencarian. Contohnya jika pengguna mencari keyword “database”, bisa jadi informasi yang dibutuhkan termasuk “MySQL”, “Oracle”, “DB2”, “RDBMS”, dan seterusnya yang berhubungan dengan keyword “database”.
Untuk menjalankan pencarian dengan query expansion, sobat harus menyertakan perintah QUERY EXPANSION, contoh penggunaannya adalah pada query sebagai berikut :
Engine Pendukung Full Text Search.
Tidak semua database mendukung kemampuan full text search, untuk itu alternatifnya adalah menggunakan engine/library 3rd party yang memberikan fasilitas full text search. Salah satu engine full text search adalah Sphinx, yang merupakan engine open source dan didesain untuk berintegrasi dengan database SQL dan bahasa scripting. Library full text search lainnya yang popular adalah Lucene yang dibuat dengan Java. Website/aplikasi seperti CNET dan Liferay adalah contoh website yang menggunakan engine Lucene.
Aplikasi Untuk penggunaan yang umum, full text search mudah diaplikasikan dan memiliki performa yang baik. Beberapa aplikasi/ website yang cocok untuk menerapkan full text search antara lain adalah :
1. Internet Search Engine.
Sesuai dengan namanya, pencarian adalah segalanya didalam search engine. Tidak mengherankan banyak Internet search engine mengembangkan metode pencarian untuk memperoleh hasil yang lebih terarah. Beberapa pengembangan pencarian yang dikenal misalnya phrase search, concordance search, proximity search, dan lain sebagainya.
2. Situs Berita/Artikel.
Mungkin sobat memiliki website dengan database berisi arsip kumpulan artikel atau berita, dimana pengguna dapat mengetikkan keyword untuk mencari artikel atau berita yang diinginkan. Full text search akan sangat penting untuk keperluan ini, karena keyword akan menjadi sangat bervariasi dan tidak terbatas satu kata, di sini kemampuan full text search dapat dimanfaatkan dengan tepat. Contoh kegunaan lainnya adalah fitur pencarian full text search mampu menelusuri tense, misalnya “run”, “ran”, “running” dalam Bahasa Inggris.
Tentunya, masih banyak aplikasi yang dapat dikembangkan dengan full text search, misalnya pencarian file, isi dokumen, kata-kata dalam kamus, dan sebagainya. Akhir kata, semoga sekelumit pembahasan mengenai full text search ini dapat memperkaya pengetahuan, sehingga dapat diaplikasikan dengan baik.
Sumber : Majalah PC MEDIA.