Nghiên cứu xây dựng và đánh giá mô hình máy tìm kiếm cho website dựa trên mô phỏng Google Search

MỤC LỤC

I GIỚI THIỆU CHUNG VỀ VẤN ĐỀ NGHIÊN CỨU

- Tìm kiếm Blog: dịch vụ tìm kiếm cho phép người dùng tìm kiếm thông tin trên hầu hết các mạng xã hội được cung cấp bởi Việt Nam cũng như trên thế giới mà người Việt Nam hay sử dụng. Với các dịch vụ cung cấp và tính năng khác biệt cho từng dịch vụ, Xa Lộ đang không ngừng được hoàn thiện để có thể phục vụ tốt nhất nhu cầu tìm kiếm của người dùng Internet Việt Nam và trở thành máy tìm kiếm tiếng Việt hàng đầu của Việt Nam.

Hình 1 Giao diện của google search engine
Hình 1 Giao diện của google search engine

II LÝ DO CHỌN ĐỀ TÀI

Sẽ có rất nhiều hạn chế như chỉ tìm được trên dữ liệu ở bên trong hệ quản trị cơ sở dữ liệu, hạn chế về câu truy vấn vì phụ thuộc vào cú pháp của mỗi cơ sở dữ liệu, không tìm được trên các dữ liệu phi cấu trúc, tốc độ xử lý trên một cơ sở dữ liệu lớn sẽ rất chậm v.v…Với các lý do đó ta cần xây dựng một hệ thống tìm kiếm cho website của mình tương tự như các máy tìm kiếm. • Từ các văn bản thuần túy đã truy xuất ra được ta sẽ thực hiện các bước như đưa tất cả về chữ thường, phân tích văn bản thành từng đơn vị từ vựng, loại bỏ các stopwords, thực hiện đưa văn bản về thành từ gốc (stemming, chỉ thực hiện phần này trong Tiếng Anh), tính trọng số của từ, loại bỏ những từ có trọng số thấp.

Hình 3 Sơ đồ usecase ban đầu của hệ thống
Hình 3 Sơ đồ usecase ban đầu của hệ thống

I LÝ THUYẾT LIÊN QUAN ĐẾN ĐỀ TÀI

Stopwords là các từ mà nó xuất hiện trong văn bản nhưng không mang nghĩa chẳng hạn trong Tiếng Việt các stopword như: thì, là, và, nhưng v.v..còn trong Tiếng Anh các stopwords như: a, the, but, and v.v..Các stopword thì không cần thiết trong việc đánh chỉ mục cho tài liệu, nó không phản ánh nội dung của văn bản và hầu như trong văn bản nào cũng xuất hiện chúng vì thế chúng cần phải được loại bỏ. Điều đó có nghĩa là ta có thể dùng Lucene để đánh chỉ mục và tìm kiếm dữ liệu lưu trữ trong các tập tin, trang web trên server, tài liệu lưu trữ trong hệ thống cục bộ, tập tin văn bản đơn giản, tập tin Microsoft Word, HTML, hoặc PDF, hoặc bất kì định dạng khác mà từ nó có thể truy xuất ra thông tin dạng văn bản.

Hình 5 Biểu đồ trạng thái của một liên kết
Hình 5 Biểu đồ trạng thái của một liên kết

II VẤN ĐỀ CẦN NGHIÊN CỨU

URL được hiểu như là con trỏ trỏ đến tài nguyên trên World Wide Web, tài nguyên ở đây có thể là tập tin hay thư mục, hay nó cũng có thể tham chiếu đến các tài nguyên phức tạp khác như truy vấn một cơ sở dữ liệu hay một máy tìm kiếm, một chương trình CGI-BIN, một serlet hay một JSP page. Bởi vì mã JavaScript thường nằm giữa các HTML chú thích, như đã được thảo luận trước, các chương trình spider đơn giản thường sẽ lọc bỏ mã JavaScript và không đối phó với nó, quá trình xử lý này là tương đối dễ dàng. Để thực hiện điều này, chương trình spider cần phải được biết rừ về cấu trỳc cỏc HTML chỳ thớch để nhận ra mó Javascript, và nó phải biết không cần xử lý dữ liệu bên trong các chú thích này.

Thật không may, cách thức giải quyết vấn đề là không mềm dẻo bởi vì nếu liên kết có bị thay đổi trên trang web, spider sẽ vẫn sử dụng các liên kết cũ, và do đó, nó sẽ không thể tìm thấy những điểm đến mới. Về cơ bản, giải quyết bằng cách sử dụng Rhino, một mã nguồn mở thực thi các mã JavaScript mà được viết hoàn toàn bằng Java, spider được mở rộng (extends) từ nó thì có thể nhận ra mã JavaScript. Cách sử dụng ba file như trên gây khó khăn cho spider bởi nó ngăn chặn không cho spider thu thập thông tin trên một trang mà nó phải đi tìm ba file này để tìm ra nội dung đầy đủ của trang này.

Hình 8 Vòng đời của một Thread
Hình 8 Vòng đời của một Thread

I PHÂN TÍCH HỆ THỐNG

Tuy nhiên ta không thể tạo quá nhiều tiến trình làm việc vì còn phải phụ thuộc vào tài nguyên như tốc độ xử lý của CPU, dung lượng bộ nhớ v.v…Vì vậy ta mặc định số tiến trình lớn nhất là mười. Các tài liệu được lưu trong ổ cứng như sau : hệ thống sẽ tạo một thư mục gốc, khi các trang web được tải về thì tùy theo tên host của nó mà hệ thống sẽ tạo một thư mục cùng tên với tên host đó nằm trong thư mục dữ liệu gốc chính. Ví dụ : khi ta tải tài liệu về từ một liên kết có dạng http://www.java2s.com/jsp/appplet.html thì trước tiên ta sẽ mã hóa cả tên liên kết để đặt tên cho tập tin lưu trữ trên đĩa.

• Hệ thống sẽ kiểm tra tính hợp lệ của các thông tin mới, nếu hợp lệ sẽ thêm vào cơ sở dữ liệu ngược lại sẽ đưa ta thông báo yêu cầu chỉnh sửa lại hoặc kết thúc mà không chỉnh sửa thông tin. Thứ hai ta có thể tùy chọn cho crawler chỉ tải những loại định dạng phổ biến (html, txt, doc, pdf, htm…) còn các loại định dạng khác sẽ bỏ qua hay chỉ lưu liên kết và tên của nó. Hệ thống tự động thêm thì phải mất thời gian cho việc phải thêm một bước kiểm tra nhưng thuận lợi là sẽ không thiếu sót các thư mục đặc biệt khi ta cấu hình cho phép crawler đi theo liên kết ngoại ra bên ngoài.

Hình 11 Cấu trúc của Crawler
Hình 11 Cấu trúc của Crawler

II THIẾT KẾ HỆ THỐNG

CrawlerManager xử lý các tiểu trình, còn các tiểu trình sẽ thực hiện công việc của mình là theo dấu các siêu liên kết, tải các tập tin cần thiết về (ở đây cơ bản là các file có MIME type là text/html). Cần phân tích từng loại định dạng của tài liệu để tìm cách lọc văn bản thuần một cách chính xác nhất, không dư thừa cũng như không bỏ sót. Các dữ liệu này có thể được xóa đi ngay sau khi đánh chỉ mục xong hay có thể được lưu lại nhằm hai mục đích: thứ nhất nếu sau một thời gian nguồn của nó không còn tồn tại do liên kết bị hỏng thì ta có thể dùng nó hiển thị kết quả cho người sử dụng, thứ hai nhằm mục đích trong công việc cập nhật thông tin tức là hệ thống dùng nó so sánh với kết quả mới tải về cũng từ liên kết đó nếu kết quả khác nhau thì ta ghi đè lên còn nếu giống nhau thì ta bỏ qua.

Tương tự với hệ thống indexer, chương trình được mặc định sẽ tự động tạo một thư mục gốc chứa các tập tin chỉ mục mang tên: C:/index_dir. Tổ chức các thư mục như vậy để dễ dàng phát triển thêm chức năng tìm kiếm theo từng loại tài liệu, tức là thu hẹp được phạm vi tìm kiếm phạm vi tìm kiếm. Một trang web thỡ cú cỏc thuộc tớnh như: tờn liờn kết, mụ tả…Ngoài ra nhằm mục đớch để theo dừi tình trạng của trang web ta dùng thêm trường tình trạng (root_status).

Hình 22 Sơ đô tuần tự của hệ thống
Hình 22 Sơ đô tuần tự của hệ thống

II KẾT QUẢ THỰC HIỆN

Tìm trong nội bộ site: nếu checkbox này được check thì crawler chỉ đi theo những liên kết là các liên kết của website đó ngược lại thì crawler có thể theo các liên kết đi ra bên ngoài. Thư mục chứa dữ liệu tức là thư mục chính chứa các thư mục sẽ được tạo ra. Giới hạn số liên kết mỗi site: tức là ta giới hạn số liên kết tối đa mà crawler tải về trên mỗi site.

Nếu thông số này không được thiết lập thì khi nào hết liên kết thì crawler mới dừng. Thời gian đợi khi hàng đợi rỗng: nếu thông số này không được thiết lập thì sẽ được dùng giá trị mặc định là 5 giây.

II KẾT QUẢ THỬ NGHIỆM

Tên các tập tin được mã hóa bằng chính tên của liên kết đến tài liệu đó. Các kết quả trả về được phân trang, mỗi trang thể hiện mười kết quả.

Hình 34 Trang web nguồn của kết quả đầu tiên
Hình 34 Trang web nguồn của kết quả đầu tiên

II HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI

Luận văn tốt nghiệp chỉ làm chương trình mô phỏng máy tìm kiếm trên các loại văn bản phi cấu trúc. Trong tương lai, từ những lý thuyết đã nghiên cứu được em sẽ phát triển chương trình thành một ứng dụng thực sự. Một chương trình có khả năng giao tiếp với hệ quản trị cơ sở dữ liệu nhằm mục đích đánh chỉ mục cho toàn bộ nội dung nằm bên trong hệ quản cơ sở dữ liệu.

• Phát triển thêm khả năng phân tích độ tương tự văn bản nhằm xây dựng thêm cho hệ thống có khả năng so sánh loại trừ những trang web ít thay đổi nội dung. • Chương trình sẽ là một công cụ hữu ích cho các website muốn phục vụ khả năng tìm kiếm cho người dùng ngày một tốt hơn. [2] Jeff Heaton , Programming Spiders, Bots, and Aggregators in Java [3] Trang web : http://jarkata.apache.org.