FULL TEXT SEARCH
Salah satu hal penting dalam database adalah proses pencarian (search).Terutama jika Anda telah bekerja dengan database berukuran besar dansering membutuhkan informasi tertentu di dalamnya. Joko Nurjadi
APAKAH DATABASE yang memiliki kapasitas terbesar yang pernah Anda ketahui? Apakah database milik perusahaan Anda, database website jaringan sosial, ataukah database gameonline? 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.
Karenaitu, mungkin Anda pernah merasa takjub saat menyadari kemampuanpencarian sebuah program atau website tertentu, yang mampu menelusuridatabase yang besar dan menampilkan hasil pencarian dalam tempo yangrelatif singkat.
Contohnya saja pada Internet search engine, proses pencarian keyword yangAnda ketikkan mungkin hanya memakan waktu hitungan detik, sementaraAnda bahkan sukar membayangkan betapa banyaknya data yang harus dicarioleh search engine.
Semua itu dimungkinkan karena optimasi pemrograman database, khususnya dalam hal pencarian record. Salah satu komponen pencarian yang dapat bekerja secara mengagumkan adalahFull Text Search.
Fulltextsearch tidak hanya membantu dalam hal kecepatan, tetapi juga . eksibilitas dan ruang lingkup pencarian yang mengagumkan.
Ilustrasi Pencarian
BayangkanAnda memiliki sebuah database yang memiliki ratusan tabel, padamasing-masing table memiliki ratusan field, di mana record pada tabletersebut mencapai ribuan atau bahkan jutaan record.
Kemudian Anda 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 adalahbagaimana agar program dapat menampilkan hasil dengan cepat dan luassehingga membuat pengguna awam mengira sebuah database hanyalah sebuahfile berukuran beberapa kilobyte?
Solusinya bukan dengan mengganti komputer pengguna dengan sebuah superkomputer, tetapi dengan mengimplementasikan FullTextSearch yang bekerja berdasarkan index.
Kita akan melihat terlebih dahulu ilustrasi pencarian dengan menggunakan metodepencarian berdasarkan karakter, yang umumnya menggunakan perintahSELECT diikuti dengan nama field, nama table, dan kondisi LIKE.
Katakanlah Anda 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%'.
Metodeini lebih umum dikenal programer dan database administrator, yangmemang efektif untuk pencarian sederhana atau di dalam kapasitasdatabase yang relatif kecil.
Tetapi di dalam 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 fieldJenis, sehingga seharusnya juga mencari pada field tersebut. Semakinbanyak 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.
Ditambahlagi pencarian yang membutuhkan dua kata yang terpisah, akan membuatquery yang menggunakan perintah LIKE menjadi semakin kompleks, misalnyajika keyword Anda adalah "Piring Emas”, maka program harus dapat menampilkan hasil pencarian "Piring berlapis emas” yang terdapat pada field Keterangan.
Jelaslah bahwa metodepencarian berdasarkan karakter dengan perintah LIKE bukanlah solusiyang tepat untuk database yang besar, memerlukan pencarian yang cepatdan luas di mana fungsi cari adalah salah satu fitur utama yang sering digunakan.
Sekarang kita akan melihat ilustrasi dengan menggunakan metodefulltextsearch.
Telahdisebutkan bahwa bisa jadi field yang dicari tidak hanya satu foeld,tetapi yang pasti juga tidak semua field perlu dicari.
Kembalipada contoh table, di mana table Produk memiliki field Kode, Jenis, danKeterangan. Terlebih dahulu kita harus mendefinisikan field apa sajayang termasuk di dalam pencarian.
Kitaberasumsi field Kode tidak akan memberikan informasi yang dibutuhkanoleh pengguna, karena itu kita menentukan field yang termasuk dalampencarian adalahfield Jenis dan Keterangan. Selanjutnya untuk mempercepat pencarian,kita akan melakukan index pada field-field yang termasuk dalampencarian. Hal inilah yang mempercepat proses pencarian karena datatelah ter-index.
Karena itu, kita harus memodifikasi struktur tabel di atas agar memiliki index yang kita inginkan, database yang mendukung fulltextsearch tentunya telah menyediakan fasilitas untuk keperluan tersebut.
Sebagai contoh, untuk menambahkan index untuk keperluan fulltextsearch pada field Jenis dan Keterangan pada table Produk, sintaksnya adalahALTER TABLE Produk ADD FULLTEXT(Jenis, Keterangan). FULLTEXT merupakanperintah untuk mende. nisikan index field, untuk mulai mencari data,gunakan query sebagai berikut: SELECT Jenis,Keterangan FROM Product WHERE MATCH (Jenis, Keterangan) AGAINST ('Diskon');
Contoh-contohperintah diatas mengambil contoh sintaks pada MySQL, masing-masingdatabase mungkin berbeda perintah ataupun cara melakukan index, tetapimemiliki konsep yang sama.
Cukup mudah, bukan? Lalu, apakah Anda harus mengganti metode pencarian pada seluruh aplikasi database Anda menjadi fulltextsearch?
Tentunya disesuaikan dengan kebutuhan dan karakteristik fulltextsearch itu sendiri. Karakteristik dasar yang penting dari fulltextsearchadalah:
- Full text searchideal digunakan untuk database berukuran besar yang mengandung ribuanatau 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 dariquery. Misalnya kata "and”, "as”. Hal ini dimaksudkan untuk mendapatkanhasil yang lebih akurat.
- Full text searchdapat dilakukan pada mode boolean, yang mencari berdasarkan kriteriaAND atau OR. Misalnya pada keyword pencarian "+Komputer +Mouse”, makaakan 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 di atas, fulltextsearch dapat bekerja dengan cepat dan efektif.
Walaupun pada dasarnya metodefulltextsearchhanya terdiri atas dua fungsi utama, yaitu index dan pencarian, tetapiterdapat cukup banyak aspek yang dapat dikembangkan agar performa fulltextsearch semakin baik lagi.
Pengembanganfitur-fitur pencarian juga dapat membuat proses pencarian menjadi lebihmudah, misalnya pada Google, Google dapat menyarankan kata yang benarsaat Anda salah mengetikkan keyword.
Contohnya jika Anda mengetikkan kata "sopisticate” pada search engine seperti Google atau Yahoo!, maka searchengine tetap mencari kata "sopisticate”, dan juga menyertakan pesan"Did you mean: sophisticate” sebagai kata yang lebih umum. Hal inisangat membantu jika Anda salah mengetik ataupun salah mengeja suatukata.
Walaupun pada umumnya hanya terdapat satu kotak search untuk pengguna mengetikkan keyword pada search engine, tetapi sering kali search engine menambahkan fungsi advancedsearch yang memungkinkan pengguna memberikan criteria pencarian yang lain.
Advanced searchpada Google memungkinkan Anda menentukan keyword dan kemudian melakukanpengaturan lebih lanjut, misalnya apakah ingin menambahkan keyword yangtidak ingin dimasukkan dalam pencarian, atau pencarian dilakukan dalamruang lingkup domain tertentu, dan masih banyak lagi.
Full Text Search pada Microsoft SQLServer
Metodefulltextsearch 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/. tur sendiri.
Microsoft SQL Server 2000 sebagai salah satu software RDBMS populer, menyertakan fulltextsearch sebagai komponen yang diaktifkan melalui sebuah service/engine, yaitu Microsoft Search.
Kemampuan Microsoft Search juga dapat digunakan untuk Microsoft Exchange dan SharePoint.
Microsoft Searchberfungsi untuk menciptakan index, menjalankan query, dan mengembalikanhasilnya berikut dengan informasi ranking pada service SQL Server.
Pada Microsoft SQL 2005, Microsoft Search digantikan oleh Microsoft Full-TextEngine for SQL Server (MSFTESQL). Langkah-langkah kon. gurasi untukmende. nisikan field yang di index, menciptakan katalog, dapatdilakukan melalui GUI ataupun dengan mengetikkan perintah SQL.
Setelah semua terkon. gurasi dengan benar, Anda dapat menjalankan query yang memanfaatkan fulltextsearch tersebut, salah satu contoh query sederhana pada Microsoft SQL Server adalah sebagai berikut: SELECT * FROM Produk CONTAINS (Keterangan, "Diskon”) Mudah dimengerti pada contoh query bahwa inti pencarian adalah pada perintah CONTAINS, disediakan empat perintah untuk pencarian fulltextsearch, yaitu FREETEXT, FREETEXTTABLE, CONTAINS, CONTAINSTABLE.
Full Text Search pada MySQL
MySQLmerupakan salah satu software RDBMS yang sering digunakan dalamaplikasi web, karena itu sudah seharusnya MySQL menawarkan fungsi fulltextsearch yang dapat diandalkan. MySQL sendiri telah menambahkan dukungan fulltextsearch sejak versi 3.23.23.
Terdapat beberapa ketentuan untuk menggunakan fulltextsearch pada MySQL, antara lain:
- Hanya dapat digunakan pada table MyISAM.
- Full text index hanya dapat diciptakan untuk . eld bertipe Char, Varchar, atau Text.
Untuk menambahkan fulltextindex pada field, digunakan perintah FULLTEXT, yang dapat dide. nisikanbersamaan pada saat penciptaan table dengan perintah CREATE TABLE,ataupun didefinisikan kemudian pada table yang telah tercipta denganALTER TABLE atau CREATE INDEX. Untuk query pencarian, digunakanperintah MATCH()... AGAINST sebagaimana contoh ilustrasi pencarian diatas.
Fulltextsearchpada MySQL juga mendukung query expansion, yang digunakan untukmemperluas pencarian. Contohnya jika pengguna mencari keyword"database”, bisa jadi informas yang dibutuhkan termasuk "MySQL”, "Oracle”, "DB2”, "RDBMS”, dan seterusnya yang berhubungan dengan keyword "database”.
Untuk menjalankan pencarian dengan query expansion, Anda harus menyertakan perintah QUERY EXPANSION, contoh penggunaannya adalah pada query sebagai berikut: SELECT * FROM Produk WHERE MATCH (Keterangan) AGAINST ('database' WITH QUERY EXPANSION);
Engine Pendukung Full Text Search
Tidak semua database mendukung kemampuan fulltextsearch, untuk itu alternatifnya adalah menggunakan engine/library 3
rd
party yang memberikan fasilitas fulltextsearch. Salah satu engine fulltextsearchadalah Sphinx, yang merupakan engine open source dan didesain untuk berintegrasi dengan database SQL dan bahasa scripting.
Library fulltextsearch 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, fulltextsearch mudah diaplikasikan dan memiliki performa yang baik. Beberapa aplikasi/ website yang cocok untuk menerapkan fulltextsearch antara lain adalah:
- 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.
- Situs Berita/Artikel.
MungkinAnda memiliki website dengan database berisi arsip kumpulan artikelatau berita, dimana pengguna dapat mengetikkan keyword untuk mencariartikel atau berita yang diinginkan. Fulltextsearchakan sangat penting untuk keperluan ini, karena keyword akan menjadisangat bervariasi dan tidak terbatas satu kata, di sini kemampuan fulltextsearch dapat dimanfaatkan dengan tepat.
Contoh kegunaan lainnya adalah . tur pencarian fulltextsearch mampu menelusuri tense, misalnya "run”, "ran”, "running” dalam Bahasa Inggris.
Tentunya, masih banyak aplikasi yang dapat dikembangkan dengan fulltextsearch, misalnya pencarian file, isi dokumen, kata-kata dalam kamus, dan sebagainya.
Akhir kata, semoga sekelumit pembahasan mengenai fulltextsearch ini dapat memperkaya pengetahuan, sehingga dapat diaplikasikan dengan baik.
LEBIH LANJUT
http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
http://en.wikipedia.org/wiki/Full_text_search
http://www.devarticles.com/c/a/MySQL/Getting-Started-With-MySQLs-Full-Text-Search-Capabilities/