SỐ 145
KINH NGHIỆM LẬP TRÌNH

Dùng hàm instr trong ASP để hỗ trợ việc tìm kiếm
NGUYỄN TRẦN HUY PHONG (Lâm Đồng)

Tôi xin trình bày một kinh nghiệm sử dụng hàm instr có sẵn trong ASP để hỗ trợ việc tìm kiếm. Bạn hãy xem xét hàm tim_kiem ở đoạn mã 1. Hàm Instr(số_bắt_đầu_tìm, nội_dung,chuỗi_tìm,tùy_chọn) sẽ trả về số thứ tự tìm thấy chuỗi_tìm trong nội_dung. Do đó, trong hàm tim_kiem, đầu tiên ta tách các từ cần tìm vào một mảng tên là keywords. Biến kq_1 cho kết quả tìm nguyên chuỗi trong nội dung. Nếu xuất hiện chuỗi cần tìm trong nội dung, kq_1 sẽ lớn hơn 1. Như vậy, với điều kiện “tìm chính xác cụm từ”, ta chỉ đơn giản dùng ngay kq_1.

Với điều kiện “tìm ít nhất một từ”, khi kết thúc vòng lặp ta thấy kq_2 được tăng lên bằng với số từ được tìm thấy. Do đó chỉ cần kq_2 lớn hơn 1, kết quả tìm kiếm sẽ là đúng.

Với điều kiện “tìm tất cả các từ” thì kq_2 ít nhất phải bằng số từ cần tìm, do đó với điều kiện kq_2>=keycnt+1 thì cho kết quả đúng.

Việc chuyển giao một phần công việc tìm kiếm cho ASP xử lý theo cách như trên (chuyển bớt "gánh nặng" từ tầng cơ sở dữ liệu lên tầng ứng dụng) có thể sẽ giúp cơ sở dữ liệu chạy nhanh hơn và kết quả tìm kiếm sẽ tốt hơn.

Đoạn mã 1
function tim_kiem(noi_dung, chuoi_tim,dieu_kien)
dim keywords,keycnt,kq_1,kq_2,kq,kq_tam
rem đầu tiên đưa các từ cần tìm vào 1 mảng
keywords = split(chuoi_tim," ")
rem đếm số từ cần tìm
keycnt = ubound(keywords)
rem gán các giá trị mặc định cho các biến
kq_1=0
kq_2=0
kq=0
kq_1=instr(1,noi_dung,chuoi_tim,vbTextCompare)
kq_tam=0
For Each word in keywords
kq_2 = instr(1,noi_dung,word,vbTextCompare)
if kq_2>0 then kq_tam=kq_tam+1 end if
next
select case dieu_kien
rem nếu điều kiện là “tìm chính xác cụm từ”
rem thì kết quả chính là kq_1

case "phrase":kq=kq_1
rem nếu điều kiện là “tìm tất cả từ” thì
rem kết quả tạm lớn hơn số từ +1 là đúng

case "and":if kq_tam>=keycnt+1 then kq=1 else kq=0 end if
rem nếu điều kiện là “tìm ít nhất một từ” thì
rem kết quả tạm lớn hơn 1 là đúng

case "or":if kq_tam>=1 then kq=1 else kq=0 end if
end select
tim_kiem=kq
end function

[Đầu trang]
Trang chủ
Nội lực "Peter Pan"
Cầu nối Intel Việt Nam
Chuyện trong tuần
Cõi người ta
Bình luận thị trường
Cõi Mô-bai
Chuyên đề
Bổ ngửa
Túi càn khôn IT
Hồ lô biến
Cảm về Game
Nhật ký e-CHÍP
Bản quyền Công ty Phần mềm & Truyền thông VASC
 99 Triệu Việt Vương HN; Tel: (04) 9782235 • email: echip@vasc.com.vn
Mọi chi tiết về kinh doanh và quảng cáo xin liên hệ Phòng Quảng cáo. Tel: (04) 9782077 kd@vasc.com.vn