Thứ Sáu, 23 tháng 9, 2011

Tim Hieu Ve Search Engine ( Chuong II )

Số lượt xem: 744
Gửi lúc 15:13' 28/07/2009

Tìm Hiểu Về Search Engine ( Chương II )

Chương 2 tiêp theo chương một "Tổng quan về hệ thống Search Engine" của loạt bài viết về máy tìm kiếm "Tìm hiểu về Search Engine và xây dựng ứng dụng minh hoạ cho Search Engine tiếng Việt".

Ứng dụng của Robot

Robot thường được sử dụng cho những mục đích sau :

Phân tích, thống kê – Statistical Analysis

Robot đầu tiên được dùng để đếm số lượng web server, số tài liệu trung bình của một server, tỉ lệ các dạng file khác nhau, kích thước trung bình của một trang web, độ kết dính, …

Duy trì siêu liên kế - Maintenance

Một trong những khó khăn của việc duy trì một siêu liên kết là nó liên kết với những trang bị hỏng (dead links) khi những trang này bị thay đổi hoặc thậm chí bị xóa. Thật không may vẫn chưa có cơ chế nào cảnh báo các bộ duy trì về sự thay đổi này. Trên thực tế khi các tác giả nhận ra tài liệu của mình chứa những liên kết hỏng, họ sẽ thông báo cho nhau, hoặc thỉnh thoảng độc giả thông báo cho họ bằng email.
Một số robot, chẳng hạn MOMspider có thể trợ giúp tác giả phát hiện các liên kết hỏng cũng như duy trì các cấu trúc siêu liên kết cùng nội dung của một trang web. Chức năng này lặp lại liên tục mỗi khi một tài liệu được cập nhật, nhờ đó mọi vấn đề xảy ra sẽ được giải quyết nhanh chóng.

Ánh xạ địa chỉ web - Mirroring

Mirroring là một kỹ thuật phổ biến trong việc duy trì các kho dữ liệu của FPT. Một ánh xạ (mirror) sẽ sao chép toàn bộ cấu trúc cây thư mục và thường xuyên cập nhật những file bị thay đổi. Điều này cho phép nhiều người cùng truy xuất một nguồn dữ liệu, giảm số liên kết bị thất bại, nhanh hơn và ít chi phí hơn so với truy cập trực tiếp vào site thực sự chứa các dữ liệu này.

Phát hiện tài nguyên – Resource Discovery

Có lẽ ứng dụng thú vị nhất của robot là dùng nó để phát hiện tài nguyên. Con người không thể kiểm soát nổi một khối lượng thông tin khổng lồ trong môi trường mạng. Robot sẽ giúp thu thập tài liệu, tạo và duy trì cơ sở dữ liệu, phát hiện và xoá bỏ các liên kết hỏng nếu có, kết hợp với công cụ tìm kiếm cung cấp thông tin cần thiết cho con người.

Kết hợp các công dụng trên- Combined uses

Một robot có thể đảm nhận nhiều chức năng. Ví dụ RBSE Spider [4] vừa thống kê số lượng tài liệu thu được vừa tạo cơ sở dữ liệu. Tuy nhiê những ứng dụng như thế còn khá ít ỏi.

Robot chỉ mục – Robot Indexing

Trong quá trình thu thập thông tin phục vụ cho bộ lập chỉ mục, ta cần giải quyết những vấn đề sau :
Một là : Trong môi trường mạng, robot lấy thông tin từ các site. Vậy robot sẽ bắt đầu từ site nào ? Điều này hoàn toàn phụ thuộc vào robot. Mỗi robot khác nhau sẽ có những chiến lược khác nhau. Thường thì robot sẽ viếng thăm các site phổ biến hoặc những site có nhiều liên kết dẫn đến nó.
Hai là : Ai sẽ cung cấp địa chỉ của các site này cho robot ?
Có 2 nguồn :

  • Robot nhận các URL ban đầu từ user.
  • Robot phân tích các trang web để lấy các URL mới, đến lượt các URL này trở thành địa chỉ đầu vào cho robot. Quá trình này được lặp lại liên tục.

Ba là : Chọn dữ liệu nào trong tài liệu để lập chỉ mục ?
Quyết định chọn dữ liệu nào trong tài liệu cũng hoàn toàn phụ thuộc vào robot, thường thì những từ được liệt kê như sau được xem là quan trọng :

  • Ở góc cao của tài liệu.
  • Trong các đề mục
  • Được in đậm (inktomi)
  • Trong URL.
  • Trong tiêu đề (quan trọng)
  • Trong phần miêu tả trang web (description) .
  • Trong các thẻ dành cho hình ảnh (ALT graphisc).
  • Trong các thẻ chứa từ khóa.
  • Trong các text liên kết.

Một số robot lập chỉ mục trên tiêu đề, hoặc một số đoạn văn bản đầu tiên hoặc toàn bộ tài liệu (full text). Một số khác lại lập chỉ mục trên các thẻ META (META tags) hoặc các thẻ ẩn, nhờ vậy tác giả của trang web được quyền ấn định từ khoá cho tài liệu của mình. Tuy nhiên chức năng này bị lạm dụng quá nhiều do đó các thẻ META không còn giữ được giá trị ban đầu của chúng nữa.

Các chiến thuật thu thập dữ liệu

Trước khi các trang web được đánh chỉ mục, tất cả các trang web phải được lấy về máy của robot. Để lấy được tất cả các trang web, robot phải có chiến thuật. Từ một số trang web có sẵn, robot lọc ra danh sách các liên kết, rồi từ đó dò tìm các trang khác.
Có 3 chiến thuật tìm kiếm Heuristic sau : tìm kiếm theo chiều sâu, tìm kiếm theo chiều rộng và tìm kiếm ngẫu nhiên.

Chiến thuật tìm kiếm theo chiều sâu

Từ một danh sách chứa các liên kết cần duyệt, thực hiện các bước sau :

  1. (1) Cho danh sách = {trang đầu tiên}
  2. (2) Lấy trang đầu tiên trong danh sách.
    • Nếu có qua (3)
    • Nếu không qua (5)
  3. (3) Trang này đã xét tới chưa ?
    • Nếu rồi, quay lại (2)
    • Nếu chưa, qua (4)
  4. (4) Đánh dấu đã tới rồi. Phân tích và tìm xem liên kết có trong trang đó không?
    (4a) Nếu có, thêm liên kết này vào đầu danh sách. Quay lại (4)
    (4b) Nếu không, quay lại (2).
  5. (5) Kết thúc.

Chiến thuật tìm kiếm theo chiều rộng

Từ một danh sách chứa các liên kết cần duyệt, thực hiện các bước sau :

  1. (1) Cho danh sách = {trang đầu tiên}
  2. (2) Lấy trang đầu tiên trong danh sách.
    • Nếu có qua (3)
    • Nếu không qua (5)
  3. (3) Trang này đã xét tới chưa ?
    • Nếu rồi, quay lại (2)
    • Nếu chưa, qua (4)
  4. (4) Đánh dấu đã tới rồi. Phân tích và tìm xem liên kết có trong trang đó không?
    • (4a) Nếu có, thêm liên kết này vào cuối danh sách. Quay lại (4)
    • (4b) Nếu không, quay lại (2).
  5. (5) Kết thúc.

Chiến thuật tìm kiếm theo ngẫu nhiên

Từ một danh sách chứa các liên kết cần duyệt, thực hiện các bước sau :

  1. (1) Cho danh sách = {trang đầu tiên}
  2. (2) Lấy ngẫu nhiên một trang trong danh sách.
    • Nếu có qua (3)
    • Nếu không qua (5)
  3. (3) Trang này đã xét tới chưa ?
    • Nếu rồi, quay lại (2)
    • Nếu chưa, qua (4)
  4. (4) Đánh dấu đã tới rồi. Phân tích và tìm xem liên kết có trong trang đó không?
    • (4a) Nếu có, thêm liên kết này vào cuối danh sách. Quay lại (4)
    • (4b) Nếu không, quay lại (2).
  5. (5) Kết thúc.

Những vấn đề cần lưu ý của web robot

Chi phí và hiểm hoạ

Việc sử dụng các Robot tốn khá nhiều chi phí, đặc biệt là khi chúng được điều khiển từ xa trên internet. Phần này chúng ta sẽ cùng thảo luận về những hiểm hoạ do robot gây ra.

Quá tải mạng và server – Network resource and server load

Sau một khoảng thời gian dài, thường là một tháng, robot sẽ bắt đầu hoạt động một cách liên tục. Để tăng tốc nhiều robot được phóng ra đồng thời do đó cần có băng thông lớn. Tài nguyên mạng bị khai thác quá mức khi robot yêu cầu một lượng lớn thông tin trong khoảng thời gian quá ngắn (rapid fire). Kết quả là thiếu băng thông cho những ứng dụng khác. Server vừa phải phục vụ yêu cầu của robot vừa cung cấp dịch vụ cho user, do đó yêu cầu của robot tăng lên bao nhiêu thì dịch vụ sẽ giảm xuống bấy nhiêu.

Tác giả của một con robot đã thử nghiệm bằng cách cho thi hành 20 lượt truy cập đồng thời vào server của anh ta. Những lúc robot thu thập thông tin, server bị chậm lại. Trong vòng một tuần robot đã viếng thăm site này với một yêu cầu kinh khủng. Chỉ sau 170 lượt truy xuất liên tục, thử nghiệm thất bại do server bị quá tải.
Rapid fire thực sự là thảm hoạ. Hiệu quả truyền tải thông tin dạng này bằng giao thức web hay HTTP sụt giảm thấy rõ. Những giao thức mới đang được xem xét nhằm cứu vãn tình thế.

Sự cập nhật quá mức- Updating overhead

Người ta cho rằng các cơ sở dữ liệu do web robot tạo ra có thể được cập nhật tự động nhưng cho đến thời điểm này vẫn chưa có cơ chế kiểm soát sự thay đổi trên web một cách hiệu quả. Cập nhật thông tin rất quan trọng nhưng qúa thường xuyên là điều không cần thiết.

Xuất phát từ thực tế đó HTTP đưa ra kỹ thuật 'if – Modified – Since' giúp các user – agent xác định được thời điểm tài liệu thay đổi. Robot phát hiện điều này chỉ khi nó lưu lại các thông tin cũ nhưng sẽ tốn nhiều bộ nhớ & cần dữ liệu phức tạp.

Một trong những đặc tính phổ biến của robot là khả năng tiếp nhận các từ cần tìm trong khi vẫn thu thập dữ liệu. Tuy nhiên một số người cho rằng đặc tính này không đáng hoan nghênh bởi hai lý do :

  • Đầu tiên, các tác vụ tìm kiếm của người sử dụng cuối (end - user) góp phần đẩy server vào chỗ quá tải.
  • Thứ hai, không có cơ sở đảm bảo có mối quan hệ giữa các từ cần tìm, đúng chính tả và tối ưu đối với cơ sở dữ liệu. Ví dụ, nếu bộ tìm kiếm không hỗ trợ các toán tử boolean, một user cần dữ liệu về xe máy muốn có được thông tin đúng thay vì nhập vào cụm từ 'Ford and garage' phải nhập vào từ 'car'. Nhưng người đó không hề ý thức được điều này.

Một khía cạnh nguy hiểm nữa bắt nguồn từ sự định hướng sai lầm của end – user. Một số người sử dụng công cụ của mình rất tốt như dự đoán được lượng tài liệu lớn nhất có thể có, biết chính xác nơi cần tìm dữ liệu, giới hạn thời gian sử dụng robot, trong khi đó một số khác lại lạm dụng khả năng của robot một cách vô tình hoặc cố ý. Vì vậy các tác giả viết robot đề nghị chỉ nên phân phát sản phẩm của mình cho những end-user 'hiểu' được web robot và những khó khăn trong môi trường mạng.

Những tình huống không mong đợi – Bad implementations

Thay vì kiểm tra trên máy cục bộ trước, một số tác giả lần đầu tiên viết robot cho thử ngay trên các server thực sự, điều này làm đau đầu không ít nhà quản trị web (web master).
Truy xuất trùng lặp có thể xảy ra khi robot không lưu lại dấu vết những nơi nó đã đi qua hoặc nó không nhận diện được các URL mặc dù khác nhau về tên nhưng lại cùng dẫn đến một địa chỉ, ví dụ địa chỉ DSN & IP.

Đôi khi, robot lãng phí thời gian và tài nguyên chỉ để thu về những tài liệu mà sau đó phải vứt đi. Ví dụ hệ thống chỉ quan tâm đến file văn bản (text file) nhưng robot lại nhận cả những loại file khác như file hình ảnh, file thực thi, …

Trong môi trường mạng có những vùng gần như vô tận. Ví dụ, cứ mỗi lần phân tích một trang robot nhận về cùng một URL nhưng xa hơn một cấp, '/cgi-bin/pit/', và tiếp tục '/cgi-bin/pit/a/', '/cgi-bin/pit/a/a', …. . Sự lặp lại không có điểm dừng này được gọi là các lỗ đen (black holes)

Tiêu chuẩn loại trừ robot

Trong quá trình xử lý robot không thể tự quyết định tài liệu nào được lập chỉ mục, tài liệu nào không do đó nó lấy tất cả những gì có thể. Thậm chí dù xác định được tài liệu vô ích thì nó cũng đã bỏ ra một chi phí đáng kể cho hoạt động thu thập. Tiêu chuẩn loại trừ robot ra đời. Các chuẩn này chẳng những chỉ ra URL nào cần tránh mà còn cảnh báo robot về các lỗ đen.

File robot.txt

Robot.txt là một file cấu trúc được đặt tại thư mục gốc của server, gồm 2 trường User-agent và Disallow.

  • User-agent : cho biết robot nào sẽ bị kiểm soát.
  • Disallow : cho biết robot có được phép kết nối vào URL này hay không.

Xét các ví dụ sau :

Bảng 1 : Ví dụ về chuẩn loại trừ robot dùng file robot.txt
Ví dụ Ý nghĩa
# / robots.txt file for http://webcrawler.com/ Ký tự # bắt đầu một chú thích
User-agent: webcrawler
Disallow:
Robot có tên là webcrawler có thể đi đến bất cứ trang nào của site
User-agent: lycra
Disallow: /
Robot có tên là lycra bị cấm trên tất cả các trang của site
User-agent: *
Disallow: /tmp
Disallow: /logs
Mọi robot đều không được truy xuất vào 2 thư mục tmp và logs

Thẻ META dành cho robot – Robot META tag

META tag là sự mở rộng của chuẩn loại trừ robot, hỗ trợ cho tác giả của những trang web không có quyền admin.

Bảng 2 : Thông tin về META tag trong chuẩn loại trừ robot
Vị trí Nằm trong phần HEAD của file HTML
Cú pháp  
Tên trường Ý nghĩa
Meta Thẻ báo hiệu bắt đầu
Name Tên robot sẽ bị kiểm soát
Content Cờ định hướng cho robot, các cờ này có thể kết hợp với nhau & được phân cách bằng dấu phẩy.

Sau đây là bảng các giá trị Meta Tags thường được các Webmaster sử dụng :

Bảng 3 : Giá trị các cờ của thuộc tính Content trong META tag
Các cờ của thuộc tính Content Ý nghĩa
[NO]INDEX Robot không nên lập chỉ mục cho trang này.
[NO]FOLLOW Robot không nên lấy các liên kết ở trang này
ALL = INDEX, FOLLOW Robots lập chỉ mục và lấy các liên kết từ trang này.
NONE= NOINDEX, NOFOLLOW Robots không lập chỉ mục và không lấy chỉ số từ trang này.

Nhược điểm của file robot.txt

Người ta cho rằng việc liệt kê các trang hoặc các thư mục trong file robot.txt sẽ là nguyên nhân thu hút sự chú ý từ các 'vị khách không mời'. Thực ra chuẩn loại trừ robots chỉ là dấu hiệu cảnh báo, không là biện pháp cấm robots cho nên việc tuân theo hay không hoàn toàn là vấn đề tự nguyện. Tuy nhiên ta vẫn có cách khắc phục :
Một là :

  • Tạo một thư mục chứa tất cả các file quan trọng.
  • Trường Disallow chỉ liệt kê tên thư mục vừa tạo.
  • Cấu hình server sao cho các trang không chứa đường dẫn đến thư mục này.

Đáng buồn trên thực tế cách này không đạt được kết quả mong đợi do một trong các nguyên nhân sau :

  • Các server có robot không bị cấm có thể dẫn đường các robot bị cấm khác đến những file này.
  • Các file quan trọng có thể nằm trong log file (file được tự do truy xuất)
  • Khi cấu hình lại server, admin có thể 'quên' các thư mục này phải cấm robot!

…………………………………………
Hai là: chứng thực (athorization). Đây là biện pháp hữu hiệu, được sử dụng trong nhiều lĩnh vực, đặc biệt trong những môi trường mà sự an toàn dữ liệu trở nên rất cần thiết.
Tóm tắt :
Có thể nói web robot là con dao 2 lưỡi, sử dụng đúng sẽ giải quyết được nhiều vấn đề, sử dụng sai sẽ để lại những hậu quả khó đoán. Sau đây là tóm tắt cho những vấn đề cần lưu ý của web robot.

  1. Tránh lãng phí tài nguyên
    • Chỉ tải về những tài liệu cần thiết.
    • Nếu hệ thống chỉ quan tâm đến các file text (.html, .htm, .xml, …), web robot nên bỏ qua các liên kết dẫn đến những file thực thi (.exe, …), file ảnh (.gif, .bmp, …).
    • Bỏ qua các trường dữ liệu hệ thống không dùng đến.
    • Đừng lấy về các trang giống nhau nhiều hơn một lần.
  2. Tránh cập nhật lại các site cũ quá thường xuyên bằng cách :
    • Ghi nhớ những địa chỉ web robot đã duyệt qua.
    • Dựa vào trường LastModified, trường head. Nếu các trường này khác với dữ liệu ta đã có thì đó là những thông tin cần ghi nhận.
    • Không nên duyệt hết một site, chỉ cần duyệt đến một độ sâu (deep link) cần thiết.
  3. Tránh làm quá tải server
    • Duy trì một khoảng thời gian đợi giữa các lần truy xuất liên tiếp.
    • Kết nối với server vào những thời điểm thích hợp. Tham khảo ý kiến của admin để biết thông tin này.
    • Kiểm tra web robot trên máy cục bộ, sửa lỗi trươc khi chạy trên server thực sự.
  4. Tuân theo các luật loại trừ robot.

 


Xem tiếp

Bản gốc: Thiết kế website - Tìm Hiểu Về Search Engine ( Chương II )

Không có nhận xét nào:

Đăng nhận xét