Rabu, 07 April 2010

Mysql Smart Search

MySQL adalah sebuah database yang populer, beragam feature dimilik oleh mysql salah satunya adalah feature pencarian data secara smart yaitu FULL-TEXT SEARCHES.



FULL-TEXT SEARCHES adalah sebuah pencarian yang kemampuannya lebih dari kemampuan pencarian menggunakan statemen LIKE, untuk lebih jelasnya pada postingan ini akan memberikan contoh sederhana dari penggunaan feature FULL-TEXT


Pada contoh postingan ini kasus yang akan dibuat adalah tentang data artikel

Tahap 1
Membuat table untuk menyimpan data-data artikel dan menambahkan feature FULL-TEXT
CREATE TABLE artikel (
id int AUTO_INCREMENT NOT NULL PRIMARY KEY,
judul VARCHAR(255),
isi TEXT,
FULLTEXT (judul,isi));
bagian yang penting dari DDL tabel artikel adalah baris FULLTEXT (judul,isi). baris tersebut adalah sebuah definisi yang memberitahu pada mysql bahwa field judul dan isi menggunakan feature FULLTEXT


Tahap 2
Memasukan data-data artikel sebagai contoh
INSERT INTO artikel (judul, isi) VALUES
  ('Apa itu PHP ','php adalah server side scripting open source....'),
  ('Instalasi PHP','Tahap pertama instalasi PHP adalah... '),
  ('Instalasi APC di PHP','Tahap pertama instalasi APC adalah...'),
  ('Optimasi PHP','Hal-hal untuk melakukan optimasi PHP adalah sebagai berikut...'),
  ('PHP, RUBY, JAVA','Perbandingan PHP dengan RUBY, JAVA adalah sebagai berikut...'),
  ('PHP dan MySQL ','PHP biasa nya dipasangkan dengan Database MySQL karena...'),
  ('XAMPP', 'XAMMP adalah sebuah paket instalasi yang didalamnya ada PHP, MYSQL..'),
  ('Framework PHP','Berbagai macam framework php antarlain ZEND, PRDDO, SYMFONY, ...')


Tahap 3
Melakukan pencarian data menggunakan feature FULLTEXT. feature FULLTEXT memiliki 3 Mode yaitu :
  • IN NATURAL LANGUAGE MODE adalah sebuah mode pencarian yang bersifat natural/umum, secara sekilas mode pencarian ini seperti pencarian menggunakan LIKE.
  • WITH QUERY EXPANSION adalah sebuah mode pencarian yang mana kata-kata dari hasil pencariannya dari sebuah row yang paling relevan menjadi kata kunci dalam pencarian juga.
  • IN BOOLEAN MODE adalah sebuah mode pencarian dengan mengkombinasikan operator-operator seperti +,-,()," dsb untuk meningkat kemampuan dalam pencarian.
Sepintas mode pencarian IN BOOLEAN MODE seperti keyword yang ada di search engine seperti google.com. Secara pribadi IN BOOLEAN MODE adalah mode pencarian yang menurut saya yang paling menarik.

Jadi yang akan dibahas pada posting ini adalah feature FULLTEXT menggunakan mode IN BOOLEAN MODE, berikut ini adalah contoh-contoh penggunaannya :

A. Melakukan pencarian kata INSTALASI pada field judul dan isi tetapi yang tidak mengandung kata XAMPP
SELECT * FROM artikel WHERE MATCH (judul,isi)  AGAINST ('INSTALASI -XAMPP' IN BOOLEAN MODE);

+----+----------------------+----------------------------------------+
| id | judul | isi |
+----+----------------------+----------------------------------------+
| 22 | Instalasi PHP | Tahap pertama instalasi PHP adalah... |
| 23 | Instalasi APC di PHP | Tahap pertama instalasi APC adalah... |
+----+----------------------+----------------------------------------+

Bagian penting dari perintah pencarian data diatas adalah MATCH sebagai perintah untuk menentukan pencarian kedalam field apa saja. 

Kemudian AGAINST adalah tempat untuk meletakan kata atau keyword yang akan cari. dan IN BOOLEAN MODE adalah perintah untuk menggunakan mode pencarian IN BOOLEAN MODE

simbol - pada tulisan -XAMMP mengartikan pencarian tidak boleh mengandung kata XAMPP


B. Melakukan pencarian yang pada row tersebut ditemukan kata instalasi dan mysql
SELECT * FROM artikel WHERE MATCH (judul,isi)  AGAINST ('+instalasi +mysql' IN BOOLEAN MODE);

+----+-------+----------------------------------------------------------------------+
| id | judul | isi |
+----+-------+----------------------------------------------------------------------+
| 27 | XAMPP | XAMMP adalah sebuah paket instalasi yang didalamnya ada PHP, MYSQL.. |
+----+-------+----------------------------------------------------------------------+
simbol + pada kata +instalasi +mysql adalah sebuah operator yang mengartikan pada row tersebut harus mengadung kata tersebut


C. Melakukan pencarian yang pada row tersebut ditemukan kata yang berawalan my
SELECT * FROM artikel WHERE MATCH (judul,isi)  AGAINST ('my*' IN BOOLEAN MODE);

+----+----------------+----------------------------------------------------------------------+
| id | judul | isi |
+----+----------------+----------------------------------------------------------------------+
| 26 | PHP dan MySQL | PHP biasa nya dipasangkan dengan Database MySQL karena... |
| 27 | XAMPP | XAMMP adalah sebuah paket instalasi yang didalamnya ada PHP, MYSQL.. |
+----+----------------+----------------------------------------------------------------------+
simbol * pada kata my* adalah sebuah operator yang mengartikan sebuah karakter apa saja pada sebuah kata

D. Melakukan pencarian yang pada row persis mengandung kata INSTALASI PHP
SELECT * FROM artikel WHERE MATCH (judul,isi)  AGAINST ('"INSTALASI PHP"' IN BOOLEAN MODE);

+----+---------------+----------------------------------------+
| id | judul | isi |
+----+---------------+----------------------------------------+
| 22 | Instalasi PHP | Tahap pertama instalasi PHP adalah... |
+----+---------------+----------------------------------------+
simbol " pada kata "INSTALASI PHP" mengartikan pencarian kata yang sama persis dengan yang kata yang ada didalam kutip

  • Untuk melihat operator-operator yang disediakan oleh mysql untuk mode IN BOOLEAN MODE dapat dilihat di klik
  • Secara default Msyql Fulltext membatasi jumlah karakter pencarian sebanyak empat buah. Untuk mengubahnya dapat melihat di klik

Tidak ada komentar:

Posting Komentar