Tìm kiếm theo nội dung: Xây dựng bảng chỉ mục phục vụ cho việc tìm kiếm

Một phần của tài liệu Đồ án tốt nghiệp - Phân tích thiết kế hệ thống - Xây dựng diễn đàn trên mạng docx (Trang 27 - 33)

Để 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ỉ

Một phần của tài liệu Đồ án tốt nghiệp - Phân tích thiết kế hệ thống - Xây dựng diễn đàn trên mạng docx (Trang 27 - 33)

Tải bản đầy đủ (PDF)

(45 trang)