Để xây dựng bảng chỉ mục đầu tiên ta xây dựng bảng từ khóa. Từ khóa có được là do nội dung của bài viết được tách thành các từ.
Qui trình thực hiện xây dựng bảng từ khóa có thể tóm tắc như sau:
- Đầu tiên ta tách nội dung của bài viết thành các từ khoá
- Đưa tất cả các từ khoá vừa tách được vào trong một bảng tạm
- Dùng ngôn ngữ truy vấn dữ liệu để cập nhật các từ khoá trong bảng tạm vào trong bảng từ khoá chính theo nguyên tắc: không thêm vào bảng chính những từ mà bảng chính đã có.
Ví dụ
Ta có một bài gửi có các tham số sau:
Mãbàigửi = 100
Nộidung: Tự học Visual-Basic 6 trong 6 ngày
Sau khi tách ra lưu vào trong bảng tạm như sau:
100 6
Đưa từ khoá trong bảng tạm vào bảng chính:
Đưa các từ khoá vào trong bảng từ khoá theo nguyên tắc, từ khoá nào đã có thì không thêm vào, ngược lại từ chưa có thì thêm vào cuối bảng.Ta dùng ngôn ngữ truy vấn dữ liệu để thực hiện điều này
Sau khi thực hiện câu lệnh sql trên bảng từ khoá sẽ thêm vào những từ chưa có.
Ví dụ: bảng từ khoá trước đã có từ: Visual, học, sau khi thêm các từ khoá của bài có mã bài gửi là 100 vào thì như sau:
sqlQuery = "INSERT INTO TuKhoa ([tukhoa])SELECT DISTINCT TuKhoaTam.tukhoa FROM TuKhoaTam LEFT JOIN TuKhoa ON TuKhoaTam.tukhoa=TuKhoa.tukhoa WHERE (((TuKhoa.tukhoa) is
Mãtừkhoá Từkhoá 1 Visual 2 Học 3 Tự 4 Basic 5 Trong 6 6 7 Ngày
Thủ tục tách nội dung của bài gửi thành các từ khoá và đưa các từ khoá này vào bảng tạm:
sub AddKeyWordtoTempTable(theString, IDMsg) delim_ = ",.?/<>""!#$%^&*()-_=+\|;:"
On error resume next
delim = delim_ & chr(13) & chr(10)& chr(32) sql= "Delete * from TuKhoaTam;"
Set Conn = Session("DBConn") Conn.Execute(sql)
str = trim(theString) length = len(str)
if length = 0 then exit sub start = 1
for i = 1 to length
ch = mid(str, i, 1)
if InStr(delim, ch) > 0 then
KeyWord = trim(mid(str, start, i - start))
if KeyWord <> "" and not Isnull(KeyWord) then Set Cn = Session("Connect")
sqlNew = "INSERT INTO TuKhoaTam ( ma, tukhoa )SELECT "&IDMsg&", '"&KeyWord&"';"
Cn.Execute(sqlNew) end if start = i + 1 end if next if start < i then
KeyWord = Trim(Mid(str, start, i-start))
if KeyWord <> "" and not IsNull(KeyWord) then Set Conn = Session("Connect")
sqlNew = "INSERT INTO TuKhoaTam ( ma, tukhoa)SELECT "&IDMsg&", '"&KeyWord&"';"
Conn.Execute(sqlNew) end if
end if end sub
Tạo bảng chỉ mục:
Để có thể tìm kiếm được bài viết theo tiêu đề và theo nội dung, chương trình xây dựng các bảng chỉ mục để tìm kiếm cụ thể như sau:
Sau khi đã có được bảng từ khoá tạm và bảng từ khoá ta tiếp tục xây dựng bảng chỉ mục. Bảng từ khoá tạm được dùng để lấy các từ khoá của một bài mới được gửi và số mã bài của bài gửi đó kết hợp với bảng từ khoá mỗi từ khoá sẽ ứng với một mã từ khoá. Vậy ta đã có được 2 giá trị là mãbàigửi và mãtừkhoá để chèn vào bảng chỉ mục.
Tên trường Kiểu dữ liệu Giải thích
Mãbàigửi Number
Mãtừkhoá Number
Vậy ta đã có được bảng chỉ mục
Tìm kiếm như thế nào?
Để tìm kiếm được một bài nào đó theo nội dung ta cần phải kết hợp ba bảng “BàiGửi” bảng “TừKhoá” và bảng “ChỉMục” theo quan hệ như hình sau:
c. Tìm kiếm theo tiêu đề: các tiêu đề của bài gửi sau khi được gửi lên diễn đàn cũng được tách ra thành các từ khoá và cũng được lưu trữ trong các bảng từ khoá và bảng chỉ