Tuesday, March 24, 2009

Searching Simple Rasa Google

Searching simple rasa Google



Pertama kenal Internet orang pasti ketemu dengan paman Google, sahabat para netter. Kali ini saya mencoba membuat prosedur dalam visual foxpro untuk pencarian data sedikit mirip dengan google. Sedikit saja, karena saya tahu google hebat dalam proses searching.

Diawali permintaan client dari aplikasi Perpustakaan yang saya buat, bahwa dalam proses pencarian data, mereka menginginkan mencari data berdasar kata dalam sebuah kalimat.

Ok ini bisa dilakukan dengan memecah sebuah kalimat menjadi kata-kata kunci.
Algoritma singkatnya seperti ini, hitung jumlah total huruf dalam kalimat kunci, digunakan sebagai looping. baca kalimat kunci dengan cara ambil karakter per karakter dari kiri, setelah ketemu dengan spasi, simpan rangkaian karakter tadi dalam sebuah kata kunci (bisa dalam array) lanjutkan proses scanning huruf demi huruf sampai dengan jumlah karakter kalimat habis. Selanjutnya baca hasil scanning kata tadi dan buat akumulator untuk memproses sintak filter berdasarkan kata kata tersimpan.

Berikut Fungsi getfilter selengkapnya.


FUNCTION GetFilter
LPARAMETERS CFILTERKU, CFIELDKU
CCURSORKU = 'CUR'+SYS(3)
CREATE CURSOR &CCURSORKU (KATA C(100))
NJMLCHAR = LEN(ALLTRIM(CFILTERKU))
IF NJMLCHAR=0
CKALIMATSINTAK = "''$"+CFIELDKU
RETURN CKALIMATSINTAK
ENDIF
I = 1
CHURUF = 'a'
CKATA = ''
DO WHILE I
DO WHILE CHURUF#' '
CHURUF = SUBSTR(CFILTERKU, I, 1)
CKATA = CKATA+CHURUF
I = I+1
ENDDO
APPEND BLANK
REPLACE KATA WITH UPPER(CKATA)
CKATA = ''
CHURUF = 'a'
ENDDO
SELECT &CCURSORKU
GOTO TOP
CKALIMATSINTAK = "'"+ALLTRIM(KATA)+"'$UPPER("+CFIELDKU+")"
IF RECCOUNT()>1
SKIP
DO WHILE .NOT. EOF()
CSINTAK = " OR '"+ALLTRIM(KATA)+"'$UPPER("+CFIELDKU+")"
CKALIMATSINTAK = CKALIMATSINTAK+CSINTAK
SKIP
ENDDO
ENDIF
USE IN &CCURSORKU
RETURN CKALIMATSINTAK
ENDFUNC


Penjelasan singkat, Fungsi ini memiliki 2 parameter, parameter pertama adalah kalimat kunci, parameter kedua adalah field dari data yang akan di filter (dilakukan pencarian atau select), nilai yang didapat dari fungsi ini adalah serangkaian sintak filter, gabungkan nilai tersebut dengan sintak filter.

Contoh pemanggilan fungsi ini adalah :


CFILTER = "Where "+GETFILTER(CSEEK, 'buku')
SELECT KODE,BUKU FROM BUKU &CFILTER INTO CURSOR HASIL

maksud dari potongan program diatas adalah, menampilkan kode dan nama buku berdasarkan kata kunci cseek, masukkan variable cseek sebagai inputan kata kunci pencarian contoh cSeek='Aneka Resep Masakan' maka program akan menampilkan semua data dengan field buku mengandung kata 'Aneka', 'Resep', 'Masakan'

Semoga bermanfaat, Berminat lebih lanjut dengan program Perpustakaan ? Kontak saya melalui email : edi.widodo@gmail.com

No comments:

Post a Comment