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;
}
$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
$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;
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 "";
}
//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'];
?>
<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>
<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.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">
<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>
<?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;
//$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];
}
*/
$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)){
$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>
</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);
$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='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>