Mengenal Full Text Search, Database Search Engine-Salah satu hal penting dalam database yaitu proses pencarian (Search), terutama jikalau sahabat telah bekerja dengan database berukuran besar dan sering membutuhkan informasi tertentu didalamnya.
Apakah database yang mempunyai kapasitas terbesar telah sahabat 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 ketika menyadari kemampuan pencarian sebuah aktivitas atau website tertentu yang bisa menelusuri database yang besar dan menampilkan hasil pencarian dalam tempo yang relatif singkat. Contohnya saja pada internet search engine, proses pencarian keyword yang sahabat ketikkan mungkin hanya memakan waktu hitungan detik, sementara sahabat bahkan sukar membayangkan betapa banyaknya data yang harus dicari oleh search engine.
Semua itu dimungkinkan sebab meningkatkan secara optimal pemrograman database, khususnya dalam hal pencarian record. Salah satu komponen pencarian yang sanggup bekerja secara mengagumkan yaitu Full Text Search. Full text search tidak hanya membantu dalam hal kecepatan, tetapi juga fleksibilitas dan ruang lingkup pencarian yang mengagumkan.
Ilustrasi Pencarian.
Bayangkan sahabat mempunyai sebuah database yang mempunyai ratusan tabel, pada masing-masing table mempunyai ratusan field, dimana record pada table tersebut mencapai ribuan atau bahkan jutaan record. Kemudian sahabat menyediakan sebuah fitur pencarian yang mengizinkan pengguna memasukkan keyword yang diinginkan (contohnya menyerupai pada search engine), aktivitas harus sanggup mencari dan menampilkan record yang mengandung keyword tersebut.
Tantangannya yaitu bagaimana biar aktivitas sanggup menampilkan hasil dengan cepat dan luas sehingga membuat pengguna awam menerka 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 menurut index.
Kita akan melihat terlebih dahulu ilustrasi pencarian dengan memakai metode pencarian menurut karakter, yang umumnya memakai perintah "Select" diikuti dengan nama field, nama table, dan kondisi "Like". Katakanlah sahabat mempunyai table sederhana berjulukan Produk dengan field dan record menyerupai pada tabel 1.
Misalnya untuk mencari kata “Diskon” pada field Keterangan, sintaksnya secara umum yaitu "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 yaitu 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 jikalau pencarian meluas mencakup tabel-tabel yang lain. Ditambah lagi pencarian yang membutuhkan dua kata yang terpisah, akan membuat query yang memakai perintah "Like" menjadi semakin kompleks, contohnya jikalau keyword sahabat yaitu “Piring Emas”, maka aktivitas harus sanggup menampilkan hasil pencarian “Piring berlapis emas” yang terdapat pada field Keterangan.
Jelaslah bahwa metode pencarian menurut karakter dengan perintah "Like" bukanlah solusi yang sempurna untuk database yang besar, memerlukan pencarian yang cepat dan luas, di mana fungsi cari yaitu salah satu fitur utama yang sering digunakan. Sekarang kita akan melihat ilustrasi dengan memakai metode full text search. Telah disebutkan bahwa bisa jadi field yang dicari tidak hanya satu field, tetapi yang niscaya juga tidak semua field perlu dicari.
Kembali pada rujukan table, di mana table Produk mempunyai field Kode, Jenis, dan Keterangan. Terlebih dahulu kita harus mendefinisikan field apa saja yang termasuk di dalam pencarian. Kita berasumsi field Kode tidak akan mengatakan informasi yang diharapkan oleh pengguna, sebab itu kita memilih field yang termasuk dalam pencarian yaitu field Jenis dan Keterangan. Selanjutnya untuk mempercepat pencarian, kita akan melaksanakan index pada field-field yang termasuk dalam pencarian. Hal inilah yang mempercepat proses pencarian sebab data telah ter-index. Karena itu, kita harus memodifikasi struktur tabel di atas biar mempunyai index yang kita inginkan, database yang mendukung full text search tentunya telah menyediakan akomodasi untuk keperluan tersebut. Sebagai contoh, untuk menambahkan index untuk keperluan full text search pada field Jenis dan Keterangan pada table Produk, sintaksnya yaitu 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 rujukan sintaks pada MySQL, masing-masing database mungkin berbeda perintah ataupun cara melaksanakan index, tetapi mempunyai konsep yang sama. Cukup mudah, bukan? Lalu, apakah sahabat harus mengganti metode pencarian pada seluruh aplikasi database sahabat menjadi full text search? Tentunya diubahsuaikan dengan kebutuhan dan karakteristik full text search itu sendiri.
Karakteristik dasar yang penting dari full text search yaitu :
- Full text search ideal dipakai untuk database berukuran besar yang mengandung ribuan atau bahkan jutaan record. Hasilnya sanggup diurutkan (ranking) menurut relevansi, yang direpresentasikan oleh angka desimal.
- Full text search akan mengabaikan kata yang terlalu umum (noise words/stop words) dan tidak diharapkan dalam pencarian, sebab itu akan dihapus dari query. Misalnya kata “and”, “as”. Hal ini dimaksudkan untuk mendapat hasil yang lebih akurat.
- Full text search sanggup dilakukan pada mode boolean, yang mencari menurut kriteria AND atau OR. Misalnya pada keyword pencarian “+Komputer +Mouse”, maka akan mengembalikan record yang mengandung kata “Komputer” dan “Mouse”.
- Keyword yaitu case-insensitive. Artinya, karakter besar dan kecil dianggap sama. “MoBiL” sama dengan “MOBIL” ataupun “mobil”.
Dengan karakteristik-karakteristik dasar diatas, full text search sanggup bekerja dengan cepat dan efektif. Walaupun intinya metode full text search hanya terdiri atas dua fungsi utama, yaitu index dan pencarian, tetapi terdapat cukup banyak aspek yang sanggup dikembangkan biar performa full text search semakin baik lagi. Pengembangan fitur-fitur pencarian juga sanggup membuat proses pencarian menjadi lebih mudah, contohnya pada Google, Google sanggup menyarankan kata yang benar ketika sahabat salah mengetikkan keyword. Contohnya jikalau Anda mengetikkan kata “sopisticate” pada search engine menyerupai 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 jikalau sahabat 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 mengatakan kriteria pencarian yang lain.
Advanced search pada Google memungkinkan sahabat memilih keyword dan kemudian melaksanakan pengaturan lebih lanjut, contohnya 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 dipakai oleh software database popular, menyerupai 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 menyebarkan 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 sanggup dipakai untuk Microsoft Exchange dan SharePoint. Microsoft Search berfungsi untuk membuat index, menjalankan query, dan mengembalikan balasannya 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, membuat katalog, sanggup dilakukan melalui GUI ataupun dengan mengetikkan perintah SQL. Setelah semua terkonfigurasi dengan benar, sahabat sanggup menjalankan query yang memanfaatkan full text search tersebut, salah satu rujukan query sederhana pada Microsoft SQL Server yaitu sebagai berikut :
Praktis dimengerti pada rujukan query bahwa inti pencarian yaitu 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 dipakai dalam aplikasi web, sebab itu sudah seharusnya MySQL memperlihatkan fungsi full text search yang sanggup diandalkan. MySQL sendiri telah menambahkan proteksi full text search semenjak versi 3.23.23. Terdapat beberapa ketentuan untuk memakai full text search pada MySQL, antara lain :
- Hanya sanggup dipakai pada table MyISAM.
- Full text index hanya sanggup diciptakan untuk field bertipe Char, Varchar, atau Text.
Untuk menambahkan full text index pada field, dipakai perintah FULLTEXT, yang sanggup didefinisikan bersamaan pada ketika penciptaan table dengan perintah CREATE TABLE, ataupun didefinisikan kemudian pada table yang telah tercipta dengan ALTER TABLE atau CREATE INDEX.
Untuk query pencarian, dipakai perintah MATCH()... AGAINST sebagaimana rujukan ilustrasi pencarian di atas. Full text search pada MySQL juga mendukung query expansion, yang dipakai untuk memperluas pencarian. Contohnya jikalau pengguna mencari keyword “database”, bisa jadi informasi yang diharapkan termasuk “MySQL”, “Oracle”, “DB2”, “RDBMS”, dan seterusnya yang bekerjasama dengan keyword “database”.
Untuk menjalankan pencarian dengan query expansion, sahabat harus menyertakan perintah QUERY EXPANSION, rujukan penggunaannya yaitu pada query sebagai berikut :
Engine Pendukung Full Text Search.
Tidak semua database mendukung kemampuan full text search, untuk itu alternatifnya yaitu memakai engine/library 3rd party yang mengatakan akomodasi full text search. Salah satu engine full text search yaitu Sphinx, yang merupakan engine open source dan didesain untuk berintegrasi dengan database SQL dan bahasa scripting. Library full text search lainnya yang popular yaitu Lucene yang dibentuk dengan Java. Website/aplikasi menyerupai CNET dan Liferay yaitu rujukan website yang memakai engine Lucene.
Aplikasi Untuk penggunaan yang umum, full text search gampang diaplikasikan dan mempunyai performa yang baik. Beberapa aplikasi/ website yang cocok untuk menerapkan full text search antara lain yaitu :
1. Internet Search Engine.
Sesuai dengan namanya, pencarian yaitu segalanya didalam search engine. Tidak mengherankan banyak Internet search engine menyebarkan metode pencarian untuk memperoleh hasil yang lebih terarah. Beberapa pengembangan pencarian yang dikenal contohnya phrase search, concordance search, proximity search, dan lain sebagainya.
2. Situs Berita/Artikel.
Mungkin sahabat mempunyai website dengan database berisi arsip kumpulan artikel atau berita, dimana pengguna sanggup mengetikkan keyword untuk mencari artikel atau info yang diinginkan. Full text search akan sangat penting untuk keperluan ini, sebab keyword akan menjadi sangat bervariasi dan tidak terbatas satu kata, di sini kemampuan full text search sanggup dimanfaatkan dengan tepat. Contoh kegunaan lainnya yaitu fitur pencarian full text search bisa menelusuri tense, contohnya “run”, “ran”, “running” dalam Bahasa Inggris.
Tentunya, masih banyak aplikasi yang sanggup dikembangkan dengan full text search, contohnya pencarian file, isi dokumen, kata-kata dalam kamus, dan sebagainya. Akhir kata, semoga sekelumit pembahasan mengenai full text search ini sanggup memperkaya pengetahuan, sehingga sanggup diaplikasikan dengan baik.
Sumber : Majalah PC MEDIA.