1 PENERAPAN CRAWLER PADA SISTEM INFORMASI BISNIS DI INDONESIA FREDDY YUSWANTO DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM I...
PENERAPAN CRAWLER PADA SISTEM INFORMASI BISNIS DI INDONESIA
FREDDY YUSWANTO
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2010
PENERAPAN CRAWLER PADA SISTEM INFORMASI BISNIS DI INDONESIA
FREDDY YUSWANTO
Skripsi Sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer pada Departemen Ilmu Komputer
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2010
ABSTRACT
FREDDY YUSWANTO. Implementation of Crawler for Business Information System In Indonesia. Supervised by Firman Ardiansyah. Crawler is one of techniques to collect data from one or some websites on Internet. This research tried to use a crawler technique to get business data from two websites of business information system in Indonesia,Yellow Pages and Street Directory. The results obtained from Yellow Pages is 487.109 web pages with 4.169 category pages and 482.940 business profile pages, and Street Directory is 8.712 business locations. After data cleaning, merge of two webites are found 266.519 business data. The collected data are grouped by type and region. Region starting from provinces, city/districts, subdistricts, and villages. Business types consist of forms, fields, and categories of business. Keywords : crawler, business categories.
Judul : Penerapan Crawler pada Sistem Informasi Bisnis di Indonesia Nama : Freddy Yuswanto NRP : G64050478
Dr. Ir. Sri Nurdiati, M.Sc. NIP. 19601126 198601 2 001
Tanggal lulus:
PRAKATA
Puji dan syukur penulis panjatkan kepada Allah SWT yang telah memberikan rahmat dan hidayahNya sehingga penulis dapat menyelesaikan tugas akhir sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer di Fakultas Matematika dan IPA, Institut Pertanian Bogor. Pada kesempatan ini, penulis mengucapkan terima kasih yang sebesar-besarnya kepada semua pihak yang telah membantu proses penyelesaian tugas akhir ini. Ucapan terima kasih penulis ucapkan kepada Bapak Julius Machmud, Ibu Aswany Nawawi, Elsa Yuniarti, Resa Octolia Yunita, rekanrekan dari Asrama Mahasiswa Jambi dan Artha Wisesa atas doa dan dukungannya selama mengerjakan tugas akhir ini. Ucapan terima kasih juga kepada Bapak Firman Ardiansyah, S.Kom.,M.Si. selaku pembimbing atas bimbingannya selama pengerjaan tugas akhir serta Bapak Sony Hartono Wijaya, S.Kom.,M.Kom. dan Bapak Ahmad Ridha,S.Kom.,M.S. selaku penguji yang telah banyak memberikan masukan demi kesempurnaan tugas akhir ini. Terima kasih kepada semua pihak lainnya yang tidak dapat disebutkan satu per satu yang telah membantu penulis selama pengerjaan tugas akhir ini. Semoga hasil dari tugas akhir ini dapat memberikan manfaat.
Bogor, Juli 2010
Freddy Yuswanto
RIWAYAT HIDUP Penulis dilahirkan di Kerinci, Jambi pada tanggal 5 Agustus 1987 yang merupakan anak ketiga dari tiga bersaudara dengan ayah bernama Drs. Julius Machmud dan ibu Aswany Nawawi, B.A. Tahun 2005, penulis lulus dari SMAN 2 Sungai Penuh dan pada tahun yang sama lulus seleksi masuk IPB melalui jalur Undangan Seleksi Masuk IPB (USMI). Pada tahun 2006, penulis masuk Departemen Ilmu Komputer, Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Pertanian Bogor. Pada tahun 2008 dan 2009, penulis aktif sebagai asisten praktikum Penerapan Komputer di Departemen Ilmu Komputer IPB.
DAFTAR ISI Halaman DAFTAR GAMBAR ............................................................................................................................. v DAFTAR LAMPIRAN .......................................................................................................................... v PENDAHULUAN ................................................................................................................................. 1 Latar Belakang ................................................................................................................................. 1 Tujuan .............................................................................................................................................. 1 Ruang Lingkup ................................................................................................................................. 1 Manfaat Penelitian ........................................................................................................................... 1 TINJAUAN PUSTAKA ........................................................................................................................ 1 Basis Data ........................................................................................................................................ 1 Bahasa Pemrograman Web .............................................................................................................. 2 Web Crawler .................................................................................................................................... 2 Vector Space Model (VSM) ............................................................................................................. 3 METODE PENELITIAN ...................................................................................................................... 3 Penyiapan Pusat Data ....................................................................................................................... 3 Crawling .......................................................................................................................................... 4 Pembersihan Data ............................................................................................................................ 4 Kategorisasi Data ............................................................................................................................. 4 Penyimpanan Data ........................................................................................................................... 5 Analisis Data .................................................................................................................................... 5 Lingkungan Pengembangan ............................................................................................................. 5 HASIL DAN PEMBAHASAN.............................................................................................................. 5 Pengambilan Data dari Yellow Pages .............................................................................................. 5 Pengambilan Data dari Street Directory........................................................................................... 6 Pengambilan Data Kode Pos ............................................................................................................ 6 Penggabungan Data Yellow Pages dan Street Directory ................................................................. 6 Penyimpanan Data ke NoSQL ......................................................................................................... 7 Kategorisasi Bisnis ........................................................................................................................... 8 KESIMPULAN DAN SARAN.............................................................................................................. 9 Kesimpulan ...................................................................................................................................... 9 Saran ................................................................................................................................................ 9 DAFTAR PUSTAKA ............................................................................................................................ 9 LAMPIRAN ........................................................................................................................................ 10
iv
DAFTAR GAMBAR Halaman 1 2 3 4 5 6 7 8
Berbagai macam komponen sebuah web search engine ................................................................... 2 Arsitektur dasar crawler .................................................................................................................... 3 Tahapan penelitian ............................................................................................................................ 3 Proses crawling ................................................................................................................................. 4 Grafik 10 terbesar bentuk bisnis yang berkembang di Indonesia ..................................................... 8 Grafik 10 terbesar bidang bisnis yang berkembang di Indonesia. ..................................................... 8 Grafik 10 terbesar jenis bisnis yang berkembang di Indonesia ......................................................... 8 Grafik berdasarkan jumlah bisnis terbanyak di sepuluh provinsi di Indonesia ................................. 9
DAFTAR LAMPIRAN Halaman 1 Deskripsi tabel ................................................................................................................................. 11 2 Kode PHP pengambilan kategori bisnis dan tautannya di Yellow Pages ........................................ 13 3 Kode-kode PHP pengambilan informasi lokasi bisnis di Yellow Pages ......................................... 14 4 Kode-kode PHP pengambilan informasi lokasi bisnis di Street Directory ...................................... 14
v
PENDAHULUAN Latar Belakang Kebutuhan orang saat ini untuk mengakses informasi dari Internet ditandai dengan trafik akses Internet yang semakin tinggi. TeleGeography Research mencatat bahwa pertumbuhan trafik Internet meningkat hingga 53%, yang terhitung dari pertengahan 2007 sampai pertengahan 2008. Salah satu alasannya adalah proses pencarian informasi yang cepat dan mudah dari Internet. Salah satu alasan menggunakan Internet adalah di Internet terdapat akses informasi yang cepat dan real time. Hampir semua informasi dengan berbagai macam kriteria terdapat di Internet, salah satunya adalah informasi lokasi bisnis. Di Indonesia, perkembangan situs portal berbasis sistem informasi bisnis berkembang pesat dari tahun 2008-2010. Terdapat Urbanesia yang menggunakan konsep menggabungkan antara konsumen dan pemilik bisnis dalam satu wadah, Citzel yang menggunakan konsep jejaring sosial dan informasi bisnis, Sendok Garpu dan Goorme yang berfokus pada informasi bisnis restoran, serta masih banyak lagi. Sayangnya portal-portal tersebut belum menyentuh ke calon pemilik bisnis. Umumnya calon pemilik bisnis ingin mengetahui bisnis apa yang bisa menjadi lahan basah di suatu daerah tertentu. Untuk itu perlu ada data sebaran kategori bisnis yang berkembang di suatu daerah sehingga calon pemilik bisnis mampu mengambil keputusan untuk melakukan usaha bisnis. Oleh sebab itulah, penelitian ini dilakukan dengan pembuatan data lokasi bisnis digital dengan batasan pada data di Yellow Pages dan Street Directory. Yellow Pages sebagai salah satu sumber informasi terbesar yang sering dipakai masyarakat Indonesia untuk mencari keberadaan lokasi tertentu. Yellow Pages mengklaim bahwa terdapat 500.000 lebih data lokasi bisnis yang tercatat di data mereka. Kelemahan di Yellow Pages adalah tidak terdapatnya lokasi latitude dan longitude yang biasa dipakai untuk pemetaan sehingga keberadaan lokasi tidak hanya bisa dilihat melalui teks tapi juga dapat digambarkan dalam peta. Street Directory adalah layanan pencarian lokasi yang mencakup beberapa negara, Indonesia khususnya data yang ada hanya Jakarta dan Bali. Tapi kelebihan dari Street Directory adalah terdapatnya data latitude dan longitude serta lokasi jalan sehingga diharapkan
dari penggabungan keduanya dapat terangkum data yang komplit untuk ke depannya data dari hasil penelitian ini dapat menjadi sarana dalam layanan informasi bagi pelaku bisnis, baik konsumen, pemilik, maupun calon pemilik bisnis. Tujuan Tujuan dari penelitian ini adalah : 1 Pengembangan aplikasi crawler untuk pengambilan data di Yellow Pages dan Street Directory. 2 Pembentukan klasifikasi data bisnis sehingga bisa dikategorisasikan data bisnis berdasarkan kriteria tertentu. Ruang Lingkup Beberapa lingkup penelitian ini meliputi : 1
2
Data yang diambil merupakan data dari Yellow Pages dan Street Directory melalui proses crawling dan tidak bersifat kontinu. Proses dimulai dari pengambilan dan hanya sampai ke tahap pengkategorian data.
Manfaat Penelitian Hasil penelitian ini diharapkan dapat membantu pelaku bisnis untuk mencari informasi bisnis yang berkembang di Indonesia.
TINJAUAN PUSTAKA Basis Data Basis data adalah sekumpulan data yang saling berhubungan, yang dirancang agar dapat memenuhi kebutuhan informasi dari suatu organisasi (Conolly & Begg 2002). Untuk memanipulasi suatu basis data digunakan suatu perangkat lunak tertentu, perangkat lunak tersebut sebagai Sistem Manajemen Basis Data (Database Management System / DBMS). Beberapa aplikasi yang menerapkan DBMS adalah MySQL dan NoSQL. MySQL adalah salah satu sistem manajemen basis data SQL populer yang berbasis open source. Dikembangkan, didistribusikan, dan didukung oleh MySQL AB. MySQL termasuk jenis RDBMS (Relational Database Management System), di mana proses penyimpanan data ditempatkan pada tabel-tabel yang terpisah tetapi saling berhubungan. Hal ini lebih efektif daripada menempatkan semua data pada satu ruang besar untuk penyimpanan data. Pada MySQL sebuah basis data mengandung beberapa tabel yang terdiri dari sejumlah baris dan kolom. Baris pada tabel sering disebut
1
sebagai instance dari data, sedangkan kolom sering disebut sebagai attributes atau field (Elmasri & Navathe 2000).
halaman web dengan cepat mengumpulkan struktur tautan yang menghubungkan kumpulan halaman web tersebut (Manning et al. 2008).
MySQL menggunakan sintak Structured Queri Language (SQL). SQL adalah bahasa perintah standar yang digunakan untuk mengakses basis data yang didefinisikan oleh ANSI/ISO SQL Standard. Standarisasi SQL ini telah dilakukan sejak 1986 dan telah mengalami beberapa revisi. Di buku petunjuknya, “SQL:92” berarti standar SQL pada tahun 1992, “SQL:1999” pada tahun 1999, dan “SQL:2003” adalah standar terakhir untuk saat ini. MySQL menggunakan versi terakhir dari standar SQL (MySQL AB Team 2006). NoSQL atau sering disebut sebagai akronim dari "Not only SQL", merupakan sebuah kumpulan data yang tidak relasional, berskala vertikal dan horizontal, dan storage yang terstruktur (Alaba 2010). Perbedaan mendasar NoSQL dengan RDBMS di antaranya adalah : 1 tidak ada "join" operator. 2 tidak ada ACID (atomicity, consistency, isolation, durability). 3 tidak ada pendefinisian skema sebelumnya. 4 tidak membutuhkan pemetaan desain berorientasi objek ke dalam sebuah model yang relasional.
Gambar 1 Berbagi macam komponen sebuah web search engine (Manning et al. 2008) Fitu-fitur yang harus dimiliki oleh crawler (Manning et al. 2008) 1
2
3
Contoh : Google's BigTable, Amazon's Dynamo, Cassandra, dan HBase. Bahasa Pemrograman Web Dalam pemrograman web, terdapat banyak bahasa pemrograman yang berjalan di platform web, salah satunya adalah PHP. PHP adalah sebuah bahasa skrip HTML-embedded. Kebanyakan sintaknya mengikuti bahasa C, Java, dan Perl yang dipasangkan pada fitur khusus yang unik dari PHP sendiri. Tujuan dari bahasa pemrograman ini adalah agar pengembang web dapat menulis kode secara dinamis yang dapat menghasilkan beberapa halaman web dengan cepat (Achour et al. 2007). Web Crawler Web crawler adalah proses pengambilan kumpulan halaman dari sebuah web untuk dilakukan pengindeksan sehingga mendukung kinerja mesin pencari. Relasi antara web crawler dengan mesin pencari dapat dilihat di Gambar 1.
4
5
Terdistribusi. Crawler harus memiliki kemampuan untuk mengeksekusi dalam bentuk yang didistribusikan di beberapa mesin. Scalable. Arsitektur crawler harus memungkinkan terjadinya peningkatan skala pengambilan data dengan menambahkan mesin ekstra dan bandwidth. Kinerja dan efisiensi. Sistem crawler harus efisien dalam penggunaan berbagai sumber daya sistem termasuk prosesor, penyimpanan dan bandwidth jaringan. Kualitas. Mengingat bahwa sebagian informasi dari semua halaman web rata-rata sedikit informasi yang ada dari yang dibutuhkan pengguna, maka crawler harus berpatokan untuk mengambil pada halaman pertama yang “berguna”. Kesegaran. Pada banyak aplikasi, crawler harus beroperasi dalam proses yang kontinu. Berarti harus mendapatkan salinan baru dari halaman sebelumnya yang diambil. Sehingga dapat memastikan bahwa indeks mesin pencari yang berisi representasi dari setiap saat halaman web diindeks. Proses pengambilan yang kontinu, crawler harus bisa mengambil halaman dengan frekuensi yang mendekati tingkat perubahan dari halaman tersebut.
Tujuan dari proses crawling adalah mempercepat dan mengefisienkan kumpulan
2
6
Extensible. Crawler harus dirancang untuk diperluas dalam berbagai cara. Untuk mengatasi adanya format data baru, protokol baru, dan seterusnya. Hal ini menuntut bahwa arsitektur crawler menjadi modular.
suatu vektor dokumen dengan vektor kueri maka dokumen dapat dipandang semakin relevan dengan kueri. Salah satu pengukuran kesesuaian yang baik adalah dengan memperhatikan perbedaan arah (direction difference) dari kedua vektor tersebut. Perbedaan arah kedua vektor dalam geometri dapat dianggap sebagai sudut yang terbentuk oleh kedua vektor . Algoritme dasar untuk proses perhitungan vector space score adalah sebagai berikut (Manning et al. 2008) :
Gambar 2 Arsitektur dasar crawler. Arsitektur crawler dapat dilihat di Gambar 2 di mana komponennnya antara lain adalah sebagai berikut : 1
2
3
4
5
URL frontier, batasan URL yang telah diambil terakhir kali (untuk proses crawler yang kontinu, URL mungkin telah diambil sebelumnya, tapi saat sampai ke perbatasan dikembalikan lagi untuk kemudian diambil lagi). Modul resolusi DNS yang menentukan web server untuk mengambil halaman yang ditentukan oleh URL. Modul pengambilan yang menggunakan protokol HTTP untuk mengambil halaman web pada URL. Modul parsing yang mengekstrak teks dan mengatur tautan dari halaman web yang diambil. Modul penghapusan duplikasi yang menentukan apakah tautan yang diekstraksi sudah di URL frontier atau baru-baru ini telah diambil (Manning et al. 2008).
CosineScore(q) float Scor es[N] = 0 Initialize Length[N] for each kueri term t do calculate wt,q and fetch postings list for t for each pair(d, tft,d ) in postings list do Scores[d] += wft,d × wt,q Read the array Length[d] for each d do Scores[d] = Scores[d]/Length[d] return Top K components of Scores[]
METODE PENELITIAN Pelaksanaan penelitian ini dibagi dalam beberapa tahap yang dapat dilihat pada Gambar 3. Secara garis besar tahapannya terdiri dari : 1 2 3 4 5 6
Penyiapan pusat data yang diambil. Crawling. Pembersihan data. Kategorisasi data. Penyimpanan data. Analisis data. DATA PUSAT CRAWLING
Vector Space Model (VSM) Representasi dari kumpulan dokumen sebagai vektor-vektor dalam sebuah ruang vektor umum disebut sebagai vector space model (VSM) dan merupakan fundamental dari operasi-operasi temu kembali informasi yang memasukkan unsur-unsur scoring documents dalam sebuah kueri, document classification, dan document clustering (Manning et al. 2008). Dalam VSM, penentuan relevansi dokumen dengan kueri dipandang sebagai pengukuran kesamaan (similarity measure) antara vektor dokumen dengan vektor kueri. Semakin “sama”
KATEGORISASI
PENYIMPANAN DATA
CLEANING
ANALISIS
Gambar 3 Tahapan penelitian. Penyiapan Pusat Data Sumber data yang akan dilakukan proses crawling adalah Yellow Pages
3
(www.yellowpages.co.id) dan Street Directory (www.streetdirectory.co.id) dengan rilis terakhir adalah Desember 2008. Target jumlah data yang ingin didapatkan di Yellow Pages adalah 500.000 data, hal ini sesuai dengan klaim dari pihak Yellow Pages bahwa jumlah data yang terangkum oleh mereka adalah lebih dari 500.000 data (www.yellowpages.co.id). Minimal data lokasi yang didapatkan terdiri dari nama tempat, alamat, telepon/faksimile, dan email. Untuk hasil crawling di Street Directory selain yang telah disebutkan, didapatkan juga data latitude dan longitude.
1
2
3
Crawling Pada tahap proses crawling ada beberapa faktor yang harus diperhatikan, yaitu : 1
2
Penjadwalan proses crawling, terkait dengan masalah server yang menjadi pusat crawling dan juga penyimpanan data. Perlu ada penjadwalan, melihat terbatasnya bandwith dan minimnya ketahanan server yang dipakai. URL frontier, mengatur URL dari tiap-tiap halaman yang akan diambil agar tidak terjadi duplikasi sehingga perlu pembatasan untuk tidak kembali lagi ke batas awal.
Proses crawling dilakukan dengan menggunakan salah satu librari PHP, yaitu cURL. cURL adalah sebuah alat yang melaksanakan perintah untuk mentransfer data dari beberapa protokol URL, di mana cURL dapat mengambil satu halaman penuh suatu web dengan format HTML dengan cara memasukkan URL halaman web yang akan dilakukan crawling. Hasil dari crawling tersebut akan disimpan ke database untuk proses lebih lanjut.
4
Pengumpulan semua alamat tautan yang ada di Yellow Pages dan Street Directory. Agar tidak terjadi pengambilan tautan di luar halaman web target maka dibuat filter untuk mencegahnya, contoh : tiap tautan yang terkumpul adalah URL frontier dan pada penelitian ini proses bersifat linear, sehingga tidak memungkinkan crawling kembali ke tautan yang telah diambil datanya. Setiap tautan yang terkumpul disimpan dalam basis data atau tempat penyimpanan sementara. Setelah tautan terkumpul semua, oleh sistem tiap data diambil lagi dan memulai proses pengambilan halaman-halaman web dari tiap tautan. Hasil pengambilan halaman web (dalam format HTML) disimpan ke basis data atau tempat penyimpanan sementara.
Pembersihan Data Proses pembersihan data dilakukan untuk mendapatkan data bisnis yang sekurangkurangnya memiliki kriteria nama bisnis, alamat jalan, provinsi, kabupaten, kecamatan, kelurahan, dan kode pos yang tidak kosong Jika beberapa data yang terkumpul tidak dilengkapi dengan kriteria tersebut maka data yang tidak lengkap tersebut akan dibuang atau tidak akan dipakai untuk penelitian ini. Pada penelitian ini juga, data Yellow Pages digunakan sebagai data utama dan data Street Directory sebagai data pendukung. Data dari Street Directory digunakan untuk melengkapi informasi data dari Yellow Pages. Jika ada data dari Street Directory tetapi tidak ada di Yellow Pages, maka data tersebut tidak akan diproses saat pelengkapan data. Salah satu data yang diambil dari Street Directory adalah data latitude dan longitude yang mana tidak ada di Yellow Pages. Kategorisasi Data
Gambar 4 Proses crawling. Tahap-tahap proses crawling pada Gambar 4 terdiri dari :
Kategorisasi data lokasi adalah pembagian data lokasi bisnis berdasarkan kriteria tertentu. Kriteria yang dipakai adalah lokasi geografis, jenis bisnis, dan cabang bisnis. Lokasi geografis didasarkan pada kode wilayah (kode pos) yang mana dari kode wilayah tersebut memuat informasi tentang provinsi, kabupaten, kecamatan, dan kelurahan. Lokasi geografis juga dapat mengelompokkan lokasi bisnis berdasarkan lokasi nama jalan tertentu. Kriteria jenis bisnis didasarkan pada bidang usaha bisnis yang terdapat di lokasi tertentu. Pada kriteria ini satu lokasi bisnis bisa memiliki lebih dari satu
4
jenis bisnis, sehingga perlu disusun hierarki yang sistematik untuk kategorisasi suatu lokasi bisnis. Cabang bisnis (branch) adalah di mana satu bisnis bisa mempunyai lebih dari satu lokasi bisnis. Penyimpanan Data Proses penyimpanan data dibagi dua tempat, yaitu MySQL dan MongoDB (NoSQL). MySQL digunakan untuk menyimpan data-data relasional, seperti wilayah, ketegorisasi, dan lokasi bisnis, sedangkan MongoDB digunakan untuk menyimpan data-data yang telah diindeks. MongoDB merupakan suatu kumpulan tuple besar yang mengindeks data wilayah, kategori, dan lokasi bisnis. Hal tersebut bertujuan untuk mempercepat proses pencarian. Hasil crawling pertama kali akan disimpan dalam RDBMS. Pada penelitian ini RDBMS yang dipakai adalah MySQL. Penyimpanan data di MySQL dibagi atas dua tipe, yaitu : 1
2
Tempat penyimpanan sementara. Tipe ini menyimpan tautan-tautan halamanhalaman tiap web dan data-data hasil crawling yang belum diolah, di mana formatnya masih halaman HTML. Pada format penyimpanan data tersebut belum dilakukan normalisasi. Tempat penyimpanan akhir. Halaman web yang diolah diambil bagianbagian yang penting, seperti nama bisnis, alamat, cabang bisnis, dan lain-lain. Hasilnya disimpan dalam bentuk relasional untuk kemudian dilakukan pengkategorian bisnis. Hasil pengkategorian ikut disimpan dalam RDBMS dan disusun relasinya masing-masing. (Lampiran 1).
Analisis Data Pada proses analisis data dilakukan beberapa proses, yaitu : 1
2
Validasi data. Setelah data lokasi bisnis diolah dan disimpan di sistem, data yang telah disimpan dibandingkan dengan data yang ada di web yang telah dilakukan proses crawling. Data yang dibandingkan adalah data uji, bukan semua data, untuk mengecek tingkat galat. Penggabungan data. Proses penggabungan data adalah proses melengkapi data Yellow Pages yang diambil dari Street Directory, pada tahap proses pencarian dilakukan dengan
3
memanfaatkan fungsi pencarian di MySQL, yaitu full text search yang merupakan pengembangan dari metode VSM. Metode tersebut mengambil skor tertinggi untuk kemudian hasil pencarian tersebut dimasukkan ke data Yellow Pages. Data dari Yellow Pages digabungkan dengan Street Directory. Tujuannya untuk menghindari duplikasi data serta untuk penyempurnaan data.
Lingkungan Pengembangan Lingkungan pengembangan yang digunakan adalah sebagai berikut : Perangkat lunak : Windows XP Professional Service Pack 2, sebagai sistem operasi tempat aplikasi berjalan. Netbeans 6.7, sebagai editor atau IDE (Integrated Development Environment) untuk menulis kode dan membuat aplikasi. XAMPP 1.7.3, merupakan kumpulan beberapa perangkat lunak pendukung aplikasi web yang disatukan dalam satu wadah. Terdiri dari Apache 2.0 sebagai web server, PHP 5.3.1 sebagai bahasa pemrograman web, MySQL 5.1.41 sebagai RDBMS, dan phpMyAdmin 3.2.4 sebagai IDE dari MySQL. MongoDB, merupakan salah satu implementasi dari database berbasis NoSQL. Perangkat keras : Processor Intel Dual Core T2390 (1.86 GHz) 1014 MByte RAM
HASIL DAN PEMBAHASAN
Pengambilan Data dari Yellow Pages Proses pengambilan data dari Yellow Pages dimulai dari pengambilan halaman dan tautan kategori. Tiap tautan kategori merujuk pada daftar lokasi bisnis yang relevan dengan kategorinya masing-masing. Mesin crawler berjalan dari tiap-tiap tautan hingga sampai ke tingkat lokasi bisnis. Saat mesin telah selesai berjalan, data yang terkumpul baru sebatas berbentuk halaman HTML dan tautannya. Halaman hasil crawling diproses kembali agar mesin dapat mengenali tulisan dalam format HTML. Halaman tersebut
5
berisi nama kategori dan informasi lokasi bisnis. Proses ini menggunakan ekspresi regular. Proses pengambilan nama kategori bisnis beserta tautannya adalah sebagai berikut : 1
2
3
Pengambilan isi halaman web tempat daftar kategori bisnis berada yang diambil oleh mesin crawler. Pengambilan satu wadah atau tabel tempat isi daftar kategori bisnis berada yang diambil dari hasil poin 1 dengan ekspresi regular. Dari hasil poin 2 diambil nama kategori bisnis dan tautannya dalam bentuk array dengan ekspresi regular (contoh kode di Lampiran 2).
Dalam mengambil informasi lokasi bisnis, ada beberapa tahap dalam proses pengambilannya. Selain mengambil nama bisnis, regular ekspresi harus mengenali juga alamat, telepon, faksimile, email, dan kode pos. Proses pengambilan informasi lokasi bisinis di Yellow Pages adalah sebagai berikut : 1
2
Pengambilan keseluruhan informasi suatu bisnis yang terkumpul dalam satu tempat dalam satu halaman web. Dari hasil poin 1, keseluruhan informasi tersebut dipecah-pecah menjadi nama bisnis, alamat, telepon, faksimile, email, dan kode pos, serta kategorinya (contoh kode di Lampiran 3).
Hasil percobaan crawling ke situs Yellow Pages didapatkan 487.109 halaman web, dengan 4.169 halaman kategori dan 482.940 halaman profil lokasi bisnis. Kategorisasi bisnis terdiri dari tiga cabang hierarki, yaitu sebagai berikut : 1 2 3
bentuk bisnis, bidang bisnis, dan kategori/jenis bisnis.
Bentuk bisnis dijelaskan bagian-bagiannya oleh bidang bisnis, bidang bisnis dijelaskan lagi bagian-bagiannya oleh kategori/jenis bisnis, dan kategori/jenis bisnis dijelaskan dengan macammacam nama dan lokasi bisnis yang bergerak di jenis bisnis tertentu. Contoh : SSB Indonesia Muda DKI adalah sebuah jenis bisnis Football Clubs, di mana jenis bisnis tersebut masuk dalam bidang bisnis Sport, dan bidang bisnis Sport secara umum masuk dalam bentuk bisnis Automotive. Hasil percobaan didapatkan di Yellow Pages terdapat 28 kategori umum, 1.220 kategori khusus, dan 2.921 jenis bidang bisnis. Diketahui
juga kelemahan dari data yang ada di Yellow Pages adalah tidak lengkapnya informasi alamat yang diberikan seperti tidak ada kode pos lokasi bisnis, sehingga menyulitkan untuk mengkategorikan lokasi bisnis berdasarkan sektor wilayah dari tingkat provinsi sampai kelurahan. Pengambilan Data dari Street Directory Proses pengambilan di Street Directory dimulai dari pengambilan daftar abjad yang langsung merujuk ke informasi lokasi bisnis, sehingga tidak ada kategorisasi bisnis. Informasi yang diambil hampir sama dengan Yellow Pages, perbedaannya hanya terletak pada penambahan data latitude dan longitude serta tidak ada data telepon, faksimile, dan email. Proses pengambilan informasi lokasi bisnis di Yellow Pages adalah sebagai berikut : 1
2
Pengambilan keseluruhan informasi suatu bisnis yang terkumpul dalam satu tempat dalam satu halaman web. Dari hasil poin 1, keseluruhan informasi tersebut dipecah-pecah menjadi nama bisnis, alamat, kode pos, latitude, dan longitude (contoh kode di Lampiran 4) .
Dari hasil percobaan crawling ke situs Street Directory didapatkan 8.712 lokasi bisnis yang tersebar di Jakarta. Data-data yang terkumpul selain nama dan alamat, juga titik latitude dan longitude lokasi bisnis. Kode pos wilayah juga terkumpul semua. Kelemahan dari hasil crawling di Street Directory adalah tidak adanya jenis usaha bisnis dari lokasi bisnis yang diambil, sehingga perlu ada pembandingan dengan data dari Yellow Pages untuk penentuan kategorisasi. Pengambilan Data Kode Pos Data kode pos diambil dari Website Kode Pos Indonesia (kodepos.indonesiaweb.info) rilis terakhir Juli 2010. Jumlah data yang didapat adalah 5.003 kelurahan dari 33 provinsi di Indonesia. Data kode pos ini nantinya yang akan dipakai untuk menspesifikasikan data bisnis berdasarkan kriteria wilayah dari tingkat provinsi sampai kelurahan. Penggabungan Data Yellow Pages dan Street Directory Dari hasil penggabungan (setelah melewati proses pembersihan) didapatkan data yang terkumpul 266.519 dengan data bisnis yang mempunyai latitude dan longitude adalah 81.645 data binis yang semuanya data bisnis dari Jakarta. Berkurangnya data sampai 44,81%
6
dari data awal ini disebabkan oleh beberapa faktor, antara lain sebagai berikut : 1
2
3
4
Data yang mencakup sampai kode pos adalah 368.859 data atau 76,38% dari data awal. Data kode pos yang terkumpul hampir mencakup seluruh Indonesia tetapi tidak melengkapi data bisnis yang ada. Dari 368.859 data, hanya ada 266.519 data yang menampung data bisnis di 33 provinsi atau ada 27,75% data yang tidak terpakai (berkurang). Hal ini disebabkan tidak tercatatnya kode pos lokasi bisnis dari 5.003 kode pos yang ada dari hasil crawling di situs kodepos.indonesiaweb. info. Data di Street Directory hanya meliputi data dari Jakarta sehingga pada proses penggabungan data yang ada latitude dan longitude hanya di daerah Jakarta.
Penyimpanan Data ke NoSQL Pada penelitian ini NoSQL digunakan sebagai penyimpanan data untuk pencarian lokasi bisnis. Di mana semua data bisnis disimpan dalam satu koleksi data (dalam MySQL disebut tabel), yaitu profil bisnis, kategori bisnis, dan wilayah. Dalam MySQL data-data tersebut disimpan terpisah dalam tabel tersendiri. Tiap-tiap data yang ada dalam satu koleksi memiliki struktur-struktur yang berbeda, sehingga tidak ada pendefinisian nama field sebelumnya ataupun pengaturan tipe data. Antara masing-masing data bisa berbeda fieldfield yang ada di dalamnya. Contoh : Data lokasi bisnis A memiliki field sebagai berikut : { "_id":ObjectId("4beff69165eba0ec000 10000"), "business_name" : "003 Toko", "address" : "Jl Pramuka Raya Psr Pramuka Los AKS/3 Lt Dasar", "phone" : "0218512549", "province_id" : "13", "province_name" : "DKI Jakarta", "city_id" : "178", "city_name" : "Jakarta Timur", "kecamatan_id" : "15", "kecamatan_name" : "Matraman", "kelurahan_id" : "49",
Data lokasi bisnis B memiliki field sebagai berikut : { "_id": ObjectId("4beff69165eba0ec0002000") , "business_name" : "007 Sellular", "address" : "Jl Mangga Dua Raya Jembatan Niaga II Bl KJ/3-B Lt 1", "phone" : "02162301162", "email" : "[email protected]", "province_id" : "13", "province_name" : "DKI Jakarta", "city_id" : "176", "city_name" : "Jakarta Pusat", "kecamatan_id" : "40", "kecamatan_name" : "Sawah Besar", "kelurahan_id" : "175", "kelurahan_name" : "Mangga Dua Selatan", "category_id" : "8", "subcategory_one_id": "285", "subcategory_two_id": "1679", "category_name" : "Home & Office", "subcategory_one_name":"Telecomunic ati ", "subcategory_two_name":"Telecomunic ati Cellular Service" }
Pada data lokasi bisnis B tidak terdapat field latitude dan longitude, sedangkan pada data lokasi bisnis A terdapat field latitude dan longitude tapi tidak terdapat field email seperti yang ada di data lokasi bisnis B. Padahal dua data tersebut berada pada satu koleksi data yang sama. Hal ini berbeda dengan database berbasis SQL lainnya, yang mana jika salah satu data tidak memiliki nilai dari field yang telah
7
ditetapkan dalam suatu tabel maka akan tetap diisi tetapi dengan nilai kosong. NoSQL lebih memfokuskan pada efisiensi data sehingga eksekusi pengambilan data lebih cepat, walaupun harus mengorbankan kestrukturan data. Sehingga untuk penelitian ini proses pencariannya menggunakan NoSQL. Data-data yang berkaitan dengan profil bisnis, kategori, dan wilayah bisnis di MySQL dimigrasikan ke MongoDB dalam satu koleksi data. Field yang kosong tidak dimasukkan ke MongoDB, sehingga struktur data seperti pada contoh data lokasi bisnis A dan B. Kategorisasi Bisnis Kategorisasi bisnis didasarkan pada wilayah, yang meliputi provinsi, kabupaten, kecamatan, dan kelurahan. Dari tiap-tiap bagian wilayah tersebut dibagi lagi dalam tiga kategorisasi, yaitu sebagai berikut :
Keterangan : A&P = Advertising & Publication FT&A = Fashion, Toys, & Art C&B = Courses& Book A1 = Automotive G&C = Government & Community F&PS = Finance and Professional Services F&B = Food & Beverages I&M= Industry & Mining H&M = Health & Medical H&O= Home and Office
Gambar 5 Grafik10 terbesar bentuk bisnis yang berkembang di Indonesia.
bentuk bisnis yang berkembang bidang bisnis yang berkembang jenis/kategori bisnis yang berkembang Pada tahap proses pencarian, susunan form pencarian dibagi atas kategori wilayah dan bisnis. Kedua kategori bisa tersendiri dan bisa juga berhubungan, sehingga hasil pencarian akan lebih spesifik. Selain lokasi bisnis, dari hasil pencarian akan terdapat informasi berbentuk diagram batang tentang jumlah lokasi bisnis berdasarkan wilayah dan kategori bisnis. Secara umum, hasil kategorisasi bisnis didapatkan data bisnis yang paling banyak terkumpul adalah data dari DKI Jakarta yang menguasai lebih dari 34,82% data yang ada. Sedangkan untuk kategorisasi lainnya, berdasarkan bentuk bisnis yang berkembang dikuasai sektor perumahan dan perkantoran sebesar 29,8%, bidang bisnis yang yang paling berkembang adalah bidang lembaga pemerintahan sebesar 10,7%, dan jenis/kategori bisnis yang dijalankan yang paling berkembang adalah berupa jenis bisnis yang di luar kategori yang ada (lain-lain) sebesar 10,7%. Grafik perkembangan bisnis di Indonesia dapat dilihat di Gambar 5, 6, 7, dan 8.
Gambar 6 Grafik 10 terbesar bidang bisnis yang berkembang di Indonesia.
Keterangan : BS = Beauty Salon BM = Building Materials CG = Contractors - Genera F1 = Fashion FEPR = Foundations - Educational, Philanthropic, Re O = Others (Government) R1 = Restaurants SE = School, Elementary SP = Schools-Special Purpose TS5 = Telecommunication Shop
Gambar 7 Grafik 10 terbesar jenis bisnis yang berkembang di Indonesia.
8
3
Keterangan : JKT = Jakarta JTM = Jawa Timur JT = Jawa Tengah JBR = Jawa Barat SUT = Sumatera Utara
BL BTN DIY SSL SBR
= Bali = Banten = Yogyakarta = Sumatera Selatan = Sumatera Barat
Gambar 8 Grafik berdasarkan jumlah bisnis terbanyak di sepuluh provinsi di Indonesia.
KESIMPULAN DAN SARAN Kesimpulan Hasil crawling dari situs Yellow Pages didapatkan 487.109 halaman web dengan 4.169 halaman kategori dan 482.940 halaman profil lokasi bisnis, sedangkan dari situs Street Directory didapatkan 8.712 lokasi bisnis. Setelah melalui proses pembersihan data, penggabungan dari dua situs tersebut didapatkan sebanyak 266.519 data bisnis. Pembersihan data ini mengakibatkan berkurangnya data sampai 44,81%. Pada penelitian ini kategorisasi bisnis didasarkan pada wilayah meliputi pengkategorian berdasarkan provinsi, kabupaten, kecamatan, dan kecamatan. Pengkategorian berdasarkan kategori bisnis dibedakan atas tiga macam yang membentuk hierarki, yaitu bentuk, bidang, dan jenis/kategori bisnis yang berkembang.
diharapkan penyajian data ke depan bersifat real time. Kelengkapan data. Kelemahan dari penelitian ini adalah tidak lengkapnya data kode pos seluruh wilayah Indonesia, sehingga pada proses pembersihan banyak data yang terbuang karena banyak wilayah yang tidak terangkum karena minimnya data kode pos yang ada.
DAFTAR PUSTAKA Achour M, et al. 2007. PHP Manual. PHP Documentation Group. Alaba O. 2010. INLS760 – Web Databases NOSQL. School of Information and Library Science University of North Carolina, Chapel Hill. Connolly TM, Begg CE. 2002. Database System: A practical Approach to Design, Implementation, and Management. Addison Des Wesley, England. Elmasri R, Navathe SB. 2008. Fundamental of Database System. Ed ke-4. Addison Wesley. Manning CD, Raghavan P, Schutze H. 2008. Introduction to Information Retrieval. Cambridge University Press, New York. MySQL AB Team. 2006. MySQL 5.0 Reference Manual. MySQL AB, Sweden.
Saran Beberapa hal dapat dilakukan untuk pengembangan lebih lanjut adalah sebagai berikut : 1
2
Data uji yang lebih banyak. Pada penelitian kali ini data yang dipakai hanya dua data, sedangkan saat ini banyak situs-situs portal yang memuat informasi direktori bisnis Indonesia selain Yellow Pages dan Street Directory. Data terbaru. Pada penelitian ini data yang dipakai adalah rilis terakhir Desember 2008. Seiring berjalannya waktu akan banyak perubahan yang terjadi, termasuk daerah dan tempat bisnis. Dengan proses yang up to date
9
LAMPIRAN
10
Lampiran 1 Relasi antar table dan deskripsinya.
Nama Tabel
: kodepos__provinsi
Fungsi
: menyimpan data provinsi
Nama Kolom provinsi_id provinsi_name
Tipe Data
Keterangan
Tinyint
Primary Key, Auto Increment , Not null
Varchar(100)
Not null
Nama Tabel
: kodepos__kabupaten
Fungsi
: menyimpan data kabupaten
Nama Kolom kabupaten_id provinsi_id kabupaten_name
Tipe Data
Keterangan
Mediumint
Primary Key, Auto Increment, Not null
Tinyint
Not null
Varchar(100)
Not null
11
Nama Tabel
: kodepos__kecamatan
Fungsi
: menyimpan data kecamatan Nama Kolom
Tipe Data
Keterangan
kecamatan_id
Integer
Primary Key, Auto Increment, Not null
kabupaten_id
Tinyint
Not null
Varchar(100)
Not null
kecamatan_name
Nama Tabel
: kodepos__kelurahan
Fungsi
: menyimpan data kelurahan Nama Kolom
Tipe Data
Keterangan
kelurahan_id
Integer
Primary Key, Auto Increment, Not null
kecamatan_id
Integer
Not null
kelurahan_name
Varchar(100)
Not null
Kodepos
Varchar(12)
Not null
Nama Tabel
: crawler__category
Fungsi
: menyimpan kategori bisnis bagian bentuk bisnis Nama Kolom
Tipe Data
Keterangan
Tinyint
Primary Key, Auto Increment, Not null
category_name
Varchar(150)
Not null
category_link
Varchar(200)
Not null
category_id
Nama Tabel
: crawler__subcategory_level_one
Fungsi
: menyimpan kategori bisnis bagian bidang bisnis Nama Kolom
Tipe Data
Keterangan
subcategory_one_id
Integer
Primary Key, Auto Increment, Not null
category_id
Tinyint
Not null
subcategory_one_name
Varchar(150)
Not null
subcategory_one_link
Varchar(200)
Not null
12
Nama Tabel
: crawler__subcategory_level_two
Fungsi
: menyimpan kategori bisnis bagian jenis bisnis Nama Kolom
Tipe Data
Keterangan
subcategory_two_id
Integer
Primary Key, Auto Increment, Not null
subcategory_one_id
Integer
Not null
subcategory_two_name
Varchar(150)
Not null
subcategory_two_link
Varchar(200)
Not null
Nama Tabel
: crawler__business_profile
Fungsi
: menyimpan data lokasi bisnis Nama Kolom
Tipe Data
Keterangan
Integer
Primary Key, Auto Increment, Not null
business_name
Varchar(200)
Not null
business_address
Varchar(200)
Null
business_phone
Varchar(200)
Null
business_fax
Varchar(200)
Null
Integer
Null
postal_code
Varchar(12)
Not null
business_lat
Decimal(23,20)
Null
business_long
Decimal(23,20)
Null
business_link
Varchar(200)
Not Null
subcategory_two_id
Varchar(200)
Not Null
business_id
business_email
Lampiran 2 Kode pengambilan kategori bisnis dan tautannya di Yellow Pages. preg_match_all("/