• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2019

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

Copied!
21
0
0

Teks penuh

(1)

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;

}

(2)

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

(3)

$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

(4)

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

(5)

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

}

(6)

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

(7)

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'];

(8)

?>

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

(9)

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

(10)

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

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

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

(11)

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

(12)

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

(13)

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;

(14)

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

(15)

}

*/

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

(16)

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)){

(17)

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

(18)

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

(19)

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

(20)

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

(21)

DAFTAR RIWAYAT HIDUP

Saya yang bertanda tangan dibawah ini :

DATA PRIBADI

Nama

: Teuku Ighfar Hajar

Alamat

: Jalan Gajah Mada, Gang Makmur 15B, Medan

Hp

: 0811642809

Email

:[email protected]

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,

Referensi

Dokumen terkait

Kamus elektronik atau kamus digital merupakan sebuah fasilitas yang dapat membantu pengguna untuk mencari informasi dari sebuah kata dengan cara mengetikkan kata

Demikian daftar riwayat hidup ini saya buat dengan sebenarnya dan dapat dipertanggungjawabkan.

Pada DFD level 1 dapat dilihat modul-modul yang terdapat di dalam sistem, adapun modul ataupun bagian yang akan dilakukan oleh user yaitu input judul buku

Demikian Daftar Riwayat Hidup ini saya buat dengan sebenarnya. Matano Oe, Agustus 2022 Saya

Demikian daftar riwayat hidup ini saya buat dengan sebenarnya.. Kediri, 17 November 2015 Saya

“IMPLEMENTASI ALGORITMA BOYER MOORE DAN METODE N-GRAM UNTUK APLIKASI AUTOCOMPLETE DAN AUTOCORRECT” ini dapat terselesaikan dengan baik.. Dengan menyadari adanya

32 Tahun 2009 tentang lingkungan hidup tertuang yaitu Pembangunan berkelanjutan adalah upaya sadar dan terencana yang memadukan aspek lingkungan hidup, sosial, dan ekonomi ke

Guru Honor SMP Negeri 04 Lempuing Jaya 2013 Sampaidengan sekarang Demikianlah riwayat hidup ini saya buat dengan