• Tidak ada hasil yang ditemukan

Login-KUHP Data

HEADER Kode Pasal

4.2 Implementasi Basis Data

Pada tahap ini akan dibahas mengenai implementasi basis data dari perancangan yang telah dibahas sebelumnya. Pada pemrograman berbasis web

mengenal adanya penyimpanan data ke dalam file. Yaitu semua data yang ada dilakukan penyimpanan ke dalam basis data sesuai dengan tabel yang bersangkutan. Implementasi basis data pada aplikasi ini menggunakan aplikasi

aplikasi terbuka. Aplikasi terbuka digunakan untuk melakukan proses insert dan

update.

Pada perancangan yang telah dibuat sebelumnya, terdapat 2 tabel yang akan digunakan dalam aplikasi ini, yaitu tabel pasal dan pengertian pasal. Tabel pasal ini berisi pasal-pasal yang ada dalam KUHP dan tabel pengertian pasal berisi penjelasan-penjelasan dari tabel pasal tersebut. Proses yang berjalan pada aplikasi ini adalah suatu proses pencarian pasal hukum KUHP berdasarkan algoritma Boyer – Moore. Untuk proses insert data pasal dilakukan proses insert query yang dilakukan oleh admin itu sendiri. Berikut penjelasan dari script yang digunakan untuk proses insert data pasal.

<?

include("../conn.php"); $id=$_GET['id'];

$sql1 = "select isi_pasal from pasal where id_pasal='".$id."'"; $run1 = mysql_query($sql1);

if(mysql_num_rows($run1)>0) $res1 = mysql_fetch_array($run1);

$sql2 = "select isi_pengertian from pengertian where id_pasal='".$id."'";

$run2 = mysql_query($sql2);

if(mysql_num_rows($run2)>0) $res2 = mysql_fetch_array($run2); if(mysql_num_rows($run1)>0){

echo $res1['isi_pasal']."###".$res2['isi_pengertian']; } else echo '0';

?>

Gambar 4.1 Fungsi Select

Dari script di atas dapat dijelaskan adanya proses koneksi ke database. Selanjutnya proses queryinsert pada tabel pasal. Dilakukan eksekusi query insert

pada tabel pasal. Setelah itu terdapat proses kondisi jika data pasal lebih dari 1 maka dilakukan proses query insert tabel pengertian pasal yang mana id pasal

pengertian pasal. Setelah itu hasil pengisian tabel pasal dan tabel pengertian pasaml ditampilkan pada aplikasi.

Untuk proses algoritma Boyer – Moore itu sendiri melalui beberapa tahapan, antara lain pengambilan data dari tabel pasal, kemudian dilakukan proses

stoplist, sorting dan penyimpanan ke dalam array yang dilakukan dalam suatu

query. jika dari pencarian menggunakan Boyer-Moore tidak dapat memberikan hasil, maka dilanjutkan dengan proses stemming. Berikut penjelasan dari script-script yang digunakan untuk implementasi proses pencarian dengan Boyer-Moore

dan Stemming.

function highlightWords($string,$word){

$new=str_ireplace($string,'<spanclass="highlight_word">'.$string.' </span>', $word);

/*** return the highlighted string ***/ return $new;

}

Gambar 4.2 Potongan Source Code Function Highlightwords

Stoplist merupakan proses menghilangkan kata-kata umum. Misalkan

dalam, dan, karena, mana, untuk dan lainnya. Dalam pembahasan ini hanya batasi pada bahasa indonesia saja. Dalam function stoplist ini menggunakan fungsi-fungsi string yang ada, misalnya substr yaitu sebuah fungsi php yang berguna untuk memotong atau mengambil karakter. Ltrim dan rtrim yaitu sebuah fungsi penangambilan karakter berdasarkan string yang ada. Dari function dibawah ini dapat dijelaskan proses yang terjadi pertama kali pengenalan karakter dari kata kunci, selanjutnya dilakukan replace karakter. Selanjutnya terdapat pengkondisian jika string pada posisi pertama bernilai spasi maka yang dilakukan adalah

pengambilan nilai karakter string dari kiri dan kanan. Jika tidak bernilai spasi maka dilakukan pengambilan string dari sebelah kanan. Dan hasil dari pengkondisian IF ini akan dikembalikan. Yang mana tampak pada function

dibawah ini.

function stoplist($kata){

$kata = preg_replace("/[^a-zA-Z\s]/", "", $kata); $kata = str_replace(" "," ",$kata);

if(substr($kata,0,1)==' ') $kata=ltrim(rtrim($kata)); else $kata=rtrim($kata);

return $kata; }

Gambar 4.3 Potongan Source Code Function Stoplist

Fungsi yang digunakan dalam algoritma Boyer-Moore selain function

stoplist adalah fungsi-fungsi untuk pemotongan karakter yang memiliki imbuhan, baik di awal maupun di akhir. Pada function step1 memiliki parameter berupa string. Dilakukan pengkondisian jika dua huruf pertama pada string adalah “di” atau “ke” atau “se” maka dilakukan pengkondisian lagi jika jumlah karakter pada

string ke dua melebihi tiga, maka dilakukan pengambilan karakter mulai karakter kedua dari string yang ada. Yang mana tampak pada function dibawah ini.

function step1($kata){

if(substr($kata,0,2)=='di'orsubstr($kata,0,2)=='ke'orsubstr( $kata,0,2)=='se'){

if(strlen(substr($kata,2))>3) $kata = substr($kata,2); }

return $kata; }

Selanjutnya fungsi yang dilakukan pada proses awalan ini adalah pemisahan karaker-karakter yang ada berdasarkan jenisnya, seperti karakter vokal dan karakter konsonan. Kemudian dilakukan pemotongan berdasarkan imbuhan-imbuhan yang ada dimulai dari imbuhan-imbuhan me dan pe, imbuhan-imbuhan be dan te. Pada setiap imbuhan ini dilakukan pengkondisian IF untuk mengambilan string dasar dari string yang ada. Yang mana tampak pada function dibawah ini.

Gambar 4.5 Potongan Source Code Function Stemming Step 2

function step2($kata){ $vokal = array('a','i','u','e','o'); $rule1 = array('k','g','h','q'); $rule2 = array('b','f','p','v'); $rule3 = array('c','d','j','s','z'); $rule4 = array('l','m','n','r','y','w','x'); if(substr($kata,0,4)=='meng' or substr($kata,0,4)=='peng'){ if(in_array(substr($kata,4,1),$vokal)orin_array(substr($kata,4,1) ,$rule1)){

if(substr($kata,4,3)=='ert'){ $kata = substr($kata,2);} elseif(substr($kata,4,2)=='er'orsubstr($kata,4,3)=='ata'){

$kata = 'k'.substr($kata,4); }

else $kata = substr($kata,4); }

}

else if(substr($kata,0,4)=='meny' or substr($kata,0,4)=='peny'){ if(in_array(substr($kata,4,1),$vokal) and substr($kata,4,2)!='ata') {

$kata = 's'.substr($kata,4); }

else $kata = 'k'.substr($kata,4); }

else if(substr($kata,0,3)=='mem' or substr($kata,0,3)=='pem'){ if(substr($kata,3,5)=='idana'){ $kata = "p".substr($kata,3); } else if(in_array(substr($kata,3,1),$rule2)){ $kata = substr($kata,3); } }

else if(substr($kata,0,3)=='men' or substr($kata,0,3)=='pen' or substr($kata,0,3)=='per'){ if(in_array(substr($kata,3,1),$vokal)and!in_array(substr($kata,4,1),$ vokal)){ $kata = 't'.substr($kata,3); } else if(in_array(substr($kata,3,1),$vokal)){ $kata = substr($kata,2); }

else $kata = substr($kata,3); }

else if(substr($kata,0,2)=='me' or substr($kata,0,2)=='pe'){

if(in_array(substr($kata,2,1),$vokal)orin_array(substr($kata,2,1),$ru le4)){ $kata = substr($kata,2); } } if(substr($kata,0,3)=='ber' or substr($kata,0,3)=='ter'){ $kata = substr($kata,3); }

else if(substr($kata,0,2)=='be' or substr($kata,0,2)=='te'){ if(strlen(substr($kata,2))>4){

$kata = substr($kata,2); }

}return $kata;}

(lanjutan) Gambar 4.5 Potongan Source Code Function Stemming Step 2

Selanjutnya adalah proses untuk akhiran string yang ada. Disini juga dibedakan karakter-karakter yang ada, yaitu karakter vokal dan karakter konsonan. Fungsi ini serupa dengan fungsi untuk pemotongan imbuhan awalan, namun untuk fungsi ini dimulai dari belakang. Sehingga nantinya ditemukan kata dasar dari string yang ada. Yang mana tampak pada function dibawah ini.

function step3($kata){

$vokal = array('a','i','u','e','o'); $akhir1 = array('lah','kah','pun','tah'); $akhir2 = array('ku','mu');

$akhir3 = array('nya');

if(in_array(substr($kata,-3),$akhir1) and substr($kata,-5,2)!='ng' and substr($kata,0,(strlen($kata)-3))>2){

$kata = substr($kata,0,(strlen($kata)-3)); }

in_array(substr($kata,-$kata = substr(in_array(substr($kata,-$kata,0,(strlen(in_array(substr($kata,-$kata)-3)); }

if(substr($kata,-1)=='i'){

if(strlen($kata)>4 and (substr($kata,0,2)!='ng' and substr($kata,-2,1)!='t')){ $kata = substr($kata,0,(strlen($kata)-1)); } } if(substr($kata,-3)=='kan'){ if(strlen(substr($kata,0,strlen($kata)-3))>3 and substr($kata,0,2)!='ng'){ $kata = substr($kata,0,(strlen($kata)-3)); } } if(substr($kata,-2)=='an'){

if(strlen(substr($kata,0,(strlen($kata)-2)))>3 and substr($kata,-4,2)=='an'){

$kata = substr($kata,0,(strlen($kata)-2)); }

elseif(strlen(substr($kata,0,(strlen($kata)-2)))>3 and substr($kata,-4,2)!='an' and $kata!='dengan'){

$kata = substr($kata,0,(strlen($kata)-2)); }

}

return $kata; }

Gambar 4.6 Potongan Source Code Function Stemming Step 3

Proses dibawah ini menjelaskan tentang proses stemming bahasa indonesia. Dimana proses ini dibagi berdasarkan tiga step, yaitu step1 dan step2 yaitu penghapusan imbuhan awalan dan step3 penghapusan imbuhan akhiran. Yang mana tampak pada

function stem($kata){

$kata = step1($kata);

$kata = step2($kata);

$kata = step3($kata); return $kata;}

Selanjutnya adalah function pencarian dengan menggunakan algoritma

Boyer-Moore. Function ini memiliki tiga parameter yaitu id, string dan cari. String yang ada disimpan dalam sebuah variabel word dengan menggunakan fungsi strtolower() yaitu suatu fungsi yang digunakan untuk mengubah huruf kapital menjadi huruf kecil. Setelah itu dilakukan stoplist pada variabel word yang ada dan yang terakhir adalah membuang spasi yang ada pada variabel word. Kemudian dilakukan proses looping untuk menghitung jumlah kata yang ada dan dilakukan proses pengindeksan yang disimpan ke dalam array. Yang mana tampak pada function dibawah ini.

function cari_bm($idx,$string,$cari){

$word = strtolower($string);

$word = stoplist($word);

$word = split(" ",$word);

$s=0;

$cari = split(" ",$cari);

for($i=0;$i<count($cari);$i++){ for($j=0;$j<count($word);$j++){ ($k=0;$k<=strlen($word[$j])-strlen($cari[$i]);$k++){ if($cari[$i]==substr($word[$j],$k,strlen($cari[$i]))){ $word_list[$s]=$word[$j]; $word_idx[$s]=$j; $s++; }}}} if(is_array($word_idx)) { array_unique($word_idx); array_unique($word_list); }

if(count($word_idx)>0) {

$val['id'] = $idx;

$val['rank'] = count($word_idx);

$val['word'] = $word_list;

}

else $val = NULL;

return $val;

}

Gambar 4.8 Potongan Source Code Function Cari Boyer-Moore

Jika proses pencarian menggunakan algoritma Boyer-Moore tidak dapat ditemukan, maka digunakan proses pencarian dengan menggunakan proses stemming. Stemming yang digunakan adalah stemming indonesia. Untuk alur-alur proses yang ada pada function cari_stem ini tidak jauh berbeda dengan proses pencarian dengan algortima Boyer-Moore. Yang membedakan diantara keduanya adalah proses loop yang ada pada function cari_stem hanya satu kali loop untuk menemukan jumlah count yang ada pada kata kunci sedangkan pada algoritma

Boyer-Moore ada dua kali proses loop. Yang mana tampak pada function dibawah ini.

function cari_stem($idx,$string,$cari){ $word = strtolower($string); $word = stoplist($word); $cari = split(" ",$cari); $word = split(" ",$word); for($i=0;$i<count($cari);$i++){ $cari[$i] = stem($cari[$i]); } for($i=0;$i<count($word);$i++){ $word[$i] = stem($word[$i]); } $s=0;

for($i=0;$i<count($cari);$i++){ for($j=0;$j<count($word);$j++){ if($cari[$i]==$word[$j]){ $word_st[$s]=$word[$j]; $word_idst[$s]=$j; $s++; } } } if(is_array($word_idst)) { array_unique($word_idst); array_unique($word_st); } if(count($word_idst)>0) { $val['id'] = $idx; $val['rank'] = count($word_idst); $val['word'] = $word_st; }

else $val = NULL; return $val; }

Gambar 4.9 Potongan Source Code Function Stemming

Dokumen terkait