Do sự cập nhật được thực thi bởi crawler, việc thiết kế cập nhật cho repository phụ thuộc vào đặc trưng của crawler. Cụ thể là có ít nhất hai cách mà crawler có thể được cấu trúc hóa:
Batch-mode or steady crawler: Batch-mode crawler được chạy định kỳ, có thể là 1 tháng một lần, và được phép crawl trong một khoảng thời gian cho tới khi tập các trang Web mục tiêu được crawl. Với crawler này, repository có được độ tươi xác định là số lượng các ngày trong tháng. Trái lại steady crawler chạy liên tục và cập nhật repository liên tục.
Partial or complete crawler: Batch-mode crawler có thể được cấu hình để thực hiện crawl hoàn toàn mỗi khi nó được chạy hoặc crawl một số Web site chỉ định. Trong trường hợp thứ nhất, các trang Web mới crawl về thay thế các trang Web cũ
trong toàn bộ bộ sưu tập còn trong trường hợp thứ hai thì bộ sưu tập mới được tạo ra bằng cách cập nhật phần thông tin mà crawler thu về được cho phần các trang Web mà nó được chỉ định.
Dựa vào hai nhân tố trên mà repository lựa chọn phương pháp cập nhật ngay (in-place update) hay là cất trang Web mới tải về ra chỗ khác rồi tiến hành cập nhật bởi một thao tác khác (shadowing). Như mô tả trong hình 18 các nút đọc (read nodes)
lưu trữ bố sưu tập đã tồn tại và được sử dụng cho các yêu cầu truy cập ngẫu nhiên và truy cập theo luồng. Các nút cập nhật (update nodes) chứa tập các trang Web tải về trong đợt crawl gần nhất.
Một tích chất hấp dẫn của phương pháp shadow là sự độc lập hoàn toàn giữa quá trình cập nhật và quá trình đọc. Một nút lưu trữ đơn lẻ không phải đồng thời kiểm soát việc thêm trang Web và việc đọc chúng ra. Như vậy tránh được xung đột, dẫn đến cải thiện hiệu năng và thực thi cũng đơn giản hơn. Theo một khía cánh khác, bởi vì có sự trễ giữa thời điểm trang Web được tải về và thời điểm trang Web sẵn sàng cho các truy cập nên shadowing có thể làm giảm độ tươi của bộ sưu tập các trang Web.
Theo kinh nghiệm thì batch-mode crawler tạo được các phiên crawl hoàn chỉnh thích ứng tốt với shadowing repository. Tương tự, steady crawler có thể thích ứng tốt hơn với repository sử dụng phương pháp cập nhật tức thì (in-place update). Hơn nữa, phương pháp tạo bản sao với steady crawler (shadow) có mức độ ảnh hưởng không tốt đến độ tươi cao hơn sử dụng batch-mode crawler.
1.7. XÂY DỰNG CHỈ MỤC TỪ
1.7.1. Giới thiệu
Indexer và collection analysis module trong hình 1 xây dựng nên các chỉ mục đa dạng dựa trên các trang Web thu lượm được. Indexer tạo ra 2 loại chỉ mục cơ bản là
chỉ mục text (text-index) và chỉ mục cấu trúc (structured hay link index). Sử dụng 2 loại indexes này và các trang Web trong repository, collection analysis dựng nên các loại chỉ mục khác. Sau đây sẽ trình bày sơ qua về các loại chỉ mục này, tập trung vào cấu trúc và cách sử dụng chúng.
Link index: Để xây dựng chỉ mục liên kết, phần đã khám phá được của Web
được mô hình hóa thành đồ thị có hướng với các nút là các trang Web và các cung là các liên kết giữa chúng. Chỉ mục dựa trên cấu trúc liên kết phải làm sao thay thế được đồ thị này.
Thông thường, thông tin có cấu trúc phổ biến nhất được sử dụng bởi giải thuật tìm kiếm là “thông tin láng giềng” (neiboughood information). Ví dụ, cho trang p, lấy ra các trang Web được chỉ bởi p (outward links) hay tập các trang có liên kết tới p (incoming links). Danh sách móc nối đại diện cho đồ thị Web ban đầu và đồ thị nghịch của nó có thể cung cấp đường dẫn đến các thông tin láng giềng. Các thuộc tính khác của đồ thị Web có thể dễ dàng lấy từ thông tin cơ bản chứa trong danh sách móc nối. Ví dụ, khái niệm về các trang anh chị em (sibling pages) thường sử dụng làm cơ sở cho việc tìm ra trang Web có “quan hệ” với trang Web cho trước. Thông tin anh chị em này có thể lấy ra từ cặp danh sách móc nối.
Các đồ thị nhỏ với hàng trăm hay thậm chí hàng ngàn nút có thể thay thế hiệu quả bởi bất cứ một kiểu cấu trúc dữ liệu phổ biến nào đó. Tuy nhiên, làm như vậy với đồ thị có hàng tỷ nút và cung sẽ gặp khó khăn lớn.
Text index: Mặc dù kỹ thuật dựa vào liên kết (link-based) được dùng để cải thiện chất lượng và sự thích hợp của kết quả tìm kiếm, tìm dựa trên text (text-based retrieval), chẳng hạn như tìm kiếm một số từ khóa trong trong một trang Web, vẫn là phương pháp chính trong việc xác định một trang Web có thỏa mãn một yêu cầu tìm kiếm hay không. Indexes cung cấp cách thức này có thể được triển khai sử dụng bất cứ phương pháp truy cập nào, thường dùng để tìm kiếm trong tập các tài liệu văn bản. Ví dụ bao gồm mảng tiền tố (suffix array), file đảo (inverted file) hay chỉ mục ngược
(inverted index) và file ký hiệu (signiture file)[25]. Inverted index là cấu trúc được lựa chọn cho Web từ trước tới giờ.
Utility indexes: Số lượng và kiểu loại của utility index tạo bởi collection analysis tùy thuộc vào đặc trưng của bộ máy truy vấn (query engine) và kiểu thông tin sử dụng để xếp hạng bởi mô-đun xếp hạng (ranking module). Ví dụ, một máy truy vấn cho phép người tìm kiếm giới hạn các sites hay vùng (domain) tìm kiếm sẽ có lợi từ chỉ mục site mà ánh xạ mỗi vùng với một danh sách các trang Web thuộc về vùng đó. Một cách đơn giản, sử dụng thông tin láng giềng từ chỉ mục liên kết, một giải thuật lặp có thể dễ dàng tính ra hạng (pagerank) của từng trang Web trong kho dữ liệu. Chỉ mục này được sử dụng tại thời điểm truy vấn nhằm hỗ trợ cho việc xếp hạng kết quả tìm kiếm.
1.7.2. Chỉ mục ngƣợc trong Search engine
Chỉ mục ngược trên toàn bộ bộ sưu tập các trang Web là tập các danh sách đảo (inverted list)[25], mỗi danh sách cho một từ (word) hay thuật ngữ (index term). Danh sách đảo cho thuật ngữ là danh sách (đã được sắp xếp) các “vị trí” (location) mà trong đó thuật ngữ xuất hiện trong bộ sưu tập. Trường hợp đơn giản nhất của khái niệm vị trí ở đây là định danh của trang Web và vị trí xuất hiện của thuật ngữ đó trong trang Web. Ví dụ, thuật ngữ được in đậm (thẻ <B> trong ngôn ngữ HTML), xuất hiện trong dòng tiêu đề, xuất hiện trong phần chữ của một liên kết (anchor-text) sẽ được đánh trọng số khác nhau trong giải thuật xếp hạng. Như vậy, trường payload sẽ được thêm vào trong
location của thuật ngữ. Trường payload chứa trong nó bất cứ thông tin thêm nào cần phải bảo lưu theo sự xuất hiện của thuật ngữ trong tài liệu. Giả sử có thuật ngữ w, location l, cặp (w, l) được gọi là posting của w.
Cần phải nói thêm về danh sách đảo, hầu hết text-indexes cũng bảo lưu thứ mà người ta gọi là lexicon. Một lexicon liệt kê tất cả các thuật ngữ xuất hiện trong chỉ mục cùng với vài con số mức độ (term-level) sẽ được sử dụng bởi giải thuật xếp hạng (ví dụ như tổng số tài liệu mà thuật ngữ xuất hiện trong đó).
Sau đây trình bày một thí dụ đơn giản về chỉ mục ngược khi tiến hành đánh chỉ mục hai tài liệu Doc1 và Doc2:
Term Doc# now 1 is 1 the 1 time 1 for 1 all 1 good 1 man 1 to 1 come 1 to 1 the 1 aid 1 of 1 their 1 country 1 it 2 was 2 a 2 dark 2 and 2 stormy 2 night 2 in 2 the 2 country 2 manor 2 the 2 time 2 was 2 past 2 midnight 2 Bảng 3 Tách term từ tài liệu
Sau đó, chỉ mục được sắp xếp theo thứ tự tăng dần của thuật ngữ theo nguyên tắc sắp xếp của từ điển.
Now is the time for all good man to come to
the aid of their country
It was a dark and stormy night in the country manor.
The time was past midnight
Doc1 Doc2
Term Doc# now 1 is 1 the 1 time 1 for 1 all 1 good 1 man 1 to 1 come 1 to 1 the 1 aid 1 of 1 their 1 country 1 it 2 was 2 a 2 dark 2 and 2 stormy 2 night 2 in 2 the 2 country 2 manor 2 the 2 time 2 was 2 past 2 midnight 2 Term Doc# A 2 Aid 1 All 1 And 2 Come 1 Country 1 Country 2 Dark 2 For 1 Good 1 In 2 Is 1 It 2 Man 1 Manor 2 Midnight 2 Night 2 Now 1 Of 1 Past 2 Stormy 2 The 1 The 1 The 2 The 2 Their 1 Time 1 Time 2 To 1 To 1 Was 2 Was 2 Bảng 4. Sắp xếp lại các term
Cuối cùng, file chỉ mục ngược được chia thành hai file là từ điển (dictionary) và postings:
Bảng 5. Thành lập từ điển và file postings
1.7.3. Khó khăn, thách thức
Về mặt khái niệm, xây dựng chỉ mục ngược kéo theo việc xử lý từng trang Web để tách ra các postings, sắp xếp chúng trước nhất theo các thuật ngữ và tiếp đến là theo
location, tạo thành các danh sách đảo đã sắp xếp và ghi lên đĩa. Đối các với bộ sưu tập nhỏ và cố định (static), giống như môi trường mà các hệ thống IR nghiên cứu, thời gian xây dựng chỉ mục không đáng ngại. Tuy nhiên, đối mặt với bộ sưu tập Web, xây dựng chỉ mục theo sơ đồ đơn giản sẽ trở nên không thể quản lý được và cần có tài nguyên khổng lồ, và thông thường mất hàng ngày đến vài ngày để hoàn thành.
Hơn nữa, do nội dung của Web thay đổi nhanh chóng, việc crawl định kỳ và xây dựng lại chỉ mục là cần thiết để đảm bảo sự tươi của dữ liệu. Xây dựng lại chỉ mục trở nên cần thiết vì các kỹ thuật cập nhật chỉ mục tăng nhanh nhất thực thi một cách chậm chạp khi đối mặt với sự thay đổi đồng loạt được giám sát bởi các lần crawl liên tiếp.
Cuối cùng, định dạng lưu trữ cho chỉ mục ngược phải được thiết kế cẩn thận. Một chỉ mục đã được nén nhỏ cải thiện hiệu năng truy vấn bằng cách cho phép các phần có kích thước lớn của chỉ mục có thể lưu lại trong bộ nhớ (cached in memory). Tuy nhiên, có sự cân bằng giữa hiệu năng đạt được và quá trình giải nén tương ứng tại thời điểm truy vấn. Để đạt được sự cân bằng là một thách thức lớn khi đối mặt với bộ sưu tập Web.
Xây dựng chỉ mục ngược cho Web cần phải có một kiến trúc đánh chỉ mục tỷ lệ và phân tán mức cao. Trong môi trường này, có hai chiến lược cơ bản cho việc phân tán chỉ mục ngược giữa các tập các nút. Trong tổ chức file chỉ mục ảo cục bộ (Local inverted file - IFL), mỗi nút đáp ứng cho một tập con rời rạc của các trang Web trong bộ sưu tập. Một yêu cầu truy vấn sẽ được gửi cho tất cả các nút, mỗi nút sẽ trả về kết quả là danh sách rời rạc các định danh của các trang Web chứa các thuật ngữ cần tìm.
Tổ chức file chỉ mục ngược toàn cục (Global inverted file - IFG) phân tán các thuật ngữ sao cho mỗi máy truy vấn (query server) chỉ lưu trữ danh sách đảo của một tập con các thuật ngữ trong bộ sưu tập. Ví dụ, trong hệ thống có 2 servers: A và B. A lưu trữ danh sách đảo của tất cả các thuật ngữ bắt đầu với các chữ cái từ a-q trong khi B lưu trữ danh sách của các thuật ngữ còn lại. Vì thế yêu cầu tìm kiếm thuật ngữ “process” (bắt đầu bằng chữ cái “p”) chỉ liên quan đến A.
1.8. TÌM KIẾM
Như đã trình bày trong hình 1, bộ máy truy vấn thực hiện việc thu thập các term do người dùng nhập vào thông qua giao diện của Search engine. Các truy vấn sẽ được tiền xử lý để tách ra các term rồi thực hiện tìm kiếm trên chỉ mục. Các kết quả thỏa mãn được xếp hạng và hiển thị cho người dùng. Công việc này thực hiện Online và đòi hỏi thời gian xử lý cho mỗi truy vấn là ngắn. Những công việc được làm trong suốt quá trình là
a. Phân tích truy vấn:
Yêu cầu tìm kiếm (các từ khóa mà người dùng gõ vào) được phân tích trước khi tìm kiếm. Truy vấn có thể là một biểu thức logic của các term, có thể chứa các ký pháp đặc biệt của Search Engine nhằm khoanh vùng tìm kiếm (chẳng hạn như chỉ dẫn url: _URL_ sẽ tìm kiếm Web site có URL được chỉ sẵn). Phân tích truy vấn sử dụng một số giải thuật trong IR (ví dụ như giải thuật stemming) để thu được kết quả chính là danh sách các term. Việc phân tích câu truy vấn người sử dụng là rất quan trọng, bởi vì đó chính là yêu cầu của công việc tìm kiếm, là thước đo của cả công cụ. Với những ngôn ngữ là tiếng Ấn- Âu thì dấu cách chính là ký hiệu để phân biệt các từ khóa với nhau, còn với tiếng Việt, dấu cách không phải là dấu hiệu để phân biệt các từ khóa. Chi tiết về các vấn đề liên quan đến tìm kiếm tiếng Việt sẽ được trình bày ở mục sau
b. Tìm kiếm:
Với danh sách term thu được, bộ máy truy vấn thực hiện tra cứu trên chỉ mục ngược, tương ứng với một term được chọn, ta sẽ có một danh sách các văn bản có chứa term đó. Như vậy ta sẽ thu được một tập hợp các danh sách các văn bản có thể thỏa mãn yêu cầu truy vấn. Tuy nhiên, việc chọn ra một tập con các văn bản thực sự phù hợp với truy vấn trong danh sách các văn bản vừa thu được như thế nào được thì lại phụ thuộc vào cách chọn cách mô hình trong tìm kiếm. Như đã trình bày ở trên
(mục …) người ta có thể có các cách mô hình là boolean, vector… Với mỗi cách mô hình, ta sẽ kiểm tra xem văn bản vừa được chọn ra có phù hợp với truy vấn hay không ? Độ đo giữa sự phù hợp của chúng là thế nào… Từ đó ta tìm được một danh sách thường là rất dài những văn bản phù hợp với câu truy vấn người sử dụng
4 2 1 Xin chào 5 6 9 11 5 3 1 các 6 7 9 10 4 2 1 bạn 5 9 10 11 9 5 1 Xin chào các bạn 6 5 1 Xin chào các 9 5 2 1 Xin chào bạn 9 11
Query: Xin chào các bạn
Query: Xin chào các
Query: Xin chào bạn
Bảng 6. Ví dụ về tìm kiếm AND trong mô hình Boolean
Ví dụ về truy vấn theo mô hình Boolean: Với term thứ nhất, ta có danh sách thứ nhất các document thỏa mãn yêu cầu. Với term thứ 2, ta cũng có một danh sách khác thỏa mãn yêu cầu. Một câu truy vấn chỉ có chứa term 1, sẽ cho ra kết quả là dòng thứ nhất. Truy vấn chỉ có chứa term 2, ta sẽ có dòng thứ 2. Nếu truy vấn là cả 3 term, tìm kiếm theo kiểu AND, ta sẽ có kết quả là dòng thứ 4, chỉ chứa có 3 term. Tương tự với những truy vấn khác
Yêu cầu công việc ở bước này là: Cần phải làm thật nhanh công việc tìm kiếm những văn bản phù hợp với câu truy vấn.
Như vậy, người ta sẽ đối mặt với các vấn đề là:
c. Độ dài Invert là quá lớn :
Nếu có quá nhiều văn bản có chứa một hoặc một số term nào đó mà những term này không phải là stopword để có thể bỏ đi được, lúc đó độ dài danh sách Invert với term đó sẽ rất lớn. Ta cần phải duyệt qua tất cả danh sách Invert này để tìm xem văn bản nào là phù hợp với yêu cầu. Do vậy, việc làm này sẽ mất rất nhiều thời gian. Người ta có thể giảm thời gian bằng cách chia các Invert ra nhiều phần để xử lý song song. Tất nhiên, việc ghép lại các kết quả cũng đòi hỏi những kỹ thuật lập trình nhất định. Khi chia ra thành các phần nhỏ hơn, người ta sẽ đưa chúng vào nhiều máy chủ khác nhau để xử lý. Bởi vì, Invert thường được lưu lên đĩa cứng và được đọc một ít lên Ram. Tốc độ của Chip có thể được cải thiện đáng kể bằng cách thêm Chip, nhưng tốc độ đọc ổ cứng lại bị hạn chế vì ổ cứng thuộc về cơ, điện. Khi đó, trong toàn hệ thống,