Máy tìm kiếm ngày nay là một phần không thể thiếu đối với đối với mọi người dung internet. Họ tham gia mạng internet, gõ vài từ là có thể tìm được thông tin mình cần. Vậy có bao giờ bạn tự hỏi: Máy tìm kiếm gồm những bộ phận chính nào?
Bài viết này sẽ trình bày cho các bạn 3 thành phần chính của máy tìm kiếm:
Bộ thu thập thông tin – Robot
Robot được định nghĩa là một chương trình tự động duyệt qua các văn bản siêu liên kết (chính là các liên kết trong trang web), và làm đệ quy với mọi liên kết mà nó tìm được. Sau đó, nó sẽ lập một bảng các liên kết trang để sau này bộ lập chỉ mục sẽ sử dụng.
Tuy nhiên, không phải liên kết nào cũng được duyệt. Cụ thể là cần phải có những nguyên tắc riêng trong việc tìm kiếm các liên kết, để người chủ trang web có thể quy định liên kết nào cho phép tìm kiếm, liên kết nào không được phép.
Về nguyên tắc hoạt động, có thể mô tả như giống như trò chơi đi tìm kho báu. Cứ mỗi bước, người chơi phải tìm cho ra một mật mã và giải mã nó, dựa vào nội dung mật mã giải được mà tìm đến vị trí tiếp theo. Robot làm việc có hơi khác:
- Thứ nhất, nó có rất nhiều liên kết trên một trang tìm được nên phải làm đi làm lại nhiều lần (giải thuật vét cạn hoặc ngẫu nhiên).
- Thứ nữa là nó không hề di chuyển (như có một số người nghĩ) mà nó chỉ lấy thông tin từ các trang web và phân tích để lấy các liên kết, rồi tiếp tục gửi yêu cầu lấy thông tin
- Cuối cùng, nó phải bỏ qua mọi liên kết mà nó không được phép truy cập.
Robot chỉ làm việc bằng giao thức web thông thường, mọi thứ giống như lúc bạn truy cập trang web. Nhiều người cho rằng các trình duyệt web (cái mà bạn đang dùng để đọc bài này) cũng là một dạng robot, vì bạn chỉ truy cập vào một địa chỉ còn trình duyệt tự động tải về hình ảnh, video,… Cách hiểu này chưa đúng lắm, vì trình duyệt chỉ hoạt động khi bạn trực tiếp truy cập, còn robot lại làm việc này một cách tự động; một số trình duyệt bạn có thể thiết lập những hình ảnh, JS, CSS nào được quyền tải, còn robot thì không hề tải chúng (trừ một số hình ảnh); và quan trong hơn là trình duyệt tải về và thực thi, còn với robot thì không có cái gì được thực thi cả…
Bộ lập chỉ mục – Index
Đây là hệ thống phân tích và xử lý dữ liệu của máy tìm kiếm. Nhiệm vụ của nó là rút trích các câu chữ trong các trang web mà robot thu thập được, sau đó nó sẽ đưa vào kho dữ liệu phục vụ cho việc tìm kiếm sau này.
Chắc hẳn chúng ta đã từng nghe đến việc cỗ máy tìm kiếm Google lưu lại tất cả các trang web trên thế giới vào máy chủ của họ, làm như vậy sẽ khiến cho bộ máy tìm kiếm của họ tìm nhanh và mạnh hơn. Theo đó, bộ lập chỉ mục sẽ mở tất cả các trang web trên thế giới và lưu vào máy chủ, đồng thời đọc toàn bộ nội dung, sau đó tách nội dung ra từng chữ một và đưa vào chỉ mục tìm kiếm…
Nói là dài dòng vậy, chứ thật ra công việc này cũng đơn giản như việc có một người vô công rỗi nghề đọc sách và ghi lại số lần xuất hiện của mỗi chữ trong sách. Đầu tiên, người đó mở sách ra đọc từng chữ, cứ mỗi chữ đọc được anh ta sẽ ghi vào một tờ giấy và đánh số 1 cho lần xuất hiện đầu tiên. Anh ta lại tiếp tục đọc, nếu xuất hiện từ mới thì anh ta lại ghi thêm vào, còn nếu gặp một từ cũ thì anh ta sẽ tăng số lần xuất hiện của chữ đó lên… Cứ tiếp tục công việc buồn chán đó đến khi hết cuốn sách…
Dĩ nhiên là trên thực tế không có ai lại khùng điên đến mức làm như vậy, bởi vì công việc đơn giản và buồn chán này đã có bộ lập chỉ mục thực hiện. Hơn nữa, nó còn làm được nhiều việc kèm theo như:
- Mỗi từ trong trang web có thể nằm trong các thẻ khác nhau (thẻ <b>, <i>, <h2>, <del>,…) và mỗi thẻ có thể có mức độ quan trọng khác nhau. Do đó bộ lập chỉ mục chỉ cần xác định trọng số của mỗi thẻ là xác định được độ quan trọng của một trang web ứng với một từ khóa. Việc xác định này sẽ ảnh hưởng đến việc vị trí trang web trong kết quả tìm kiếm.
- Dựa vào số liên kết đi vào và đi ra của mỗi trang, bộ lập chỉ mục cũng xác định được pagerank của trang.
- Loại bỏ những chữ thừa, không quan trọng đối với việc tìm kiếm (thường gọi là các stopword). Như các chữ “và”, “hoặc”,… hoặc các dấu câu…
- Dự đoán được các từ viết tắt bằng việc xem xét các từ có trong các trang khác nhau
- Cũng cần phải xác định đâu là danh từ riêng, động từ,…
- Đôi khi bộ lập chỉ mục còn phải “hiểu” được các câu đơn giản để phục vụ cho việc tìm kiếm.
- Còn thêm vấn đề sai chính tả, viết thiếu dấu, hoặc các hình thức biến thể của một từ.
- …
Bấy nhiêu việc đó cũng đủ nó phải làm việc cật lực rồi… Đã thế, thỉnh thoảng nó còn phải “đi học” vì người ta muốn nó phải “nói nhiều thứ tiếng” hoặc thông minh hơn. Bởi vì, một cỗ máy tìm kiếm có mạnh hay không phụ thuộc rất nhiều vào bộ lập chỉ mục này.
Bộ tìm kiếm – Search
Trước hết cần phân biệt giữa máy tìm kiếm và bộ tìm kiếm:
- Máy tìm kiếm mà tôi đề cập là cả một hệ thống hoàn chỉnh bao gồm bộ thu thập thông tin, bộ lập chỉ mục và bộ tìm kiếm.
- Bộ tìm kiếm mà tôi đang nói ở mục này là một giao diện tương tác với người dùng, xử lý các yêu cầu tìm kiếm và đưa ra kết quả cho người dùng.
Lấy một ví dụ, trang web google.com có thể xem là một bộ tìm kiếm vì nó cho phép các bạn gõ từ khóa tìm kiếm, và hiển thị kết quả cho các bạn trong một khoảng thời gian rất ngắn. Có thể nói việc bạn sử dụng bộ tìm kiếm giống như việc bạn điều khiển chuột và bàn phím, xem các thay đổi trên màn hình, mà không cần biết CPU, RAM, BIOS,… làm việc như thế nào. Nói chung bộ tìm kiếm là thứ cho bạn dùng, công việc của nó là nhận các từ khóa mà bạn nhập, tìm trong kho dữ liệu xem có trang web nào chứa từ bạn nhập không, và hiển thị kết quả cho bạn.
Về nguyên lý hoạt động, nó thường gồm 6 bước:
- Hiển thị trang web có khung tìm kiếm cho người dùng nhập từ khóa
- Nhận các từ khóa và tách ra thành từng từ hoặc cụm từ
- Tìm trong kho dữ liệu xem có các từ hay cụm từ này không
- Nếu có thì lấy danh sách những trang web nào có chưa các từ này (danh sách có sắp xếp thứ tự ưu tiên)
- Với mỗi trang web, lấy một đoạn có đánh dấu từ khóa được tìm thấy
- Hiển thị các kết quả cùng với một đoạn có chứa từ khóa
Thật ra, tương tự như bộ lập chỉ mục, bộ tìm kiếm cũng cần phải “học” được một số “kỹ năng” như phân biệt từ viết tắt, đồng nghĩa, sai chính tả, viết hoa hoặc thường, các biến thể khác nhau của một từ,… để có thể đưa ra kết quả tốt nhất.
No comments:
Post a Comment