Kebutuhan Sistem Implementasi Basis Data

57

BAB IV PERANCANGAN DAN IMPLEMENTASI SISTEM

4.1 Kebutuhan Sistem

Sebelum melakukan implementasi dan menjalankan aplikasi untuk pencarian pasal-pasal hukum, dibutuhkan spesifikasi perangkat keras dan perangkat lunak dengan kondisi tertentu agar dapat berjalan dengan baik. Berikut ini adalah kebutuhan minimal perangkat keras untuk menjalankan aplikasi untuk pencarian pasal-pasal hukum: a. Komputer dengan prosesor Pentium 4. b. Memori minimal 1 GB. Kebutuhan perangkat lunak digunakan untuk menjalankan aplikasi untuk pencarian pasal-pasal hukum ini adalah sebagai berikut : a. Sistem Operasi Microsoft Windows XP Profesional SP2. b. Microsoft .NET Framework SDK versi 2.0.

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 Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. 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_querysql1; ifmysql_num_rowsrun10 res1 = mysql_fetch_arrayrun1; sql2 = select isi_pengertian from pengertian where id_pasal=.id.; run2 = mysql_querysql2; ifmysql_num_rowsrun20 res2 = mysql_fetch_arrayrun2; ifmysql_num_rowsrun10{ 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 query insert 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 yang digunakan adalah id pasal dari tabel pasal. Dilakukan query insert tabel Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. 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 highlightWordsstring,word{ new=str_ireplacestring,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 Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. 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 stoplistkata{ kata = preg_replace[a-zA-Z\s], , kata; kata = str_replace , ,kata; ifsubstrkata,0,1== kata=ltrimrtrimkata; else kata=rtrimkata; 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 step1kata{ ifsubstrkata,0,2==diorsubstrkata,0,2==keorsubstr kata,0,2==se{ ifstrlensubstrkata,23 kata = substrkata,2; } return kata; } Gambar 4.4 Potongan Source Code Function Stemming Step 1 Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. 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 me dan pe, 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 step2kata{ vokal = arraya,i,u,e,o; rule1 = arrayk,g,h,q; rule2 = arrayb,f,p,v; rule3 = arrayc,d,j,s,z; rule4 = arrayl,m,n,r,y,w,x; ifsubstrkata,0,4==meng or substrkata,0,4==peng{ ifin_arraysubstrkata,4,1,vokalorin_arraysubstrkata,4,1 ,rule1{ ifsubstrkata,4,3==ert{ kata = substrkata,2;} elseifsubstrkata,4,2==erorsubstrkata,4,3==ata{ kata = k.substrkata,4; } else kata = substrkata,4; } } else ifsubstrkata,0,4==meny or substrkata,0,4==peny{ ifin_arraysubstrkata,4,1,vokal and substrkata,4,2=ata { kata = s.substrkata,4; } else kata = k.substrkata,4; } else ifsubstrkata,0,3==mem or substrkata,0,3==pem{ ifsubstrkata,3,5==idana{ kata = p.substrkata,3; } else ifin_arraysubstrkata,3,1,rule2{ kata = substrkata,3; } } Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. else ifsubstrkata,0,3==men or substrkata,0,3==pen or substrkata,0,3==per{ ifin_arraysubstrkata,3,1,vokalandin_arraysubstrkata,4,1, vokal{ kata = t.substrkata,3; } else ifin_arraysubstrkata,3,1,vokal{ kata = substrkata,2; } else kata = substrkata,3; } else ifsubstrkata,0,2==me or substrkata,0,2==pe{ ifin_arraysubstrkata,2,1,vokalorin_arraysubstrkata,2,1,ru le4{ kata = substrkata,2; } } ifsubstrkata,0,3==ber or substrkata,0,3==ter{ kata = substrkata,3; } else ifsubstrkata,0,2==be or substrkata,0,2==te{ ifstrlensubstrkata,24{ kata = substrkata,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 step3kata{ vokal = arraya,i,u,e,o; akhir1 = arraylah,kah,pun,tah; akhir2 = arrayku,mu; akhir3 = arraynya; ifin_arraysubstrkata,-3,akhir1 and substrkata,-5,2=ng and substrkata,0,strlenkata-32{ kata = substrkata,0,strlenkata-3; } ifin_arraysubstrkata,-2,akhir2or in_arraysubstrkata,- 3,akhir3 and strlenkata-32{ Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. kata = substrkata,0,strlenkata-3; } ifsubstrkata,-1==i{ ifstrlenkata4 and substrkata,0,2=ng and substrkata,- 2,1=t{ kata = substrkata,0,strlenkata-1; } } ifsubstrkata,-3==kan{ ifstrlensubstrkata,0,strlenkata-33 and substrkata,0,2=ng{ kata = substrkata,0,strlenkata-3; } } ifsubstrkata,-2==an{ ifstrlensubstrkata,0,strlenkata-23 and substrkata,- 4,2==an{ kata = substrkata,0,strlenkata-2; } elseifstrlensubstrkata,0,strlenkata-23 and substrkata,-4,2=an and kata=dengan{ kata = substrkata,0,strlenkata-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 stemkata{ kata = step1kata; kata = step2kata; kata = step3kata; return kata;} Gambar 4.7 Potongan Source Code Function Stem Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. 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_bmidx,string,cari{ word = strtolowerstring; word = stoplistword; word = split ,word; s=0; cari = split ,cari; fori=0;icountcari;i++{ forj=0;jcountword;j++{ k=0;k=strlenword[j]-strlencari[i];k++{ ifcari[i]==substrword[j],k,strlencari[i]{ word_list[s]=word[j]; word_idx[s]=j; s++; }}}} ifis_arrayword_idx { array_uniqueword_idx; array_uniqueword_list; } Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. ifcountword_idx0 { val[id] = idx; val[rank] = countword_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_stemidx,string,cari{ word = strtolowerstring; word = stoplistword; cari = split ,cari; word = split ,word; fori=0;icountcari;i++{ cari[i] = stemcari[i]; } fori=0;icountword;i++{ word[i] = stemword[i]; } s=0; Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. fori=0;icountcari;i++{ forj=0;jcountword;j++{ ifcari[i]==word[j]{ word_st[s]=word[j]; word_idst[s]=j; s++; } } } ifis_arrayword_idst { array_uniqueword_idst; array_uniqueword_st; } ifcountword_idst0 { val[id] = idx; val[rank] = countword_idst; val[word] = word_st; } else val = NULL; return val; } Gambar 4.9 Potongan Source Code Function Stemming

4.3. Implementasi Antarmuka