Selasa, 02 Desember 2014

Fungsi MATCH() ... AGAINST di MYSQL.



Fungsi MATCH() ... AGAINST di MYSQL.

Fitur “search” pada website adalah hal yg sudah lazim digunakan, karena untuk mempermudah user mencari item yg diperlukan. Untuk membuat fitur “search” tersebut biasanya menggunakan command “LIKE” agar menghasilkan pencarian yg diinginkan.
Misalnya saja user ingin mencari alamat Jl.Sudirman. Maka user tinggal mengetikkan sudirman pada form “search” tadi.
Querynya :
Select nama,alamat,telepon,fax,kota,kodepos from member where alamat like ‘%sudirman%’.
Tapi biasanya form “search” tadi bisa digunakan untuk mencari selain alamat misalnya nama,kota. Jadi querynya :
Select nama,alamat,telepon,fax,kota,kodepos from member where nama like ‘%sudirman%’ or alamat like ‘%sudirman%’ or kota like ‘%sudirman%’.
Maka akan menampilkan member yg bernama Sudirman atau member yg beralamat di Sudirman atau member yg berada di kota Sudirman.
Untuk menyederhanakan fungsi di atas agar tidak menggunakan fungsi “LIKE” secara berulang. MySQL sudah mendukung untuk pengindeksan teks lengkap dalam pencarian data.
Syaratnya adalah:
·         Indeks teks lengkap di MySQL adalah indeks tipe FULLTEXT.
·         Indeks teks lengkap hanya dapat digunakan dengan tabel MyISAM. (Dalam MySQL 5.6 dan ke atas, mereka juga dapat digunakan dengan tabel InnoDB.) Indeks penuh-teks dapat dibuat hanya untuk CHAR, VARCHAR, atau kolom TEXT.
·         Definisi indeks fulltext dapat diberikan dalam pernyataan CREATE TABLE ketika sebuah tabel dibuat, atau ditambahkan kemudian menggunakan ALTER TABLE atau CREATE INDEX.
·         Untuk set data yang besar, jauh lebih cepat untuk memuat data Anda ke dalam tabel yang tidak memiliki indeks fulltext dan kemudian membuat indeks setelah itu, selain memuat data ke tabel yang memiliki indeks fulltext ada.
Pertama ubah field-field nama,alamat dan kota ke tipe FULLTEXT.
ALTER TABLE member ADD FULLTEXT search_index (nama,alamat,kota).
Kedua ubah querynya menggunakan MATCH() dan AGAINST().
Select nama,alamat,telepon,fax,kota,kodepos from member where MATCH(nama,alamat,kota) AGAINST(‘sudirman’);
Dengan demikian MATCH – AGAINST ini salah satu cara untuk optimasi pencarian pada database MySQL. #match,#against.
Pasti bermanfaat. #mysql