Các Search engine không chỉ đơn thuần làmột trang web với các mã HTMT đơn giản mà nó là cả một hệ thống gồm nhiều bộ phận, mỗi bộ phận thực hiện một chức năng như dò tìm các trang trên I
TỔNG QUAN VỀ SEARCH ENGINE
Giới thiệu chung
The term "Search Engine" refers to two distinct systems for searching: one is automated through computer programs known as Crawler Based Search Engines, and the other is a human-managed Internet directory called Human Powered Directories These two search systems catalog websites using different methods.
Máy tìm kiếm dựa trên crawler sử dụng các chương trình máy tính như Robots, Spiders và Crawlers để quét và phân tích các trang web trên internet Chúng tự động thu thập thông tin và lưu trữ vào cơ sở dữ liệu Khi có yêu cầu tìm kiếm, các máy tìm kiếm sẽ đối chiếu từ khóa với bảng chỉ mục và trả về kết quả tương ứng Ngoài ra, các cỗ máy tìm kiếm này cũng có cơ chế cập nhật nội dung web định kỳ để phát hiện sự thay đổi trên các trang web.
Human-powered directories rely entirely on human management For users to ensure their websites are discovered by search engines, they must submit their site for inclusion by sending a registration request to the directory's editorial team.
Ngày nay, hầu hết các hệ thống tìm kiếm đều kết hợp giữa tìm kiếm tự động và tìm kiếm theo thư mục do người dùng quản lý, như Yahoo Directory và Google Directory.
Phân loại
Xét theo phương pháp tìm kiếm thì các Search Engine (SE) được chia làm hailoại chính: Tìmkiếm thông thường và siêutìmkiếm.
1.2.1 Máy tìm kiếm thông thường
Các máy tìm kiếm hoạt động bằng cách thu thập tài liệu, phân loại và tạo chỉ mục Chúng được chia thành hai loại: Search Engine sử dụng thư mục chủ và Search Engine tạo chỉ mục tự động.
Các Search Engine sử dụng thư mục chủ đề để phân loại các trang trên Internet thành các cấp chi tiết hơn Người dùng tìm kiếm thông tin bằng cách bắt đầu từ các chủ đề rộng và dần thu hẹp đến các chủ đề cụ thể hơn cho đến khi tìm thấy trang web mong muốn Phương pháp tìm kiếm này có ưu điểm là cung cấp các chủ đề chính xác hơn và sử dụng cơ sở dữ liệu nhỏ hơn so với các Search Engine áp dụng công nghệ phân loại tự động Tuy nhiên, nhược điểm là các thư mục chủ đề thường hạn chế, không thể bao quát hết mọi chủ đề mà người dùng cần, và sự phân loại có thể mang tính chủ quan.
Các Search Engine phân loại và tạo chỉ mục tự động là các Search Engine thuộckiểuCrawler Based Search- Engines
1.2.2 Máy siêu tìm kiếm – Meta Search Engine
Meta Search Engine là loại công cụ tìm kiếm ảo, hoạt động dựa trên các Search Engine hiện có mà không có cơ sở dữ liệu riêng Nó gửi từ khóa đến nhiều Search Engine cùng lúc và thu thập kết quả từ chúng Nhiệm vụ chính của Meta Search Engine là tổng hợp và phân loại các kết quả tìm được, giúp người dùng có thêm nhiều lựa chọn Ưu điểm lớn nhất của loại máy này là khả năng tìm kiếm đa dạng hơn nhờ vào việc sử dụng cơ sở dữ liệu của các Search Engine khác, tuy nhiên, nó cũng phải phụ thuộc vào những cơ sở dữ liệu đó Một ví dụ tiêu biểu là Metacrawler (http://www.metacrawler.com), cùng với một số website khác như http://www.monstercrawler.com và http://www.mamma.com (Mother of All Search Engine).
Mô hình của seach engine
Bộ tìm duyệt Crawler có nhiệm vụ thu thập các trang trên Internet và chuyển chúng cho bộ đánh chỉ mục Indexer Quá trình bắt đầu từ một tập hợp các URL ban đầu S0, Crawler sắp xếp các phần tử trong S0 vào hàng đợi và lần lượt tải về các trang tương ứng Sau khi tải về, Crawler trích xuất tất cả các URL từ các trang đó và đưa chúng vào hàng đợi để tiếp tục quá trình Quá trình này diễn ra liên tục cho đến khi Crawler quyết định dừng lại Tuy nhiên, với số lượng trang tải về rất lớn và tốc độ thay đổi nhanh chóng của Web, nhiều vấn đề cần được giải quyết xuất hiện.
Khi lựa chọn các trang để tải về, cần lưu ý rằng hầu hết các crawler không thể tải tất cả các trang trên web, ngay cả những công cụ tìm kiếm tốt nhất Do đó, việc chọn lọc kỹ lưỡng các trang cần tải về là rất quan trọng Thứ tự sắp xếp các URL trong hàng đợi cũng cần tuân theo thời gian để đảm bảo hiệu quả trong quá trình thu thập dữ liệu.
Crawler thường xuyên tải về một lượng lớn trang web và sau một thời gian cần quay lại để cập nhật các thay đổi Việc quyết định trang nào cần ghé thăm lại phụ thuộc vào tần suất thay đổi của chúng; những trang có nội dung thường xuyên thay đổi sẽ được cập nhật nhiều hơn so với các trang ít thay đổi.
Quá trình dò tìm trang web được tối ưu hóa thông qua việc sử dụng nhiều Crawler hoạt động song song, giúp tải về một lượng lớn trang web trong thời gian ngắn Điều này rất quan trọng do kích thước khổng lồ của Internet Để đảm bảo hiệu quả, các Crawler cần được bố trí hợp lý, tránh việc trùng lặp khi ghé thăm các trang đã được Crawler khác truy cập.
1.3.1.1 Page selection(lựa chọn các trang)
Bộ tìm duyệt Crawler xác định mức độ quan trọng của các trang web để tải về theo thứ tự ưu tiên Việc hiểu cách mà Crawler đánh giá độ quan trọng này là rất cần thiết.
Cho một trang web P, ta định nghĩa mức độ “quan trọng” của trang theo P các cách sau:
Phương pháp Interest Driven xác định mức độ quan trọng của các trang web dựa trên sự quan tâm của người dùng Những trang phù hợp với nhu cầu của người sử dụng được coi là quan trọng, giúp nâng cao trải nghiệm tìm kiếm và tối ưu hóa nội dung cho người dùng.
Độ phổ biến của một trang web được xác định dựa trên mức độ quan trọng của nó, với một trong những tiêu chí chính là số lượng liên kết trỏ đến trang đó, hay còn gọi là số lượng backlink.
- Location Driven: Xác định mức độ quan trọng của trang P dựavào địa chỉ của nó.
Mong muốn của các máy tìm kiếm là thiết kế bộ Crawler có khả năng ghé thăm các trang theo thứ tự ưu tiên, với các trang có mức độ quan trọng cao hơn được thăm trước Bộ Crawler đánh giá các trang dựa vào giá trị phân hạng, như IB(P), để xác định mức độ quan trọng của chúng Từ đó, Crawler có thể dự đoán và lấy về những trang có giá trị cao hơn trong các lần thu thập tiếp theo Để đánh giá chất lượng của Crawler, người ta có thể định nghĩa độ đo chất lượng (quality metric) của nó bằng hai cách khác nhau.
Mô hình Crawl & Stop cho phép bộ Crawler C bắt đầu từ trang khởi đầu P0 và dừng lại sau khi đã ghé thăm k trang, với k là số lượng trang mà Crawler có thể tải trong một lần duyệt Một Crawler hiệu quả sẽ truy cập các trang theo thứ tự R1,…,Rk.
R1 là trang có thứ hạng cao nhất, tiếp theo là R2 và các trang khác Các trang R1, R2, , Rk được coi là các trang hot Trong số k trang mà Crawler ghé thăm, chỉ có m trang (với m ≤ k) sẽ được xếp hạng cao hơn hoặc bằng trang Rk.
Để ước lượng hiệu suất của Crawler, chúng ta cần tải tất cả các trang và có cái nhìn tổng quan về Web Hiệu suất của Crawler C được tính bằng công thức CS(C) = (m.100)/k, trong đó một Crawler lý tưởng có hiệu suất 100% Crawler này có khả năng ghé thăm các trang web một cách ngẫu nhiên và có thể thăm lại trang Hiệu suất của các Bộ Crawler được xác định bởi công thức (m.1000)/T, với T là tổng số trang trên Web Mỗi trang được ghé thăm sẽ được kích hoạt với xác suất k/T, do đó số trang mong muốn được duyệt cho đến khi Crawler dừng lại là k^2/T.
Crawl & Stop với ngưỡng: Giả sử bộ Crawler ghé thăm k trang, trong đó G là ngưỡng đã được xác định, và các trang có độ quan trọng lớn hơn G được coi là trang hot Nếu số trang hot là h và chúng ta biết hạng của tất cả các trang, hiệu suất của bộ Crawler PST(C) được tính bằng tỷ lệ phần trăm của h Khi k < h, hiệu suất lý tưởng của Crawler là ST(C) = (k.100)/h, và nếu k ≥ h, hiệu suất đạt 100% Crawler mong muốn ghé thăm ngẫu nhiên h/T trang hot, do đó hiệu suất của nó là (k.100)/T Chỉ những Crawler ngẫu nhiên ghé thăm toàn bộ T trang mới có hiệu suất đạt 100%.
Độ đo thứ hạng (Ordering Metrics) là một yếu tố quan trọng trong quá trình hoạt động của Crawler, giúp xác định thứ tự các URL mà nó sẽ ghé thăm Crawler lưu giữ các URL đã truy cập trong một hàng đợi và chọn URL có giá trị Ordering cao nhất cho lần ghé thăm tiếp theo Để thiết lập độ đo thứ hạng, có thể sử dụng các chỉ số như IB(P), trong đó P là trang được trỏ tới Đơn vị đo theo vị trí (local metric) giúp xếp hạng trực tiếp bằng cách cung cấp giá trị IL(P) cho một URL cụ thể Việc áp dụng các giá trị phận hạng Ordering Metric hóa giúp Crawler hoạt động hiệu quả hơn, cho phép dự đoán nội dung của trang P thông qua văn bản trong URL Do đó, một độ đo thứ hạng có thể được thiết lập dựa trên IS(A) cho một số truy vấn Q, trong đó A là văn bản trong URL.
Khi Crawler chọn và tải về các trang "quan trọng", sau một thời gian nhất định, nó cần cập nhật các trang đó Có nhiều phương pháp để thực hiện việc cập nhật này, và mỗi phương pháp sẽ mang lại kết quả khác nhau Dưới đây là hai cách để thực hiện điều đó.
+ Uniform refresh policy: Chiến lược cập nhật đồng loạt Crawler ghé thăm lại tất cả các trang theo cùng một tần suất f
+ Proportional refresh policy:Cập nhậttheo tỷ lệ
Một trang web thường xuyên thay đổi sẽ thu hút sự chú ý của Crawler nhiều hơn Cụ thể, nếu tần suất thay đổi của trang là ai và tần suất Crawler ghé thăm lại trang là fi, thì tỷ lệ ai/fi sẽ giống nhau cho mọi trang Ví dụ, nếu trang e1 thay đổi nhiều hơn trang e2 gấp 10 lần, thì số lần Crawler ghé thăm lại trang e1 cũng sẽ nhiều hơn gấp 10 lần so với trang e2.
Search Engine điển hình
Trong những Search Engine hiện nay Google là Search Engine tốt nhất Phần này sẽ giới thiệu về Google
Google được thành lập vào năm 1997 bởi Larry Page và Sergey Brin, ban đầu mang tên BackRub trước khi đổi thành Google Vào ngày 7 tháng 9 năm 1998, công ty Google chính thức ra đời và nhanh chóng được tạp chí PC Magazin xếp hạng trong top 100 trang web và công cụ tìm kiếm hàng đầu thế giới với 500.000 lượt tìm kiếm mỗi ngày Năm 2000, Google ký thỏa thuận với Yahoo và sau đó hợp tác với AOL, trở thành công cụ tìm kiếm hàng đầu toàn cầu Google hỗ trợ nhiều ngôn ngữ, bao gồm tiếng Việt, và cung cấp nhiều hình thức tìm kiếm khác nhau như tìm kiếm theo từ khóa và theo chủ đề Trang web chính thức của Google là http://www.google.com.
1.4.2 Cấu trúc của máy tìm kiếm Google
Tổng quan về cấu trúc của máy tìmkiếm Google
Hình 1.2: Kiếntrúccủa máy tìmkiếm Google
Bộ tìm duyệt Crawler của Google bao gồm nhiều Crawler nhỏ phân bố ở các địa điểm khác nhau, với nhiệm vụ chính là thu thập thông tin từ các trang web Máy chủ URL cung cấp địa chỉ URL cho Crawler, và các trang web được tải về sẽ được chuyển vào Repository Mỗi trang web nhận một chỉ số ID duy nhất, hay còn gọi là docID, khi có một URL mới được tách khỏi trang web Để xử lý hàng trăm triệu trang web, Google sử dụng một hệ thống dò tìm nhanh chóng và độc lập, trong đó một URL Server cung cấp danh sách URLs cho các Crawler, mỗi Crawler giữ một số lượng nhất định các địa chỉ này.
Hệ thống của chúng tôi có khả năng thực hiện 300 cuộc kết nối đồng thời, điều này rất quan trọng để tối ưu hóa tốc độ thu thập dữ liệu từ các trang web Với 4 Crawler hoạt động tối đa, hệ thống có thể tìm kiếm hơn 100 trang web trong một giây, tương đương với khoảng 600KB dữ liệu.
Bộ đánh chỉ mục Indexer: Bộ này có chức năng lấy các tài liệu trong kho Repository, giảinén và phân tích chúng để tạo chỉ mục.
Mỗi tài liệu được chuyển thành tập hợp các từ và thông tin liên quan như vị trí xuất hiện, cỡ chữ, và kiểu chữ (viết hoa hay viết thường), gọi là hit Bộ Indexer phân bổ các hit vào các "Barrels" và tạo ra chỉ mục xuôi được sắp xếp từng phần Ngoài ra, bộ Indexer còn phân tích tất cả các đường liên kết trong mỗi trang web, lưu giữ thông tin quan trọng trong một tệp neo (anchor file), bao gồm các liên kết đến và đi từ URL, cùng với dòng thể hiện liên kết của các URL.
Bộ xử lý URL Resolver có nhiệm vụ chuyển đổi các URL tương đối thành các URL tuyệt đối và sau đó thành các chỉ mục docID Nó cũng lưu trữ dòng văn bản liên kết (anchor text) cùng với docID của tài liệu mà URL đó trỏ tới vào chỉ mục xuôi Đồng thời, URL Resolver tạo ra một cơ sở dữ liệu liên kết, chứa các cặp docID, được sử dụng để tính hạng (PageRank) cho tất cả tài liệu.
Bộ Sorter thực hiện việc sắp xếp dữ liệu theo thứ tự docID trong các Barrels và sau đó sắp xếp lại theo wordID để tạo ra chỉ mục ngược, giúp tiết kiệm dung lượng nhớ tạm thời Nó cũng tạo ra danh sách các wordID và offsets cho chỉ mục ngược Chương trình Dumplexicon sử dụng danh sách này cùng với bảng từ vựng do bộ Indexer tạo ra, hình thành bảng từ vựng mới cho bộ tìm kiếm Searcher Bộ Searcher, được khởi chạy bởi Web Server, sử dụng bảng từ vựng mới kết hợp với chỉ mục ngược và giá trị PageRank để đáp ứng yêu cầu của người sử dụng.
Cấu trúc dữ liệu của Google được tối ưu hóa nhằm tối đa hóa số lượng trang được duyệt, đánh chỉ mục và tìm thấy với chi phí thấp nhất Mặc dù vi xử lý và tốc độ truy xuất đã cải thiện nhanh chóng trong những năm gần đây, một lần tìm kiếm trên đĩa vẫn mất khoảng 10ms Do đó, Google được thiết kế để giảm thiểu việc tìm kiếm trên đĩa, điều này ảnh hưởng đáng kể đến thiết kế cấu trúc dữ liệu của nó.
Bigfiles là các tệp ảo mở rộng, cho phép hệ thống quản lý nhiều tệp và có thể được truy cập thông qua địa chỉ 64 bit Sự phân vùng giữa các hệ thống đa tệp được tự động điều khiển, giúp tối ưu hóa việc quản lý dữ liệu Gói Bigfiles đảm nhận việc phân vùng và xóa phân vùng của phần mô tả tệp, khắc phục những hạn chế mà hệ điều hành không đáp ứng được Ngoài ra, Bigfiles còn cung cấp các phương thức đơn giản để người dùng dễ dàng thao tác.
Kho Repository lưu trữ mã HTML hoàn chỉnh của các trang web, với mỗi trang được nén trước khi đưa vào kho Việc lựa chọn kỹ thuật nén phù hợp cần dựa trên sự cân bằng giữa tỷ lệ nén và tốc độ nén.
Dữliệuchưa nén trong Repository 147.8 GB đượcnén còn 53.5GB
Cấutrúccủa gói dữ liệu nén trong Repository (góicompressed packet)
DocID Ecode Urllen Pagelen URL Page
Cấu trúc dữ liệu trong kho Repository là đủ để đảm bảo tính nhất quán và hỗ trợ quá trình phát triển Chúng ta có thể tái tạo tất cả các cấu trúc dữ liệu khác chỉ bằng cách sử dụng Repository và một tệp danh sách lỗi trong quá trình duyệt Crawler.
Chỉ mục tài liệu (Document Index-DocID) lưu trữ thông tin về trạng thái hiện hành của tài liệu, bao gồm con trỏ tới kho Repository, thông số kiểm lỗi Checksum và các thông số khác Nếu tài liệu đã được duyệt, DocID sẽ chứa thông tin như địa chỉ URL và tiêu đề Ngược lại, nếu tài liệu chưa được duyệt, DocID sẽ chỉ chứa con trỏ đến danh sách URL Quyết định thiết kế này nhằm tạo ra một cấu trúc dữ liệu hợp lý và tối ưu hóa khả năng thu thập thông tin trong một lần tìm kiếm.
Để chuyển đổi các địa chỉ URL thành DocID, một tệp được sử dụng để sắp xếp danh sách theo mã kiểm soát Checksum Để tìm DocID của một URL cụ thể, Checksum của URL đó được tính toán và phương pháp tìm kiếm nhị phân được áp dụng trong tệp Checksum Kỹ thuật này cho phép chuyển đổi các liên kết URL thành các DocID thông qua modul URL Resolver.
Có nhiều loại danh mục từ khác nhau, trong đó có một loại mới được cải tiến so với hệ thống trước, cho phép lưu trữ trong bộ nhớ với chi phí hợp lý Danh mục từ này được chia thành hai phần: một danh sách các từ và một bảng băm chứa các con trỏ.
Danhmục từ Lexicon 293 MB Inverted Barrels:41GB
DocID:27 nhits:5 hit hit hithit DocID:27 nhits:5 hit hit hit DocID:27 nhits:5 hit hit hithit DocID:27 nhits:5 hit hit
Mỗi hit chứa thông tin về từ trong tài liệu, bao gồm vị trí, font chữ, và trạng thái viết hoa hay viết thường Danh sách hit loại bỏ hầu hết các khoảng trống trong chỉ mục xuôi và ngược Có nhiều phương pháp mã hóa cho vị trí, font chữ và trạng thái viết hoa, trong đó mã hóa đơn giản sử dụng bộ số 3 nguyên, mã hóa nén tiết kiệm không gian hơn và ít thao tác xử lý bit hơn so với phương pháp Huffman Chi tiết về hit được mô tả trong hình 1.5.
WordID ndocs cap:1 imp:3 Posistion:12 cap:1 imp=7 type:4 cap:1 imp=7 type:4 hash:4 pos 4
Fancy hit bao gồm các thông tin URL, tiêu đề (title), văn bản neo (anchor text), thẻ meta.
CÁC THUẬT TOÁN ĐỐI SÁNH MẪU CHO HỆ THỐNG TÌM KIẾM THÔNG TIN TRÊN MẠNG
Giới thiệu một số thuật toán đối sánh mẫu điển hình
Thuật toán này kiểm tra tất cả các vị trí trong văn bản từ 1 đến n - m + 1 Sau mỗi lần kiểm tra, mẫu sẽ được dịch sang bên phải một ký tự cho đến khi hoàn thành việc kiểm tra toàn bộ văn bản.
Output(i); { Thông báotìmthấymẫu tại vị i trí của văn bản } End;
- Vídụ: Cho chuỗibanđầu T = ‘ccadacadada’ chuỗimẫu P = ‘dada’ Tiến hành sokhớp:
Đánh giá thuật toán tìm kiếm chuỗi cho thấy trường hợp xấu nhất là không tìm thấy chuỗi T Trong trường hợp này, với n-m+1 vị trí tìm kiếm, ta phải so sánh m ký tự của chuỗi P với các ký tự tương ứng của chuỗi T Số lần so sánh tối đa là O(m*n), vì thường m rất nhỏ so với n, nên có thể coi độ phức tạp của thuật toán này là O(m*n) Một trong những thuật toán hiệu quả hơn là thuật toán Knuth-Morris-Pratt.
Thuật toán KMP, được phát minh vào năm 1977 bởi hai giáo sư Donal Knuth và Vaughan Ronald Pratt tại ĐH Stanford, Mỹ, đã trở thành một công cụ quan trọng trong lĩnh vực khoa học máy tính Chữ "M" trong tên gọi KMP đại diện cho giáo sư J.H Morris, một nhân vật nổi bật trong ngành này.
Thuật toán Knuth-Morris-Pratt (KMP) là một cải tiến của thuật toán Brute Force, nhằm tối ưu hóa quá trình tìm kiếm chuỗi bằng cách tận dụng thông tin từ các lần so sánh trước Trong khi thuật toán Brute Force dịch mẫu sang phải mỗi khi gặp sự không trùng khớp, dẫn đến việc nhiều ký tự đã được so sánh vẫn bị bỏ qua, KMP ghi nhớ các ký tự đã khớp để tránh so sánh lại chúng trong các lần thử tiếp theo.
Để thực hiện việc dịch cửa sổ sao cho phù hợp và xử lý sự không khớp, ta cần xét baogồm các ký tự T[i…i+m 1] Khi sự khác biệt đầu tiên xảy ra giữa ký tự P[j] và T[i+j 1], ta cần xây dựng mảng next[j] Vị trí so sánh mới sẽ là vị trí đầu tiên của chuỗi mẫu trên văn bản hiện tại cộng với giá trị của next[j], giúp dịch chuyển mẫu một cách hiệu quả.
Cách xây dựng mảng next[j] như sau: Đặt next[0]=0, và với mỗi bước (j từ 1 đến m), next[j] được xác định là độ dài của chuỗi con dài nhất thỏa mãn tính chất vừa là tiền tố của chuỗi P[0 j] vừa là hậu tố của chuỗi P[1 j].
Next[0]:=0; i:=1; j:=0; while i0 then if {xác định vị trí sokhớp mới} j:=Next[j-1]
Mảng next có thể được tính toán trước với chi phí thời gian là O(m) Thuật toán KMP có thời gian thực hiện là O(m+n), với tối đa 2n-1 lần so sánh ký tự trong quá trình tìm kiếm.
Procedure KMPMatch(T,P) i:=0; j:=0; while i0 else i:=i+1; j:=j+1; j:=Next[j-1] i:=i+1 return -1 {Không tìmthấy mẫu}
- Vídụ: Cho chuỗibanđầu: abcabaabxabaaba cóđộ dàin
Chuỗi mẫu: abaaba có độdài m=6
P a b a a b a Next[j] 0 0 1 1 2 3 Bắt đầu sánh: so i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
So sánhtừng cặp ký tự từbên trái sang, đến cặp kí tự T[2] và P[2] (i = 2, và j
Xácđịnh vị trí so sánhmới (j=next[j 1]=0).- Như vậy tabắt đầu sosánh lại từ vị tríđầuchuỗimẫu ký với tự i thứ (i=2)lại khôngkhớp.
Xácđịnh vị do trí khớp mới, dịch mẫusang vịtríi=3 trênchuỗi T i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Tiếp tục so sánh đến ký tự T[8]=’x’ và P[5]=’a’ gặp sự không trùng khớp, nên talạidịch mẫu để xácđịnh vị trí sokhớp mới tại và i=8 j=0. i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Thuật toán Boyer-Moore là một phương pháp tìm kiếm chuỗi hiệu quả, hoạt động bằng cách kiểm tra các ký tự của mẫu từ phải sang trái Khi phát hiện sự khác biệt đầu tiên, thuật toán sẽ tiến hành dịch cửa sổ tìm kiếm, giúp tối ưu hóa quá trình tìm kiếm so với các thuật toán khác như Knuth-Morris-Pratt (KMP).
Cách thứ nhất tương tự như thuật toán KMP, trong đó chúng ta dịch để giữ lại các phần đã so sánh từ lần trước Mỗi lần so sánh, ký tự thứ j trên mẫu P[j] sẽ được so sánh với ký tự thứ i trên văn bản T[i] Khi phát hiện sự khác biệt, ta có đoạn P[j+1…m]=T[i+j…i+m-1]=u và a=P[j], T[i+j+1]=b, với a và b không bằng nhau.
Khi đó thuật toán sẽ dịch cửa sổ sao cho đoạn u=T[j+i…i+m-1] giống với một đoạnmớitrênmẫu(trong các phép dịch tachọn phép dịchnhỏnhất)
Để đảm bảo sự xuất hiện lại của u trong P, nếu không có đoạn nguyên vẹn của u, chúng ta sẽ chọn phần đuôi dài nhất của u để xuất hiện ở đầu mẫu.
Dịch để mộtphầnđuôicủa u xuất hiệnlại trên P u b ij u a u c u b u a u b u a u c u
Cách thứ Coi ký 2: tự đầutiên không khớp trên văn bản là b=T[j+i-1] ta sẽ dịch sao cho có một ký tựgiốngb trên xâumẫu khớpvào vịtríđó (nếu có nhiều vị
P tríxuất hiệnb trên xâumẫu tachọn vị tríphải nhất)
Để đảm bảo sự khớp đúng giữa ký tự và văn bản, nếu không có ký tự nào xuất hiện trên mẫu, cần dịch cửa sổ sao cho ký tự trái nhất của cửa sổ vào đúng vị trí sau ký tự T[j+i-1]=b.
Để xác định vị trí mới của ký tự khi không xuất hiện trong chuỗi mẫu, chúng ta sử dụng mảng skip Cụ thể, skip[c] sẽ được gán giá trị m nếu ký tự c không phải là ký tự của chuỗi mẫu Ngược lại, nếu c là ký tự thứ j trong chuỗi mẫu, thì skip[c] sẽ được gán giá trị m-j.
Nếu trong mẫu có hai ký tự giống nhau trở lên thì ta lấy giá trị skip của ký tựbến trái nhất.
Xây dựng một hàm ord(kytu) để trả về số thứ tự của ký tự kytu trong ký bộ tự.
Procedure Initskipt(P:string; m:integer; skip: array of integer);
Begin For i:=0 to len(alphabet) skip[i]:=m
For j:=1 to m do không chứa b b u a u b không chứa b b u a u
If skip(ord(P[j]))=mthen skip(ord(P[j])=m-j End if
Procedure Boyermoore(P:string; m:integer; T:string; n:integer);
Nếu j Hình biểu diễn đường đi
Kho -> Hình biểu diễn kho chứa dữ liệu
* Xác định thực thể, mối quan và hệ thuộctính
Khoa Khoa => (K_ID, tên khoa, ngườicậpnhật, )
Giớithiệu Gioi_Thieu => (GT_ID, LGT_ID,Giớithiệu, )
Loạigiới thiệu => Loai_gioi_thieu (LGT_ID,Loại giới thiệu, )
NGƯỜI DÙNG NGƯỜI QUẢN TRỊ
Kết quả thông tin tìm kiếm
Yêu cầu thông tin tìm kiếm
Yêu cầu thông tin tài khoản
Kết quả thông tin tài khoản
Hoạtđộng => Hoat_dong (HD_ID, LHD_ID,Tênhoạt động,Tóm tắthoạt động,Nộidunghoạt động, )
Loạihoạt động=> Loai_hoat_dong (LHD_ID,Loại hoạt động, )
Liên hệ=> Lien_he (LH_ID, Liênhệ, )
Người dùng Nguoi_dung => (Họtên,Địa chỉ, Điệnthoại,fax, email, Tài khoản, )
Sách =>Sach(Mãsách,LS_ID,Tên sách,TG_ID, NXB_ID,Nămxuấtbản,
Loại sách => Loai_sach(LS_ID, K_ID,Tênloại sách,…)
Tác giả=>Tac_gia (TG_ID,Tên tác giả, …)
Nhà xuất bản Nha_xuat_ban(NXB_ID, => Tên nhàxuất bản,…)
4.2.6 Chuyển đổi mô hình E – R sang mô hình quanhệ
=> Loai_gioi_thieu(LGT_ID, Loại giới thiệu, ) (3)
=> Nguoi_dung (Họtên,Địa chỉ, Điện thoại,fax) (5)
=> Hoat_dong (HD_ID, LHD_ID, Tênhoạt động,Tóm tắt hoạt động,Nội dung hoạt động, )(6)
=> Loai_hoat_dong (LHD_ID,Loại hoạt động, ) (7)
=> Sach (Mãsách,LS_ID,Tên sách,TG_ID, NXB_ID, Nămxuất bản, Sốlượng, ) (8)
=> Loai_sach (LS_ID, K_ID, Tênloại sách,…) (9)
=> Tac_gia(TG_ID,Tên tác giả, …) (10)
=> Nha_xuat_ban(NXB_ID, Tên nhà xuất bản,…) (11)
Biểuđồ dữ liệucủa mô hình
Mô tả các trang chính của website
Trang chủ được kíchhoạt từ trang default.aspx Trang này hiển thị các chức năng chính củawebsite.
Trang giới thiệu được thiết kế và kích hoạt từ Gioithieu.aspx, cung cấp thông tin tổng quan về thư viện, đội ngũ lãnh đạo và cơ sở vật chất.
Trang Liên hệ được thiết kế và kích hoạt từ trang Lienhe.aspx Trang này nhằmhiểnthịthông tin đểngười dùng cóthểliên hệ vớithưviện.
Trang Tracuu.aspx cung cấp chức năng tra cứu sách, cho phép người dùng tìm kiếm theo tên sách, loại sách và tác giả Người dùng cũng có thể tìm kiếm thông tin trên toàn trang bằng cách nhập từ khóa cần tìm.
Trang Hoạt động, được thiết kế và kích hoạt bởi trang hoatdong.aspx, cho phép người dùng theo dõi tin tức và các hoạt động thường xuyên của thư viện.
Trang Tài nguyên số là một nguồn tài liệu quan trọng cho sinh viên và người dùng Để tải xuống tài liệu số, người dùng cần đăng ký tài khoản thành viên qua mục Đăng ký tài khoản Sau khi đăng nhập, họ có thể truy cập và tải về các tài liệu cần thiết Trang cũng cho phép người dùng chọn lĩnh vực sách theo chuyên ngành từ menu chính trên trang chủ.
Trong phần mềm xây dựng trang Tài nguyên số này thì giao diện chính của trangđượckíchhoạt bởi module Tainguyenso.aspx.
Các thuật toán đối sánh mẫu áp dụng cho Tra cứu sách
4.4.1 Thuật toán Brute Force và Knuth Morris Pratt
Hiện tại trong thực nghiệm của đề tài thì hai thuậttoán này áp dụng phương thức so sánhmẫu Khi tìmthấy mẫulầnđầutiên là cho hiển thịkếtquả ngay
Thuật toán Boyer-Moore được sử dụng để tìm kiếm thông tin sách trong trường TEN_SACH của bảng SACH trong cơ sở dữ liệu QL_SACH.
- Nhập mẫu cầntìmkiếmvào text ô box
+ Lấy danh ra sách các tên sách có chứa trong bảng SACH và lưu vào Dataset
+ Duyệt danh sách Tên_sách chứa trong Dataset từ bản ghỉ đầu tiên cho đến bản ghi cuối cùng trong Dataset
Tiến hành so sánh mẫu tìm kiếm với bản ghi đầu tiên trong Dataset Nếu tìm thấy kết quả, hãy đưa vào Dataset và chuyển sang tìm kiếm mẫu trên bản ghi tiếp theo Nếu không tìm thấy, tiếp tục tìm kiếm mẫu ở bản ghi kế tiếp.
+ Thuật toán tiếp tục lặp lại cho đến hết danh sách Tên_sách chứa trong Dataset
- Hiển thị kết quả tìmkiếmtrên trang web thông qua GridView.
Thuật toán Boyer-Moore được sử dụng để tìm kiếm thông tin sách trong trường TEN_SACH của bảng SACH trong cơ sở dữ liệu QL_SACH.
- Nhập mẫu cầntìmkiếmvào text ô box
+ Lấy danh ra sách các tên sách có chứa trong bảng SACH và lưu vào Dataset
+ Duyệt danh sách Tên_sách chứa trong Dataset từ bản ghỉ đầu tiên cho đến bản ghi cuối cùng trong Dataset
Tiến hành so sánh mẫu tìm kiếm với bản ghi đầu tiên trong Dataset Nếu có kết quả, lưu vào Dataset và tiếp tục kiểm tra mẫu cho đến khi hết chuỗi Nếu không tìm thấy, chuyển sang tìm kiếm mẫu trong bản ghi tiếp theo.
+ Thuật toán tiếp tục lặp lại cho đến hết danh sách Tên_sách chứa trong Dataset
- Hiển thị kết quả tìmkiếmtrên trang web thông qua GridView.
4.4.3 Lựa chọn thuật toán áp dụng Tra cứu sách cho website
Thuật toán Boyer-Moore nổi bật hơn trong ba thuật toán nhờ vào ưu điểm lý thuyết của nó Khi áp dụng cho các chuỗi có số lượng chữ cái lớn và ít lặp lại, thuật toán này cho hiệu quả tìm kiếm tốt Do đó, Boyer-Moore rất phù hợp để giải quyết bài toán tra cứu sách trên website.
Mặc dù vậy, trong khi thực nghiệm 3 thuật toán trên thì rất khó xác định thuậttoán nào nhanhhơn vì do chính: hai lý
- Cơ sở dữ liệu không đủ lớn
- Máy tính dùng để thực nghiệm không ổn định
Máy tìm kiếm trên website
4.5.1 Giới thiệu Đểhiểu sâu hơn về mô hình của máy tìmkiếm tôiđã tiến hành xây dựngmột máy tìm kiếm gắn với mục Tìm kiếm trong website, mục Tìm kiếm này thực hiện được công các việc như sau:
- Tải về các trang HTML thông qua địa chỉweb HTTP
-Phântích mã HTML tìm và cácliênkết đến cáctrang khác
-Phântích dung nội củacác trang (tách các từ) để tạo danh mục từ Catalog
- Hiển thịkếtquả trả vềtheo thứ tự.
4.5.2 Xây dựng cấu trúc dữ liệu
Lớp Catalog lưu trữ các từ đã được phân tích từ các trang, với mỗi từ liên kết đến các tệp chứa nó Lớp này có một thuộc tính Index và hai phương thức: phương thức Add(word, file, vitri) để thêm từ vào Catalog, và phương thức Search(word) để tìm kiếm từ trong Catalog.
Lớp Word quản lý thông tin về các từ (words) Thuộc tính Text biểu diễn chính từ đó.Thuộctính Infile: tập hợp các file cóchứa từ đó
Gồm cácthuộctính URL:Địachỉ URL của trang
Title:Phầntiêu đề (phần văn bản nằm trong thẻtitlecủatranghtml)
Description: môtả tệp;date:thờigian tạo tệp;size: kíchthước tệp
Thư mục gốc của ứng dụng
4.5.3 Đặc tả chức năng của mục Tìm kiếm
4.5.3.1 Mô tả cơ chế hoạt động
Nhập từ khóa tìm Tra cứu hạng trang Ranking
Chuyển từ và URL của trang chứa từ vào Catalog
Hình 1.7: Cơ chế hoạt động của mụcTìmkiếm
Mã nguồn chương trình nằm trong các tệp Search.cs, Search_Crawler.aspx, Search_Engine.aspx
Trang này là trangchứađịnh nghĩacáchlớp:Catalog,Word, File.
Trang này làm nhiệm vụ tải về các trang (xuất phát từ một trang ban đầu) trong thư mục xuất phát và phân tích dung này nội sau
Trang Search_Engine.aspx cho phép người dùng nhập từ khóa hoặc cụm từ khóa để tìm kiếm trong danh mục Catalog, và kết quả trả về là các trang có chứa từ khóa đó.
Tập các từ tách được từ trang
Tập các liên kết URL
Phân tích nội dung của trang
4.6 Cài và đặt hướng dẫn sử dụng
- Yêucầu cấu hình phần cứng:
+ Máy tính chip Pentium III 600 MHz trởlên (Cấuhình đề nghị: Chip 1 GHz hoặccaohơn.)
+ Tối thiểu 192 MB RAM(Cấuhình đề nghị:512 MB RAM.) + Ổ cứngcòntrống tối thiểu 525 MB
+ Hệ điều hành tối thiểu: Windows 2000 Service Pack 4; Windows Server 2003 Service Pack 1; Windows XP ServicePack 2
+ Microsoft SQL Server + Microsoft Net Framework 2.0 + Các trìnhduyệt: Google Chrome, IE, FireFox,…
4.6.2.1 Giao diện chính Đây là giaodiện chính của Trang chủwebsite thư viện hiểnthịđầy đủcác chức năngchính như:Giớithiệu, tracứusách,hoạtđộng, nguyên tài số,liên và hệ tìm kiếm Từ đây ngườidùng có thể chuyển đến các trang chuyên mụckhác. Người dùng muốn truy cập xem các danh mục sách chỉ việc chọn các mục sách phân đã theo nhóm ở phần thực đơn bên trái Muốn đọc tin thì chọn mục Thông tin để xem thông tin về thưc viện, chọn mục Tin tức để xem tin tức khác ngoài thư viện, chọn mục Sách mới để biết Thư viện vừa có những sách nào mới nhậpvề …
4.6.2.2 Các chức năng chính a Giới thiệu
Trong chức năng Giới thiệu, người dùng có thể chọn các mục từ thực đơn để tìm hiểu thông tin chung về Thư viện, ban lãnh đạo, đội ngũ cán bộ và cơ sở vật chất Khi lựa chọn một mục, nội dung sẽ được hiển thị trên Website Bên cạnh đó, chức năng Tracứu cho phép người dùng tìm kiếm theo các chủ đề như loại sách, tên sách, tác giả, hoặc theo các khóa từ cần tìm trên toàn bộ trang web.
Người dùng có thể dễ dàng tra cứu thông tin từ các website của thư viện liên kết với trường học hoặc các thư viện lớn tại Việt Nam thông qua mục tìm kiếm trên trang chủ.
Website của Thư viện Trường cung cấp thông tin hàng ngày về các hoạt động và sự kiện liên quan đến lĩnh vực Thư viện Người dùng chỉ cần chọn mục Hoạt động để theo dõi các thông tin cập nhật thường xuyên của Thư viện Bên cạnh đó, tài nguyên số cũng được cung cấp để hỗ trợ người dùng trong việc tiếp cận thông tin.
Mục nguyên tài số cung cấp tài liệu số liên quan đến lĩnh vực sinh mà sinh viên đang học tập và nghiên cứu Người dùng chỉ cần đăng ký tài khoản trên website để có thể xem và tải về các tệp dữ liệu cần thiết.
Mục tìm kiếm này hỗ trợ sinh viên tìm kiếm thông tin về các hoạt động và tin tức liên quan trên các website thư viện kết nối với trường học và một số thư viện khác tại Việt Nam.
Mục Liên hệ cung cấp thông tin cần thiết để sinh viên có thể liên lạc trực tiếp với Thư viện trường Để sử dụng tính năng này, người dùng chỉ cần chọn mục Liên hệ trên menu.
KẾT LUẬN VÀ KIẾN NGHỊ
Luận văn này nhằm tìm hiểu về máy tìm kiếm, các thuật toán đối sánh mẫu và tối ưu hóa máy tìm kiếm, tập trung vào lý thuyết và xây dựng website ứng dụng cho Trường ĐHSPKT Hưng Yên Nghiên cứu này giúp các nhà phát triển web hiểu rõ hơn về cơ chế hoạt động của máy tìm kiếm, từ đó nâng cao xếp hạng website của họ trong kết quả tìm kiếm.
Bài viết trình bày kiến trúc và nguyên tắc hoạt động của các hệ thống tìm kiếm thông tin trên mạng, bao gồm các kỹ thuật xây dựng các mô đun trong công cụ tìm kiếm như mô đun tìm duyệt Crawler, mô đun đánh chỉ mục Indexer và mô đun phân hạng trang Ranking Qua đó, bài viết cũng khám phá mô hình Search Engine điển hình là Google.
Bài viết này tập trung vào việc phân tích và đánh giá các thuật toán đối sánh mẫu điển hình của Google, dựa trên việc tìm hiểu về hệ thống tìm kiếm và cách thức tìm kiếm trên mạng.
Xây dựng website cho hệ thống thông tin thư viện tại trường Đại học Sư phạm Kỹ Thuật Hưng Yên sử dụng ngôn ngữ C# và công nghệ ASP.NET Website này phục vụ cho việc tra cứu sách với ba thuật toán đối sánh mẫu, đồng thời tìm kiếm thông tin từ các website thư viện khác như một công cụ tìm kiếm Chức năng dò tìm các tệp HTML và phân tích nội dung thành các từ khóa để xây dựng danh mục từ Catalog Người dùng có thể nhập từ hoặc cụm từ cần tìm, và kết quả tìm kiếm sẽ được hiển thị theo thứ tự phân hạng trang.
Website đã hoàn thiện và sẵn sàng hoạt động thực tế, với các chức năng chính đáp ứng yêu cầu của thư viện Trường ĐHSPKT Hưng Yên Tuy nhiên, cần một thời gian để nhận được đánh giá và góp ý từ trường trước khi website chính thức đi vào hoạt động.
Cài và đặt hướng dẫn sử dụng
1 Software Reliability Early Prediction in Architectural Design Phase: Overview andLimitations, (March 10 2011) (th http://www.SciRP.org/journal/jsea)
2 Michael Zimmer (2010), Web Seach Studies: Multidiscriplinary Perspectives on Web Search Engine
3 Robert Sedgewick (1999), Cẩm nang thuật toán, Nhà xuất bản Khoa học và kỹ thuật.
4 Sergey Brin and Lawrence Page (2000), The Anatomy of a Large Scale- Hypertextual Web Seach Engine
5 Graham Stephen A (2000), String Searching Algorithms.
6 Arvind Arasu Junghoo Cho Hector Garcia-Molina Andreas Peapcke SriramRaghavan, Searching the Web, Stanford University.