Beberapa waktu lalu, saya menulis fungsi pencarian fuzzy multi-bidang (mirip dengan baidui). Kode fungsinya adalah sebagai berikut
' ===== = =
'Nama fungsi: kata kunci_sousuo
'Fungsi: Menghasilkan kondisi kueri sql
'Parameter: table_field ------ nama field tabel (dipisahkan dengan koma)
' kata kunci ------ Kata kunci pencarian (pisahkan dengan spasi)
'Kembali: kondisi kueri sql
' ===== = =
fungsi kata kunci_sousuo(byval table_field,byval kata kunci)
redupkan str01,str02,kata kunci,table_fields,i,j
table_fields=split(trim(table_field),,)
kata kunci=split(trim(kata kunci),,)
jika table_field<> maka
str01=(&table_fields(0)& suka '%&kata kunci&%'
untuk j=0 hingga ubound(table_fields)
str01=str01& atau &table_fields(j)& seperti '%&kata kunci&%'
Berikutnya
str01=str01&)
kalau tidak
respon.Write(<script>alert('Parameter error (tidak boleh kosong)!')</script>)
respon.Akhir()
berakhir jika
'Lebar penuh -> Ruang setengah lebar
'kata kunci=ganti(kata kunci, , )
'sementara InStr(kata kunci, )>0
' kata kunci=ganti(kata kunci, , )
'pergi ke
kata kunci=split(kata kunci, )
jika ubound(kata kunci)>0 maka
untuk i=0 hingga ubound(kata kunci)
str02=str02&(&table_fields(0)& suka '%&kata kunci(i)&%'
untuk j=1 hingga ubound(table_fields)
str02=str02& atau &table_fields(j)& seperti '%&kata kunci(i)&%'
Berikutnya
str02=str02&)
Berikutnya
str02=(&ganti(str02,)(,)dan()&)
kata kunci_sousuo=( & str01 & atau & str02 & )
kalau tidak
kata kunci_sousuo=str01
berakhir jika
fungsi akhir
' ===== = =
'Nama fungsi: kata kunci_tag
'Fungsi: Menandai kata kunci dalam string dengan warna merah
'Parameter: str ------ string
' kata kunci ------ tandai kata kunci (pisahkan dengan spasi)
'Kembali: string (format html)
' ===== = =
fungsi kata kunci_tag(byval str,byval kata kunci)
redupkan kata kunci,str01,str02,i
'Lebar penuh -> Ruang setengah lebar
'kata kunci=ganti(kata kunci, , )
'sementara InStr(kata kunci, )>0
' kata kunci=ganti(kata kunci, , )
'pergi ke
str01=ganti(str,kata kunci,<font color=#ff0000>&kata kunci&</font>)
kata kunci=split(kata kunci, )
jika ubound(kata kunci)>0 maka
str02=str
untuk i=0 hingga ubound(kata kunci)
str02=ganti(str02,kata kunci(i),<font color=#ff0000>&kata kunci(i)&</font>)
Berikutnya
kata kunci_tag=str02
kalau tidak
kata kunci_tag=str01
berakhir jika
fungsi akhir
Berikut ini contohnya http://www.zhouhaihe.com/blog/uploads/200604/recordread.asp
<%@LANGUAGE=KODE VBSCRIPT=936%>
<%
pilihan eksplisit
koneksi redup, koneksi, database
connstr=DBQ=+server.mappath(record.mdb)+;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};
setel koneksi=server.CreateObject(adodb.koneksi)
koneksi.buka koneksi
redup n,rs,halaman,kata kunci,kata kunci,RecordCount,pageCount,pos,i,sql_where
n=50
halaman=Permintaan(halaman)
kata kunci=trim(permintaan(kata kunci))
sql_where=keyword_sousuo(judul,cz,nama,waktu,kata kunci)
set rs=server.CreateObject(adodb.recordset)
rs.open pilih * dari catatan di mana &sql_where& pesan berdasarkan id desc,conn,1,2
jika halaman=0 maka
halaman=1
berakhir jika
Jumlah Catatan = 0
lakukan selagi tidak rs.Eof
Jumlah Catatan = Jumlah Catatan +1
rs.MoveNext
lingkaran
jika tidak RecordCount=0 maka
rs.MoveFirst
berakhir jika
pageCount=Jumlah Catatan/n
jumlah halaman=int(jumlah halaman)
jika (RecordCount mod n)>0 maka
Jumlah Halaman=Jumlah Halaman +1
berakhir jika
%>
<tipe gaya=teks/css>
<!--
.STYLE3 {warna: #666666}
-->
</gaya>
<lebar tabel=100% batas=0 spasi sel=0 bantalan sel=0>
<form id=nama form1=metode form1=tindakan posting=?><tr><td align=center><nama masukan=jenis kata kunci=id teks=nilai kata kunci=<%=kata kunci%> ukuran=30 />
<tipe input=kirim nama=Kirim nilai=penelusuran/>
<span class=STYLE3>(Pisahkan kata kunci dengan spasi) </span></td>
</tr></bentuk>
<tr>
<td tinggi=5></td>
</tabel>
<lebar tabel=600 batas=1 align=center cellpadding=4>
<tr sejajar=tengah>
<td width=131>Judul</td>
<td width=131>Aksi</td>
<td width=131>Nama pengguna</td>
<td width=132>Waktu</td>
</tr>
<%pos=0
lakukan sambil pos<(halaman-1)*n
pos=pos+1
rs.moveNext
lingkaran
saya=0
sementara bukan rs.eof dan i<n
saya=saya+1%>
<tr sejajar=tengah>
<td><%=keyword_tag(rs(judul),kata kunci)%></td>
<td><%=keyword_tag(rs(cz),kata kunci)%></td>
<td><%=keyword_tag(rs(nama),kata kunci)%></td>
<td><%=keyword_tag(rs(waktu),kata kunci)%></td>
</tr>
<%rs.movenext
pergi ke
rs.tutup
atur rs=tidak ada
samb.tutup
setel samb=tidak ada
' ===== = =
'Nama fungsi: kata kunci_sousuo
'Fungsi: Menghasilkan kondisi kueri sql
'Parameter: table_field ------ nama field tabel (dipisahkan dengan koma)
' kata kunci ------ Kata kunci pencarian (pisahkan dengan spasi)
'Kembali: kondisi kueri sql
' ===== = =
fungsi kata kunci_sousuo(byval table_field,byval kata kunci)
redupkan str01,str02,kata kunci,table_fields,i,j
table_fields=split(trim(table_field),,)
kata kunci=split(trim(kata kunci),,)
jika table_field<> maka
str01=(&table_fields(0)& suka '%&kata kunci&%'
untuk j=0 hingga ubound(table_fields)
str01=str01& atau &table_fields(j)& seperti '%&kata kunci&%'
Berikutnya
str01=str01&)
kalau tidak
respon.Write(<script>alert('Parameter error (tidak boleh kosong)!')</script>)
respon.Akhir()
berakhir jika
'Lebar penuh -> Ruang setengah lebar
kata kunci=ganti(kata kunci, , )
' sementara InStr(kata kunci, )>0
' kata kunci=ganti(kata kunci, , )
'pergi ke
kata kunci=split(kata kunci, )
jika ubound(kata kunci)>0 maka
untuk i=0 hingga ubound(kata kunci)
str02=str02&(&table_fields(0)& suka '%&kata kunci(i)&%'
untuk j=1 hingga ubound(table_fields)
str02=str02& atau &table_fields(j)& seperti '%&kata kunci(i)&%'
Berikutnya
str02=str02&)
Berikutnya
str02=(&ganti(str02,)(,)dan()&)
kata kunci_sousuo=( & str01 & atau & str02 & )
kalau tidak
kata kunci_sousuo=str01
berakhir jika
fungsi akhir
' ===== = =
'Nama fungsi: kata kunci_tag
'Fungsi: Menandai kata kunci dalam string dengan warna merah
'Parameter: str ------ string
' kata kunci ------ tandai kata kunci (pisahkan dengan spasi)
'Kembali: string (format html)
' ===== = =
fungsi kata kunci_tag(byval str,byval kata kunci)
redupkan kata kunci,str01,str02,i
'Lebar penuh -> Ruang setengah lebar
kata kunci=ganti(kata kunci, , )
'sementara InStr(kata kunci, )>0
' kata kunci=ganti(kata kunci, , )
'pergi ke
str01=ganti(str,kata kunci,<font color=#ff0000>&kata kunci&</font>)
kata kunci=split(kata kunci, )
jika ubound(kata kunci)>0 maka
str02=str
untuk i=0 hingga ubound(kata kunci)
str02=ganti(str02,kata kunci(i),<font color=#ff0000>&kata kunci(i)&</font>)
Berikutnya
kata kunci_tag=str02
kalau tidak
kata kunci_tag=str01
berakhir jika
fungsi akhir
redup y
%> <tr sejajar=tengah>
<td colspan=4> <%=RecordCount%><font color=#FF0000><%=page%></font>/<%=pageCount%> halaman
<%=n%> halaman/halaman buka:
<PILIH nama=pilih onchange=window.open(this.options[selectedIndex].value,'_self') >
<%y=1
lakukan sementara y<pagecount+1%>
<OPTION value=?page=<%=y%>&keyword=<%=server.URLEncode(keyword)%> <%if cstr(page)=cstr(y) lalu respon.Write( dipilih) end if%> > Halaman <%=y%></OPTION>
<%y=y+1
lingkaran%>
</PILIH></td>
</tr>
</tabel>