Build Document
Sau khi đã lấy được nội dung từ dữ liệu thô, tiếp theo là xây dựng các đơn vị “document” sử dụng cho việc tìm kiếm. Mỗi document là một record bao gồm nhiều field (title, body, abstract, author, url). Document phải được thiết kế cẩn thận, như làm thế nào chia nội dung thành các record và các field, làm thế nào để tính toán giá trị cho từng field? Thông thường, cách phân chia khá rành mạch, như mỗi email, PDF file hay trang web là một document. Đôi khi tình hình trở nên rối hơn: làm thế nào xử lý attachment trong email? Cách giải quyết là xem phần văn bản trong attachment là một field của email, hay xem attachment là một document riêng và liên kết ngược lại với email?
Khi đã có bản thiết kế cấu trúc document hợp lý, từ nội dung thu thập được, phần thông tin thuần văn bản được trích ra và gán vào giá trị các field. Không có vấn đề gì khó khăn nếu nội dung đã là một văn bản theo một bảng mã đã được biết trước. Nhưng ngày nay khá nhiều nội dung lại ở dạng nhị phân (PDF, Microsoft Office, Open Office, Adobe Flash, streaming video và audio multimedia) hoặc chứa những thẻ đánh dấu cần phải loại bỏ trước khi tiến hành quá trình indexing (RDF, XML, HTML). Các nội dung này cần phải thông qua một chương trình lọc để lấy được phần văn bản mong muốn trước khi tạo document mới. Tika, một dự án của Apache, hỗ trợ lọc document khá tốt. Nếu nội dung nằm trong database, các dự án như DBSight, Hibernate Search, LuSQL, Compass và Oracle/Lucene đưa ra giải pháp indexing và searching đơn giản, giải quyết đồng thời 2 bước Acquire Content và Build Document.
Tại bước này, thông thường logic nghiệp vụ được áp dụng để sinh ra các field. Điển hình, người ta phân tích ngữ nghĩa của field “body text” để tìm ra các thông tin phụ như tên, địa điểm, ngày, giờ, hoặc kết nối với thông tin từ những nguồn lưu trữ bên ngoài (database) để trộn chúng lại thành một document duy nhất.
Một vấn đề quan trọng được thực hiện tại bước này là đánh giá mức độ ưu tiên của từng document và field. Ví dụ như những document vừa mới được chỉnh sửa thì được ưu tiên hiện ra trước so với những document cũ, hay là đối với email thì ưu tiên tìm kiếm trên field title trước so với field body. Công việc này gọi là boosting tĩnh, vì mức độ ưu tiên được gán như một hằng số ngay khi xây dựng document, khác với boosting động có mức độ ưu tiên được hiệu chỉnh trong quá trình searching. Hầu như tất cả search engine tự động boost các field có độ dài ngắn và ưu tiên chúng hơn những field có độ dài lớn, để khi tìm kiếm một cụm từ khóa thì các kết quả cô đọng nhất sẽ hiện ra trước.

No comments yet.