# Hack Your Skills! to be Professional Mechatronics
Oke, kita langsung praktek. Langkah-langkah yang akan kita lakukan adalah sebagai berikut:
Buat tabel artikel dan tabel filter_kata seperti gambar berikut:
Atau import SQL berikut:
Berikutnya, buatlah file artikel.php dengan isi sebagai berikut:
Yang terakhir, kita tengok hasilnya. Artikel yang atas sebelum difilter dan Artikel yang bawah setelah difilter:
Implementasi Algoritma KMP Multi Search via Database (2)
ElangSakti
Algoritma KMP
,
Filter Kata
,
Informatika
,
Pecarian Buta
,
Pencarian Kata
,
Pencocokan String
,
PHP
,
Scrap of Scripts
15 komentar
Bagaimana menfungsikan algoritma KMP agar bisa memfilter kata-kata jorok pada bagian komentar suatu artikel? Bagaimana jika Algoritma KMP ngambil datanya dari database? Mari kita bahas pada tulisan ini..
Sebelumnya kita sudah membahas apa itu algoritma string matching KPM dan implementasinya dalam pencarian kata, baca Algoritma KMP dengan PHP dan Implementasi KMP dengan PHP 1. Selanjutkan kita akan membahas lebih jauh beberapa implementasi dari algoritma ini. Kasusnya adalah, kita ingin memfilter kata-kata jorok yang muncul pada artikel berdasarkan tabel kata-kata jorok.
Oke, kita langsung praktek. Langkah-langkah yang akan kita lakukan adalah sebagai berikut:
1. Membuat tabel artikel dan tabel filter_kata pada database(pada kasus ini kita gunakan MySQL)
2. Buat halaman artikel dan meng-import file kmp.php, versi terakhir kelas KMP bisa dicek di Core Algoritma KMP
3. Percobaan dan hasilBuat tabel artikel dan tabel filter_kata seperti gambar berikut:
Atau import SQL berikut:
/*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; CREATE DATABASE /*!32312 IF NOT EXISTS*/`web` /*!40100 DEFAULT CHARACTER SET latin1 */; USE `web`; /*Table structure for table `artikel` */ DROP TABLE IF EXISTS `artikel`; CREATE TABLE `artikel` ( `id_artikel` int(11) NOT NULL, `judul` varchar(1024) DEFAULT NULL, `isi` text, PRIMARY KEY (`id_artikel`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; /*Data for the table `artikel` */ insert into `artikel`(`id_artikel`,`judul`,`isi`) values (1,'Bahasa Sanskerta','Bahasa Sanskerta (ejaan tidak baku: \"Sansekerta\") adalah salah satu bahasa Indo-Eropa paling tua yang masih dikenal dan sejarahnya termasuk yang terpanjang. Bahasa yang bisa menandingi \'usia\' bahasa ini dari rumpun bahasa Indo-Eropa hanya bahasa Het. Bahasa Het tak ada kata jeruk. Kata Sanskerta, dalam bahasa Sanskerta Sa?sk?tabh?sa artinya adalah bahasa yang sempurna. Maksudnya, lawan dari bahasa Prakerta, atau bahasa rakyat. Di Indonesia tidak ada orang yang suka berkata jorok sebab kata-kata jorok bisa membuat orang juruk. Antara jorok, juruk, dan jeruk merupakan kata yang sangat manis.\r\n\r\nPosisinya dalam kebudayaan Asia Selatan dan Asia Tenggara mirip dengan posisi bahasa Latin dan Yunani di Eropa. Orang-orang tersebut gemar memakan jeruk. Bahasa Sanskerta berkembang menjadi banyak bahasa-bahasa modern di anakbenua India. Bahasa ini muncul dalam bentuk pra-klasik sebagai bahasa Weda. Yang terkandung dalam kitab Rgweda merupakan fase yang tertua dan paling arkhais. Arkhais berarti ketidak sopanan yang menjorok 3 cm ke kiri. Teks ini ditarikhkan berasal dari kurang lebih 1700 SM dan bahasa Sanskerta Weda adalah bahasa Indo-Arya yang paling tua ditemui dan salah satu anggota rumpun bahasa Indo-Eropa yang tertua.'); /*Table structure for table `filter_kata` */ DROP TABLE IF EXISTS `filter_kata`; CREATE TABLE `filter_kata` ( `kode_kata` int(11) NOT NULL, `kata_jorok` varchar(200) DEFAULT NULL, `kata_bagus` varchar(200) DEFAULT NULL, PRIMARY KEY (`kode_kata`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; /*Data for the table `filter_kata` */ insert into `filter_kata`(`kode_kata`,`kata_jorok`,`kata_bagus`) values (1,'jorok','Kata Bagus 1'),(2,'juruk','Kata Bagus 2'),(3,'jeruk','Kata Bagus Tiga'); /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
Berikutnya, buatlah file artikel.php dengan isi sebagai berikut:
<?php // koneksi ke database $c = mysql_connect("localhost", "root", ""); $db = mysql_select_db("web", $c); if(!$db){ echo "Purcase DB! :p"; exit(); } include_once("kmp.php"); // ambil daftar kata jorok $katajorok = array(); $kata = mysql_query("select * from filter_kata"); while($jorok = mysql_fetch_array($kata)){ $katajorok[] = $jorok; } $KMP = new KMP(); $art = mysql_query("select * from artikel"); while($teks = mysql_fetch_array($art)){ $hasil = $teks['isi']; foreach($katajorok as $pattern){ $hasil = $KMP->KMPReplace($pattern['kata_jorok'],'<b style="color:red" >'.$pattern['kata_jorok'].'</b>',$hasil); } echo "<div style='width:600px;'>"; echo "<h3>".$teks['judul']."</h3><hr/>"; echo nl2br($hasil); echo "</div>"; } $art = mysql_query("select * from artikel"); while($teks = mysql_fetch_array($art)){ $hasil = $teks['isi']; foreach($katajorok as $pattern){ $hasil = $KMP->KMPReplace($pattern['kata_jorok'],'<b style="color:blue" >'.$pattern['kata_bagus'].'</b>',$hasil); } echo "<div style='width:600px;'>"; echo "<h3>".$teks['judul']."</h3><hr/>"; echo nl2br($hasil); echo "</div>"; } ?>
Yang terakhir, kita tengok hasilnya. Artikel yang atas sebelum difilter dan Artikel yang bawah setelah difilter:
Top Artikel :
Written by ElangSakti
Implementasi Algoritma KMP Multi Search via Database (2)
Bahasan: Bagaimana menfungsikan algoritma KMP agar bisa memfilter kata-kata jorok pada bagian komentar suatu artikel? Bagaimana jika Algoritma KMP...
Published at Senin, 18 Maret 2013, Updated at Senin, 18 Maret 2013
Reviewed by dr. on
Rating: 4.7
Implementasi Algoritma KMP Multi Search via Database (2)
Bahasan: Bagaimana menfungsikan algoritma KMP agar bisa memfilter kata-kata jorok pada bagian komentar suatu artikel? Bagaimana jika Algoritma KMP...
Published at Senin, 18 Maret 2013, Updated at Senin, 18 Maret 2013
Reviewed by dr. on
Rating: 4.7
Langganan:
Posting Komentar
(
Atom
)
mz, saya tanya tabel cara menentukan tabel KMP next itu gmn y?
BalasHapussaya tlong diberi penjelasan... terima kasih..
Ketika proses pencarian, yang dicocokkan kan perkarakter. Nah, untuk mempercepat proses pencarian, maka dibuatlah tabel lompatan. Misalkan patternnya adalah "adalah", maka yang ada dalam tabel adalah jumlah lompatan untuk karakter 'a','d','l', dan 'h'. Lompatan dilakukan ketika karakter pada pattern tidak cocok dengan karakter pada text saat proses pencocokan.
BalasHapusmungkin bisa di cek di sini. http://www.elangsakti.com/2013/03/php-modifikasi-class-algoritma-kmp-untuk-replace-string/
bang ko error ya..
BalasHapus"Notice: Undefined offset: 5 in C:\wamp\www\kmp\kmp.php on line 58"
solusinya di sini http://www.elangsakti.com/2013/04/solusi-peringatan-undefined-offset-n.html
Hapussaya mau tanyaa mas
BalasHapusbisa ga algoritma kmp dijadiin buat pencarian
misalnya pencarian buku perpus gitu mas
saya coba koding yang ini kan mas
saya tambah artikel yang ga ada kata joroknya tuh mas , tapi tetep nampil mas
gimana ya biar kalau yang ga ada kata joroknya ga nampil gitu mas kan biar jadi kaya pencarian gitu maas
makasih mas
saya tunggu jawabannya mas :)
bisa mas..
Hapusmas Iyan bisa menggunakan fungsi KMPSearch(), misalnya begini:
$kmp = new KMP();
$hasil = $kmp->KMPSearch($keyword, $text);
if(count($hasil) > 0){
echo $text;
}
Mas, kalau pakai brute force gimana mas?
BalasHapusMas, cari menghitung jumlah kata yang jorok gimana ya mas? count($hasil)?
BalasHapusbetul.
HapusMas pengen nanya.. kan saya mau buat tugas akhir tentang forum diskusi. jadi inputan / kiriman dari user akan dicocokin dengan kata kunci di yang ada ditabel keyword. jika kecocokan lebih dari misalnya
BalasHapus5 kata, maka kiriman tersebut akan disimpan ditabel post. Ini bisa untuk menyelesaikan kasus seperti itu atau tidak ya mas?
Bisa mas.
Hapusuntuk mencocokkannya perkata gimana ya mas?
Hapusbole cek di komentar pada link ini.. http://www.elangsakti.com/2013/03/implementasi-algoritma-string-matching.html?showComment=1372796714000#c8397391511810610730
HapusSetelah saya cek ternyata kmp.php banyak versinyanya(modifikasi) ya mas? saya harus menggunakan versi yg mana mas?
BalasHapuskalau digunakan sebagai pencarian kata untuk kamus berbasis web bisa tidak mas ?
BalasHapus