LISTING PROGRAM Levenshtein Distance.php <?php function levenshteind($this = "", $that = "") { // memeriksa apakah kedua kata sama if ($this === $that) return 0; // dimensi matrix $m = strlen($this); $q = strlen($that); // memulai membuat matrix // kiri atas di inisialisasikan dengan nilai 0 $matrix[0][0] = 0; //membuat array dari setiap huruf for ($i = 1; $i <= $m; $i++) { $matrix[$i][0] = $i; if ($i!= $m && substr($this, $i) === substr($that, $i)) return $i; for ($i = 1; $i <= $q; $i++) {
$matrix[0][$i] = $i; if ($i!= $q && substr($this, $i) === substr($that, $i)) return $i; // membandingkan seluruh matrix dimulai dari kiri atas untuk menemukan nilau minimum for ($i = 1; $i <= $m; $i++) { $piece = substr($this, $i - 1, 1); for ($j = 1; $j <= $q; $j++) { $minimum = $m + $q; if ( ($matrix[$i - 1][$j] + 1) < $minimum) $minimum = $matrix[$i - 1][$j] + 1; if ( ($matrix[$i][$j - 1] + 1) < $minimum) $minimum = $matrix[$i][$j - 1] + 1; if ($piece === substr($that, $j - 1, 1)) $extracost = 0; else $extracost = 1; if ( ($matrix[$i - 1][$j - 1] + $extracost) < $minimum) $minimum = $matrix[$i - 1][$j - 1] + $extracost;
$matrix[$i][$j] = $minimum; // memberikan nilai terendah pada elemen paling kanan bawah return $matrix[$m][$q]; echo levenshteind("pemrograman","permograman"); Boyer Moore.php <?php function boyermoore($cari, $kata, $kata2){ $ditemukan=0; //$cari="cari"; //$kata="mengubah kata yang dicari ke bentuk array"; $cari=strtolower($cari); $kata=strtolower($kata); $cari_arr= str_split($cari); //mengubah kata yang dicari ke bentuk array $cari_len= count($cari_arr); // menghitung panjang kata yang dicari $kata_arr= str_split($kata); //mengubah kata yang diperiksa ke bentuk array $kata_len= count($kata_arr); // menghitung panjang kata yang diperiksa
$batas=$kata_len-$cari_len; for ($n=0; $n < $cari_len; $n++) { $nilai=$cari_len-1-$n; $char=$cari_arr[$n]; if($nilai==0) $val[$char]=1; else $val[$char]=$nilai; /* for ($n=0; $n < $cari_len; $n++) { $char=$cari_arr[$n]; echo "$char = ".$val[$char]; */ $x=0; $y=1; while($x<=$batas) // perulangan sebanyak panjang kata yang diperiksa dikurang panjang kata yang di cari { $iterasike=$y; $cocok='';
for ($z=$x; $z < $cari_len+$x; $z++) { $cocok.=$kata_arr[$z]; if ($cocok==$cari) { $ditemukan=1; break; $akhir=$kata_arr[$x+$cari_len-1]; if (in_array($akhir, $cari_arr)) { $x+=$val[$akhir]; else{ $x+=$cari_len; $y++; if ($x>$batas) { //echo "kata tidak ditemukan"; return ""; if ($ditemukan==1) {
//echo "kata ditemukan di iterasi ke $iterasike"; return $kata2; include "koneksi.php"; $cari=trim($_get['cari']); // menangkap variable cari yang dikirim $arr=array(); $result=mysql_query("select id_buku,judul_buku FROM buku",$koneksi) or die(mysql_error()); if(mysql_num_rows($result)>0){ //memuncullkan jika hasil lebih dari 0 while($data=mysql_fetch_row($result)){ $id=$data[0]; $kata=$data[1]; $isi=boyermoore($cari, $kata, $kata); if ($isi!= '') { $arr[]=array("id" => $id, "data" => $isi); //memasukkan data ke erray mysql_close($koneksi); echo json_encode($arr); //decode array kedalam json untuk di tampilkan?>
Detail_buku.php <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>user</title> <link href="css/style.css" rel="stylesheet" type="text/css"/> </head> <body> <?php $id=$_request['id']; include "koneksi.php"; $sql=mysql_query("select * from buku WHERE id_buku=$id",$koneksi)or die(mysql_error()); $data=mysql_fetch_array($sql); $judul_buku=$data['judul_buku']; $pengarang=$data['pengarang']; $penerbit=$data['penerbit']; $tahun_terbit=$data['tahun_terbit']; $edisi=$data['edisi']; $jenis=$data['jenis']; $deskripsi=$data['deskripsi']; $subjek=$data['subjek']; $bahasa=$data['bahasa']; $jumlah_eks=$data['jumlah_eks'];
?> <div id="wrapper"> <h1><?php echo $judul_buku?></h1> <table width='960'> <td class="col1" width='150'>judul Buku :</td> <td class="col2"><?php echo $judul_buku?></td> <td class="col1">pengarang :</td> <td class="col2"><?php echo $pengarang?></td> <td class="col1">penerbit :</td> <td class="col2"><?php echo $penerbit?></td> <td class="col1">tahun Terbit :</td> <td class="col2"><?php echo $tahun_terbit?></td> <td class="col1">edisi :</td> <td class="col2"><?php echo $edisi?></td> <td class="col1">jenis :</td> <td class="col2"><?php echo $jenis?></td>
<td class="col1">deskripsi :</td> <td class="col2"><?php echo $deskripsi?></td> <td class="col1">subjek :</td> <td class="col2"><?php echo $subjek?></td> <td class="col1">bahasa :</td> <td class="col2"><?php echo $bahasa?></td> <td class="col1">jumlah Eks :</td> <td class="col2"><?php echo $jumlah_eks?></td> </table> </div> </body> </html> Index.php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/tr/html4/strict.dtd"> <html> <head> <title>user</title> <script language="javascript" type="text/javascript" src="js/jquery.js"></script>
<script language="javascript" type="text/javascript" src="js/jquery.coolautosuggest.js"></script> <script language="javascript" type="text/javascript" src="js/jquery.coolfieldset.js"></script> <link rel="stylesheet" type="text/css" href="css/jquery.coolautosuggest.css" /> <link rel="stylesheet" type="text/css" href="css/style.css" /> <?php $cari = $_REQUEST['cari'];?> </head> <body> <div id="wrapper"> <?php set_time_limit(0); if(!isset($cari)) {?> <p align="center"> <img src="images/pintu_aceh.png" height="100"> </p> <img src="images/aceh_timur.png" height="100"> <div id="first_view"> <h3 align="center">implementasi ALGORITMA LEVENSHTEIN DISTANCE DAN BOYER MOORE UNTUK FITUR AUTOCOMPLETE DAN AUTOCORRECT PADA APLIKASI KATALOG PERPUSTAKAAN DAERAH ACEH TIMUR</h1> <form action="index.php"> Buku yang dicari : <input type="text" name="cari" id="text1" value="<?php echo $cari?>"/>
<input type="submit" value="cari" id="button"/> <script language="javascript" type="text/javascript"> $("#text1").coolautosuggest({ url:"data.php?cari=", //mengambil data pada data.php dengan mengirim variable cari else {?> </div> <?PHP <div> </form> ); </script> <!--form pemcarian--> <form action="index.php"> Buku yang dicari : <input type="text" name="cari" id="text1" value="<?php echo $cari?>"/> <input type="submit" value="cari" id="button"/> <script language="javascript" type="text/javascript"> $("#text1").coolautosuggest({ url:"data.php?cari=", //mengambil data pada data.php dengan mengirim variable cari </div> </form> <div id="correct"> ); </script>
<?php include "koneksi.php"; $terkecil = -1; $sql=mysql_query("select * from buku",$koneksi)or die(mysql_error()); //mengambil semua buku di database while($data=mysql_fetch_array($sql)){ //perulangan untuk membandingkan semua buku $kata=$data['judul_buku']; $cari=strtolower($cari); //konversi yang dicari menjadi huruf kecil semua menjadi huruf kecil semua $kata=strtolower($kata); //konversi buku $lev = levenshtein($cari, $kata); //mengambil nilai levenshtein if ($lev == 0) { //pemeriksaan apakah nilai levenshtein sama dengan 0 yang berarti cocok $terdekat = $kata; //mendefenisikan kata yang paling dekat jika lev ==0 $terkecil = 0; // mendefenisikan nilai lev terkecil yang didapat = 0 perulangan break; //menghentikan proses
if ($lev <= $terkecil $terkecil < 0) { // melakukan pemeriksaan apakah nilai lev ini lebih kecil dari sebelumnya $terdekat = $kata; //mendefenisikan kata yang paling dekat jika lev lebih kecil dari sebelumnya $terkecil = $lev; // mendefenisikan nilai lev jika lev lebih kecil dari sebelumnya objek yang di cari if($cari) //kata yang di keluarkan jika ada { if ($terkecil > 0) { $link_terdekat=urlencode($terdekat); echo "Apakah Maksud Anda: <a href='index.php?cari=$link_terdekat'>$terdekat ($terkecil)</a>?\n";?> </div> <div id="hasil"> <div id="kiri"> <h4>boyermoore (Auto Complete)</h4> <?php function boyermoore($cari, $kata, $kata2){ $ditemukan=0; //$cari="cari";
ke bentuk array"; //$kata="mengubah kata yang dicari $cari=strtolower($cari); $kata=strtolower($kata); $cari_arr= str_split($cari); //mengubah kata yang dicari ke bentuk array $cari_len= count($cari_arr); // menghitung panjang kata yang dicari $kata_arr= str_split($kata); //mengubah kata yang diperiksa ke bentuk array $kata_len= count($kata_arr); // menghitung panjang kata yang diperiksa $batas=$kata_len-$cari_len; for ($n=0; $n < $cari_len; $n++) { $nilai=$cari_len-1-$n; $char=$cari_arr[$n]; if($nilai==0) $val[$char]=1; else $val[$char]=$nilai; /* for ($n=0; $n < $cari_len; $n++) { $char=$cari_arr[$n]; echo "$char = ".$val[$char];
*/ $x=0; $y=1; while($x<=$batas) // perulangan sebanyak panjang kata yang diperiksa dikurang panjang kata yang di cari { $iterasike=$y; $cocok=''; $z++) { for ($z=$x; $z < $cari_len+$x; $cocok.=$kata_arr[$z]; if ($cocok==$cari) { $ditemukan=1; break; 1]; $akhir=$kata_arr[$x+$cari_len- $cari_arr)) if (in_array($akhir, { $x+=$val[$akhir];
else{ $x+=$cari_len; $y++; if ($x>$batas) { //echo "kata tidak ditemukan"; return ""; if ($ditemukan==1) { iterasi ke $iterasike"; //echo "kata ditemukan di return $kata2; variable cari yang dikirim $cari=trim($_get['cari']); // menangkap $arr=array(); $result=mysql_query("select id_buku,judul_buku,pengarang,penerbit,tahun_terbit FROM buku",$koneksi) or die(mysql_error()); // melakukan pengambilan dari database dengan nilai levenshtein kurang dari 15 yang diurutkan berdasarkan nilai lev terkecil while($data=mysql_fetch_array($result)){ $id=$data['id_buku'];
$kata= $data['judul_buku']; $kata); $isi=boyermoore($cari, $kata, if ($isi!= '') { $no++; $id=$data['id_buku']; $data['judul_buku']; $data['pengarang']; $data['penerbit']; $data['tahun_terbit']; $judul_buku= $pengarang= $penerbit= $tahun_terbit= echo " class='buku_wrapper'> <div <table> width='40'>$no</td> <td <td> <span ><a href='detail_buku.php?id=$id' class='judul'>$judul_buku</a></span><br/> <span class='pengarang'>$pengarang </span><br/> <span class='penerbit'>$penerbit </span><br/> <span class='tahun'>$tahun_terbit </span> </td>
</div> "; </table> </div>?> <div id="kanan"> <h4>levenshtein (Auto Correct)</h4> <?php if($cari) // hasil pencarian akan dikeluarkan jika ada objek yang di cari include "admin/library/class_paging.php"; { $file = "index.php"; $cari=urlencode($cari); $page = "cari=$cari"; // Memanggil dan menginisiasi class $p = new Paging; // Tentukan limit atau batas $batas = 10; // Cek halaman dan posisi data $posisi = $p->cariposisi($batas); $no=$posisi+1;
$search=$_request['search']; $query="select id_buku,judul_buku,pengarang,penerbit,tahun_terbit,levenshtein('$cari', judul_buku) as lev FROM buku ORDER BY lev"; $sql = mysql_query("$query LIMIT $posisi,$batas", $koneksi) or die (mysql_error()); $sql2 = mysql_query("$query"); $no=0; while($row=mysql_fetch_array($sql)) { $no++; $id=$row['id_buku']; $row['judul_buku']; $judul_buku= $pengarang=$row['pengarang']; $penerbit=$row['penerbit']; $tahun_terbit=$row['tahun_terbit']; echo " <div class='buku_wrapper'> <table> width='40'>$no</td> <td <td> ><a href='detail_buku.php?id=$id' class='judul'>$judul_buku</a></span><br/> class='pengarang'>$pengarang</span><br/> <span <span
class='penerbit'>$penerbit</span><br/> class='tahun'>$tahun_terbit</span> <span <span </td> </table> </div> "; // Dapatkan jumlah data keseluruhan $jmldata = mysql_num_rows($sql2); // Dapatkan jumlah halaman $jmlhalaman = $p- >jumlahhalaman($jmldata, $batas); // Cetak link navigasi halaman $linkhalaman = $p- >navhalaman($_get[halaman], $jmlhalaman, $page); <?php?> </div> </div> </body></html>?> </div> echo $linkhalaman;
DAFTAR RIWAYAT HIDUP Saya yang bertanda tangan dibawah ini : DATA PRIBADI Nama Alamat : Teuku Ighfar Hajar : Jalan Gajah Mada, Gang Makmur 15B, Medan Hp : 0811642809 Email :teukuighfarhajar@yahoo.com Tempat/tanggal lahir : Kuta Binjei/ 28 September 1992 Jenis Kelamin Status : Laki-laki : Belum Menikah PENDIDIKAN 1998-2004 : SD Negeri 1 Kuta Binjei 2004-2007 : MTsN 1 Kuta Binjei 2007-2010 : SMA Negeri Ungul Aceh Timur 2010-2013 : DIII Teknik Informatika 2013-2015 : S-1 Ekstensi Ilmu Komputer SEMINAR Seminar Nasional Literasi Informasi (SENARAI) 2014 Fakultas Ilmu Komputer dan Teknologi Informasi. Demikianlah Daftar Riwayat Hidup ini saya perbuat dengan sebenarnya. Hormat Saya, Teuku Ighfar Hajar