Khi nói tới Search Engine,
ta thường nghĩ ngay đến các dịch vụ nổi tiếng như Google Search, Yahoo!
Search hay MSN Search, v.v…Tuy nhiên, bộ phận tìm kiếm trong một
website cụ thể cũng được coi là Search Engine. Internet chứa hầu như tất cả những thông tin liên quan tới mọi lĩnh vực, mọi ngõ ngách trong cuộc sống. Nhưng nó rất rộng, rộng đến mức gần như không ai có thể kiểm soát được. Diện mạo của Internet lại thay đổi quá nhanh chóng và mạnh mẽ. Hạt nhân của Internet là Word Wide Web, với số lượng lên tới hàng chục tỉ trang, được lưu trữ trong hàng triệu máy chủ đặt khắp nơi trên toàn thế giới. Có thể ví Internet như một biển dữ liệu khổng lồ, với muôn vàn những viên ngọc quí nằm giữa các hạt sạn. Trong đời sống hàng ngày, nhu cầu tìm kiếm thông tin đóng vai trò vô cùng to lớn, và một trong những vấn đề bức thiết nhất của công nghệ hiện nay là làm sao "đãi cát tìm vàng", khai thác nguồn tài nguyên này một cách hợp lí, đem lại lợi ích tốt nhất cho con người. Tìm kiếm thông tin trên mạng Internet quả thật là một thách thức lớn lao. Nó không giống như việc bới các hạt đỗ đen nằm lẫn lộn trong thùng gạo, bởi dữ liệu trên mạng Internet do con người đưa vào, chúng cũng có cấu trúc và tổ chức xác định (mặc dù thiếu tính nhất quán), trong khi đó thì các hạt đỗ đen lại nằm rải rác và lộn xộn, không có một vị trí hay qui luật nào. Tuy nhiên, bài toán tìm kiếm khó hơn bài toán nhặt đỗ đen rất nhiều. Muốn tìm tất cả các hạt đỗ đen, bạn đơn giản chỉ cần thiết kế một cái sàng hình cầu đủ lớn để có thể đổ cả thùng gạo vào đó, với những chiếc lỗ có kích thước phù hợp sao cho hạt gạo chui lọt còn hạt đỗ đen thì không, và quay đủ số vòng để tất cả các hạt gạo đều có cơ hội bay ra ngoài. Việc tìm kiếm thông tin trên Internet lại hoàn toàn khác. Có tới hàng chục tỉ trang Web tràn ngập trên mạng Internet (gấp nhiều lần số hạt gạo trong thùng), và vấn đề là làm sao đưa ra những gì ta muốn thu thập sao cho đồng thời thỏa mãn hai tiêu chí: Chính xác và nhanh chóng. Hơn thế nữa, người dùng cũng không đủ kiên nhẫn để ngồi duyệt qua tất cả các trang web chứa thông tin cần tìm (anh ta cũng không nhất thiết phải đếm từng hạt đỗ đen, tuy nhiên nếu xét trên tiêu chí dinh dưỡng thì đa phần những hạt đỗ đen đều giống nhau, do đó hạt nào cho vào nồi trước cũng không quan trọng). Trên thực tế, người dùng hiếm khi vào quá mười trang web kết quả, và vì thế, một yêu cầu khó khăn nữa cần giải quyết, đó là: những gì phù hợp nhất phải được đặt lên hàng đầu. Trước đây, người ta thường chia dữ liệu cần lưu trữ làm nhiều mục, đến lượt các mục con này lại được chia nhỏ hơn. Người dùng tìm kiếm thông tin thông qua việc duyệt qua liên kết giữa các mục. Tuy nhiên, những chủ đề được nêu trong Internet đã rộng lớn đến nỗi sự phân chia này trở nên cực kì cồng kềnh và bất tiện. Ngày nay, hầu hết mọi người đều sử dụng Search Engine để tìm kiếm thông tin trên mạng Internet. Đối với mỗi Search Engine (Google, Yahoo, MSN, v.v…), người dùng truy vấn tìm kiếm (hay nói đơn giản hơn là nhập vào một số từ khóa liên quan đến chủ đề cần tìm), và nhận được một danh sách các trang kết quả (thông thường là những trang web chứa các từ khóa cần tìm kiếm), được sắp xếp theo một tiêu chí nào đó. Những tiêu chí này đều nhằm mục đích "đưa ra kết quả phù hợp nhất với yêu cầu tìm kiếm". Trong bài này ta sẽ nghiên cứu về các Search Engine. Bài viết là một phần trong loạt bài có tựa đề: "Giới thiệu về hệ thống Google". Mục đích của tôi nhằm: - Nêu lên cấu trúc tổng quan của một Search Engine. - Nghiên cứu chi tiết các thành phần của Search Engine. - Giúp bạn có những kiến thức cơ bản để hiểu được cấu trúc phức tạp của hệ thống Google. - Chuẩn bị nền tảng cho loạt bài viết hướng dẫn cách xây dựng một Search Engine. Ban đầu, tôi chỉ định nêu ra các tư tưởng chủ đạo trong việc xây dựng cũng như nói sơ qua về cấu tạo và nguyên lý hoạt động của Search Engine. Tuy nhiên, trong quá trình nghiên cứu tài liệu, tôi đã thay đổi ý định, vì những lí do sau: - Những kiến thức liên quan tới Search Engine rất rộng và tổng hợp, bao gồm thuật toán, cấu trúc dữ liệu, cơ sở dữ liệu, các hệ thống phân tán, tính toán song song, tổ chức file, data mining,v.v… cũng như những vấn đề có liên quan tới toán học. Do đó, việc tìm hiểu Search Engine sẽ hứa hẹn rất nhiều điều thú vị, nếu chỉ đề cập sơ sài, ta sẽ bỏ qua một chủ đề hấp dẫn. Đây cũng là dịp để chúng ta cùng nhau kiểm tra cũng như cập nhật vốn kiến thức của mình.- Tôi nhận thấy nếu không đề cập chi tiết đến cấu tạo của một Search Engine, sẽ khó khăn khi tiếp cận hệ thống Google, vốn chứa đựng rất nhiều sự phức tạp. - Tự xây dựng một Search Engine là một "thách thức" không nhỏ và rất đáng để xem xét. Tất nhiên sản phẩm của những sinh viên như chúng ta không có ý nghĩa gì khi so sánh với Google Search hay Yahoo! Search, và tất nhiên cũng mang rất ít giá trị về mặt thương mại cũng như thực tiễn (phải nói là không có thì đúng hơn). Nhưng đối với bản thân mỗi người học chúng ta thì giá trị học hỏi và kiến thức là rất to lớn, bởi như tôi đã nói ở trên, những mảng đề tài liên quan đến Search Engine là rất nhiều. Tôi coi bài viết này như nền tảng để bạn có thể hiểu cặn kẽ cấu tạo của Internet Search Engine. Tôi có ý định cùng các bạn thử viết một Search Engine với mục đích học tập sau này. Với tinh thần đó, tôi sẽ trình bày thật chi tiết tới mức có thể. - Việc hiểu cấu trúc của Search Engine cũng giúp ích cho các bạn trong việc lập trình xây dựng các trang Web (mặc dù công việc đối với trang Web đơn giản hơn nhiều). - Trong giáo trình công nghệ thông tin cũng như khoa học máy tính ở các trường đại học Việt Nam hiện nay không có môn học về Information Retrieval. Việc tìm hiểu Search Engine cũng cho ta một số kiến thức về lĩnh vực này. Hơn nữa, đây là cơ hội rất tốt để thực hành các tri thức ta đã thu thập được trong những năm học đại học. Vì những lí do trên, tôi sẽ trình bày bài viết theo tư tưởng như sau: - Phần một sẽ đưa ra cái nhìn chung về Search Engine. Bạn đọc không có đủ thời gian cũng như không muốn đi quá sâu vào chi tiết cũng có thể hiểu cấu trúc tổng quan nhất của một Search Engine. Những thông tin trình bày ở đây là đủ để bạn có thể chuyển sang phần sau của loạt bài viết: "Tìm hiểu về hệ thống Google". - Từ phần hai trở đi, chúng ta sẽ đi sâu vào phân tích các thành phần của một Internet Search Engine. Nội dung những phần này vừa nhằm mục đích nghiên cứu kĩ lưỡng từng bộ phận cấu thành một Search Engine, vừa đưa ra những gợi ý liên quan đến cài đặt, tạo tiền đề cho việc tự viết một Search Engine sau này. Khi nói tới Search Engine, ta thường nghĩ ngay đến các dịch vụ nổi tiếng như Google Search, Yahoo! Search hay MSN Search, v.v…Tuy nhiên, bộ phận Tìm kiếm trong một website cụ thể cũng được coi là Search Engine. Xét về mặt bản chất, tìm kiếm thông tin trên mạng Internet hay trên website nào đó đều là tìm kiếm trong cơ sở dữ liệu có sẵn. Mặc dù vậy, việc thực hiện trên Internet khó hơn rất nhiều bởi miền tìm kiếm là vô cùng lớn. Trong loạt bài viết này, ta sẽ dùng thuật ngữ Search Engine để chỉ công cụ tìm kiếm trên mạng Internet nhằm tránh những hiểu lầm về sau. <<http://www.ticsoft.com>> |
Monday, May 28, 2012
Giới thiệu về Search Engine
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment