Một sự thật mà tôi luôn cảm thấy buồn cười là Google trên thực tế được điều hành bởi tin sinh học ('kay, tôi thấy điều đó thật buồn cười vì tôi là một ... đồ vật sinh học). Hãy để tôi giải thích.
Tin sinh học từ rất sớm đã gặp khó khăn trong việc tìm kiếm các văn bản nhỏ trong các chuỗi khổng lồ rất nhanh. Đối với chúng tôi, “chuỗi khổng lồ” tất nhiên là DNA. Thường không phải là một DNA đơn lẻ mà là một cơ sở dữ liệu của một số DNA từ các loài / cá thể khác nhau. Các văn bản nhỏ là protein hoặc bản sao di truyền của chúng, một gen. Hầu hết công việc đầu tiên của các nhà sinh học tính toán bị hạn chế để tìm ra sự tương đồng giữa các gen. Điều này được thực hiện để thiết lập chức năng của các gen mới tìm thấy bằng cách ghi nhận các điểm tương đồng với các gen đã được biết đến.
Giờ đây, những chuỗi DNA này thực sự rất lớn và việc tìm kiếm (mất mát!) Phải được thực hiện cực kỳ hiệu quả. Do đó, hầu hết lý thuyết hiện đại về tra cứu chuỗi đã được phát triển trong bối cảnh sinh học tính toán.
Tuy nhiên, cách đây khá lâu, tính năng tìm kiếm văn bản thông thường đã cạn kiệt. Một cách tiếp cận mới là cần thiết cho phép tìm kiếm các chuỗi lớn trong thời gian tuyến tính, nghĩa là, mà không cần xem xét từng ký tự. Người ta phát hiện ra rằng điều này có thể được giải quyết bằng cách xử lý trước chuỗi lớn và xây dựng cấu trúc dữ liệu chỉ mục đặc biệt trên đó. Nhiều cấu trúc dữ liệu khác nhau đã được đề xuất. Mỗi cái đều có điểm mạnh và điểm yếu nhưng có một điểm đặc biệt đáng chú ý vì nó cho phép tra cứu trong thời gian liên tục. Giờ đây, theo thứ tự quy mô mà Google vận hành, điều này không còn đúng nữa vì cân bằng tải trên các máy chủ, xử lý trước và một số nội dung phức tạp khác phải được tính đến.
Nhưng về bản chất, cái gọi là chỉ số q-gram cho phép tra cứu trong thời gian không đổi. Điểm bất lợi duy nhất: Cấu trúc dữ liệu quá lớn. Về cơ bản, để cho phép tra cứu các chuỗi có tối đa q ký tự (do đó có tên), nó yêu cầu một bảng có một trường cho mỗi kết hợp có thể có của q chữ cái (nghĩa là q S , trong đó S là kích thước của bảng chữ cái , giả sử 36 (= 26 + 10)). Ngoài ra, phải có một trường cho mỗi vị trí chữ cái trong chuỗi đã được lập chỉ mục (hoặc trong trường hợp của google, cho mỗi trang web).
Để giảm thiểu kích thước tuyệt đối, Google có thể sẽ sử dụng nhiều chỉ số (trên thực tế, họ có , để cung cấp các dịch vụ như sửa lỗi chính tả). Những cái trên cùng sẽ không hoạt động ở cấp độ ký tự mà ở cấp độ từ. Điều này làm giảm q nhưng nó làm cho S lớn hơn vô hạn, vì vậy họ sẽ phải sử dụng bảng băm và va chạm để đối phó với vô số các từ khác nhau.
Ở cấp độ tiếp theo, các từ được băm này sẽ trỏ đến các cấu trúc dữ liệu chỉ mục khác, đến lượt nó, các ký tự băm sẽ trỏ đến các trang web.
Tóm lại, các cấu trúc dữ liệu chỉ mục q -gram này được cho là phần trung tâm nhất trong thuật toán tìm kiếm của Google. Thật không may, không có tài liệu phi kỹ thuật tốt nào giải thích cách hoạt động của chỉ số q -gram. Ấn phẩm duy nhất mà tôi biết có mô tả về cách hoạt động của một chỉ mục như vậy ... than ôi, luận án cử nhân của tôi .