Đội ngũ kỹ sư đứng sau một dịch vụ lưu trữ video đã thay thế chỉ mục SQLite FTS5 bằng một cụm OpenSearch, giúp giảm tỷ lệ truy vấn không có kết quả từ 12% xuống còn 1,4% và tăng tỷ lệ chuyển đổi từ tìm kiếm sang nhấp chuột thêm 9%, trong khi vẫn duy trì độ trễ dưới 28 ms.
Tại sao việc chuyển đổi trở nên cấp thiết
Tiện ích mở rộng tìm kiếm toàn văn của SQLite (FTS5) rất hấp dẫn: nó nằm cùng một tệp với phần còn lại của dữ liệu, không tốn chi phí bản quyền và trả về kết quả khớp ngay lập tức đối với các mã thông báo (token) khớp chính xác. Tuy nhiên, nhật ký (logs) của nền tảng cho thấy khoảng 12% lượt tìm kiếm của người dùng không trả về bất kỳ kết quả nào. Các lỗi chính tả như “intersteller” hoặc “avengrs endgame” – kiểu gõ sai mà mọi người thường mắc phải trên bàn phím điện thoại – là nguyên nhân chính.
Một giải pháp tạm thời bằng cách sử dụng trigrams (các đoạn ba ký tự) đã giúp giảm tỷ lệ tìm kiếm trống xuống còn 7%, nhưng lại nảy sinh hai vấn đề. Thứ nhất, chỉ mục đã phình to lên gấp hơn ba lần kích thước ban đầu, làm tăng chi phí lưu trữ và làm chậm quá trình cập nhật. Thứ hai, độ liên quan bị ảnh hưởng; việc khớp mờ (fuzzy matching) trả về một hỗn hợp nhiễu các video không liên quan, gây bối rối cho người dùng thay vì hướng dẫn họ.
Nhóm nghiên cứu kết luận rằng cần có một công cụ tìm kiếm chuyên dụng, có khả năng tự xử lý lỗi chính tả và chấm điểm độ liên quan tinh vi.
Xây dựng pipeline OpenSearch
Giữ SQLite làm nguồn dữ liệu gốc (source of truth)
OpenSearch đóng vai trò là một bản sao chỉ đọc, có thể thay thế được. Tất cả siêu dữ liệu (metadata) video vẫn nằm trong SQLite; chỉ mục tìm kiếm có thể được xây dựng lại mà không lo mất dữ liệu. Khi cụm OpenSearch gặp sự cố, ứng dụng sẽ tự động chuyển về sử dụng công cụ FTS5 ban đầu.
Phân lớp độ liên quan với truy vấn “should”
Thay vì chỉ dựa vào khớp mờ, truy vấn đã kết hợp ba mệnh đề:
- Khớp chính xác cụm từ – mức tăng trọng số (boost) cao nhất, ưu tiên những người dùng nhập đúng tiêu đề.
- Có mặt tất cả các thuật ngữ – mức tăng trọng số trung bình, bắt được các truy vấn mà mọi từ đều xuất hiện nhưng không nhất thiết phải theo đúng thứ tự.
- Khớp mờ (Fuzzy match) – mức tăng trọng số thấp, đóng vai trò như một lưới an toàn cho các mã thông báo bị viết sai chính tả.
Hệ thống phân cấp này giúp duy trì độ chính xác cho các truy vấn chuẩn, đồng thời vẫn cung cấp một phương án dự phòng linh hoạt cho các lỗi đánh máy.
Tinh chỉnh các thiết lập fuzzy
Độ dài tiền tố (prefix length) bằng 1 buộc ký tự đầu tiên của mỗi thuật ngữ phải khớp trước khi logic fuzzy được kích hoạt. Quy tắc này giúp việc tìm kiếm nhanh hơn và ngăn chặn sự bùng nổ của các thuật ngữ ứng viên có thể gây quá tải bộ nhớ. Nhóm cũng giới hạn số lượng mở rộng thuật ngữ tối đa, một biện pháp bảo vệ khác chống lại việc sử dụng tài nguyên quá mức.
Chiến lược đồng bộ hóa
Ba quy trình bổ trợ giúp giữ cho chỉ mục OpenSearch luôn đồng nhất với SQLite:
- Một cron job để đồng bộ dữ liệu mới.
- Quá trình so sánh (diff pass) hàng đêm – quét các điểm không khớp đã lọt qua các bản cập nhật lũy tiến.
- Xây dựng lại toàn bộ hàng tuần – chạy dưới một bí danh chỉ mục (index alias), sau đó hoán đổi bí danh đó trong một thao tác duy nhất, đảm bảo không có thời gian chết (zero downtime).
Tác động có thể đo lường được sau hai tuần
- Các truy vấn không có kết quả giảm từ 12% xuống còn 1,4%.
- Tỷ lệ chuyển đổi từ tìm kiếm sang nhấp chuột tăng 9%.
- Độ trễ trung vị vẫn dưới 28 ms, nằm trong mục tiêu trải nghiệm người dùng của nền tảng.
Những lưu ý và quan điểm phản biện
Việc di chuyển này không phải là một bản nâng cấp "cắm là chạy" (plug-and-play). Nhóm nhấn mạnh rằng cơ sở dữ liệu chính không bao giờ nên bị thay thế bởi một công cụ tìm kiếm; SQLite vẫn là kho lưu trữ chính thống cho tất cả siêu dữ liệu video.
Kết luận
Việc bổ sung khả năng chịu lỗi chính tả thông qua một công cụ tìm kiếm chuyên dụng đã biến một "ngõ cụt" đáng kể trong hành trình người dùng thành một trải nghiệm mượt mà và nhanh chóng. Nghiên cứu điển hình này cho thấy một kiến trúc kỷ luật – giữ kho lưu trữ quan hệ làm nguồn dữ liệu gốc, phân lớp độ liên quan và bảo vệ logic fuzzy – có thể mang lại những cải thiện rõ rệt mà không làm mất đi sự ổn định.