Implementasi Algoritma Levenshtein Distance dan Boyer Moore untuk Fitur Autocomplete dan Autocorrect pada Aplikasi Katalog Perpustakaan Daerah Aceh Timur

  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 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 ns="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'> <tr>

  <td class="col1" width='150'>Judul Buku :</td> <td class="col2"><?php echo $judul_buku?></td> </tr> <tr>

  <td class="col1">Pengarang :</td> <td class="col2"><?php echo $pengarang?></td> </tr> <tr>

  <td class="col1">Penerbit :</td> <td class="col2"><?php echo $penerbit?></td> </tr> <tr>

  <td class="col1">Tahun Terbit :</td> <td class="col2"><?php echo $tahun_terbit?></td> </tr> <tr>

  <td class="col1">Edisi :</td> <td class="col2"><?php echo $edisi?></td> </tr> <tr>

  <td class="col1">Jenis :</td> <td class="col2"><?php echo $jenis?></td> </tr>

  <tr> <td class="col1">Deskripsi :</td>

  <td class="col2"><?php echo $deskripsi?></td> </tr> <tr>

  <td class="col1">Subjek :</td> <td class="col2"><?php echo $subjek?></td> </tr> <tr>

  <td class="col1">Bahasa :</td> <td class="col2"><?php echo $bahasa?></td> </tr> <tr>

  <td class="col1">Jumlah Eks :</td> <td class="col2"><?php echo $jumlah_eks?></td> </tr> </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">           

  <img src="images/aceh_timur.png" height="100"> </p> <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

  }); </script>

  </form> </div> <?PHP

  } else { ?>

  <div> <!--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

  }); </script>

  </form> </div>

  <div id="correct">

  <?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 $kata=strtolower($kata); //konversi buku menjadi huruf kecil semua $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 break; //menghentikan proses perulangan

  } 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 }

  } if($cari) //kata yang di keluarkan jika ada objek yang di cari

  { 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";

  //$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;

  } } $cari=trim($_GET['cari']); // menangkap variable cari yang dikirim $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']; $isi=boyermoore($cari, $kata,

  $kata); if ($isi != '') { $no++;

  $id=$data['id_buku']; $judul_buku=

  $data['judul_buku']; $pengarang=

  $data['pengarang']; $penerbit=

  $data['penerbit']; $tahun_terbit=

  $data['tahun_terbit']; echo " <div class='buku_wrapper'>

  <table> <tr>

  <td width='40'>$no</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> </tr>

  </table> </div> ";

  } }

  ?> </div> <div id="kanan">

  <h4>Levenshtein (Auto Correct)</h4> <?php if($cari) // hasil pencarian akan dikeluarkan jika ada objek yang di cari

  { $file = "index.php"; $cari=urlencode($cari); $page = "cari=$cari"; // Memanggil dan menginisiasi class include

  "admin/library/class_paging.php"; $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']; $judul_buku=

  $row['judul_buku']; $pengarang=$row['pengarang']; $penerbit=$row['penerbit'];

  $tahun_terbit=$row['tahun_terbit']; echo " <div class='buku_wrapper'>

  <table> <tr>

  <td width='40'>$no</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> </tr>

  </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); echo $linkHalaman; }

  ?> </div>

  </div> <?php

  } ?> </div> </body></html> Saya yang bertanda tangan dibawah ini :

  Nama : Teuku Ighfar Hajar Alamat : Jalan Gajah Mada, Gang Makmur 15B, Medan Hp : 0811642809 Email :teukuighfarhajar@yahoo.com Tempat/tanggal lahir : Kuta Binjei/ 28 September 1992 Jenis Kelamin : Laki-laki Status : 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 Universitas Sumatera Utara 2013- 2015 : S-1 Ekstensi Ilmu Komputer Universitas Sumatera Utara SEMINAR

  • Seminar Nasional Literasi Informasi (SENARAI) 2014 Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

  Demikianlah Daftar Riwayat Hidup ini saya perbuat dengan sebenarnya.

  Hormat Saya, Teuku Ighfar Hajar

Dokumen yang terkait

BAB 2 TINJAUAN PUSTAKA 2.1 Definisi Sistem, Keputusan dan Sistem Pendukung Keputusan - Sistem Pendukung Keputusan Perangkingan Penerima BSM dengan Metode Simple Additive Weighting (SAW) dan Weighted Product Model (WPM)

0 0 7

Perbandingan Metode Simple Additive Weighting (SAW) dan Weighted Product Model (WPM) Dalam Pemberian Jaminan Kesehatan Masyarakat

0 2 27

BAB 2 TINJAUAN PUSTAKA 2.1 SISTEM PENDUKUNG KEPUTUSAN - Perbandingan Metode Simple Additive Weighting (SAW) dan Weighted Product Model (WPM) Dalam Pemberian Jaminan Kesehatan Masyarakat

0 2 14

BAB 1 PENDAHULUAN 1.1. Latar Belakang - Perbandingan Metode Simple Additive Weighting (SAW) dan Weighted Product Model (WPM) Dalam Pemberian Jaminan Kesehatan Masyarakat

0 0 6

BAB 2 LANDASAN TEORI 2.1 Sistem Pakar - Sistem Pakar Mendeteksi Psikopat Pada Seseorang Menggunakan Metode Dempster Shafer dan Certainty Factor

0 2 12

BAB 1 PENDAHULUAN 1.1 Latar Belakang - Sistem Pakar Mendeteksi Psikopat Pada Seseorang Menggunakan Metode Dempster Shafer dan Certainty Factor

1 3 7

Sistem Pakar Mendeteksi Psikopat Pada Seseorang Menggunakan Metode Dempster Shafer dan Certainty Factor

0 3 11

Penerapan Metode AHP dan FDM pada Pemilihan Rancangan Rumah Tekstur Minimalis Berbasis WEB

0 0 14

BAB 2 TINJAUAN PUSTAKA 2.1. Definisi Sistem, Keputusan dan Sistem Pendukung Keputusan - Penerapan Metode AHP dan FDM pada Pemilihan Rancangan Rumah Tekstur Minimalis Berbasis WEB

0 0 12

BAB 1 PENDAHULUAN 1.1. Latar Belakang - Penerapan Metode AHP dan FDM pada Pemilihan Rancangan Rumah Tekstur Minimalis Berbasis WEB

0 0 6