Theo định nghĩa của Stanford, Tìm kiếm thông tin (Information Retrieval – IR) là tìm kiếm tài nguyên trên một tập lớn các dữ liệu phi cấu trúc được lưu trữ trên máy tính nhằm thỏa mãn nhu cầu về thông tin.
Hiện này có rất nhiều trang web với công cụ hỗ trợ tìm kiếm đã giúp cho người sử dụng Internet rất nhiều trong việc tìm kiếm thông tin. Trong số có thể kể đến các trang Web hỗ trợ tìm kiếm thông dụng như Google, Yahoo, Bing…
Để tìm kiếm thông tin, trước hết, hệ thống tìm kiếm xử lý tài liệu thô thành những tài liệu được tách từ, phân đoạn (tokennized documents) và sau đó lập chỉ mục (index) dựa trên vị trí của từ. Khi người dùng đưa vào câu truy vấn, hệ thống tìm kiếm thông tin xử lý các câu truy vấn thành ngôn ngữ chỉ mục mô tả các yếu tố thông tin cần tìm kiếm và thực hiện đối chiếu với chỉ mục tài liệu để tìm ra các tài liệu liên quan. Cuối cựng, cỏc tài liệu liờn quan sẽ ủược trả về cho người dựng theo một danh sỏch được sắp xếp theo độ ưu tiên chính xác giảm dần (ranked list).
3.5.2. Tìm kiếm thông tin sử dụng Solr
Solr là một máy tìm kiếm (search engine) cho phép tìm kiếm thông tin theo yêu cầu của người dùng với các đặc điêm nổi bật sau:
Khả năng tìm kiếm văn bản toàn diện (Full-Text Search) giống kiểu Google.
Chỉnh sửa để hiệu năng tốt hơn.
Dựa trên các chuẩn mở trong giao tiếp với các hệ thống khác – XML, JSON và HTTP
Quản trị dưới dạng giao diện HTML đơn giản
Thống kê dưới dạng JMX
Khả năng mở rộng ra nhiều server Solr
Cấu hình đơn giản dễ dàng với định dạng XML
Có khả năng bổ sung các phần mở rộng (plugin) mới. Ví dụ như phân tích mở rộng tiếng Việt: Bắt lỗi chính tả, bỏ dấu,…
Lê Tất Doãn – D12CNPM2 60
Cho phép highlighting kết quả tìm kiếm, như cách mà google hiện thị thông tin tóm tắt về kết quả mà ở đó câu truy vấn được in đậm
Có thể xây dựng rất nhiều ứng dụng khác mà một trang tìm kiếm cần như:
autosuggestion, spellchecking, xây dựng tagcloud, phân loại kết quả clustering (như Bing làm), trending keywords, category navigation, các kết quả liên quan, nhóm kết quả (field collapsed) …
Cho phép scale hệ thống một cách dễ dàng khi bạn có một lượng lớn dữ liệu mà không đủ chứa trên một máy chủ hay phải phục vụ rất nhiều người dùng đồng thời.
Solr cũng có thể dùng như CSDL NoSQL hay như cache layer, dùng cho các listing cần performance tốt.
Solr cũng sắp hỗ trợ realtime cho phép tìm kiếm ngay kết quả sau khi index.
Điều này đặc biệt khó khi index rất lớn. Hiện tại Solr cho phép kết quả rât nhanh, nhưng phải hy sinh thời gian index. Với dữ liệu lớn có khi bạn phải mất 30 phút hoặc nhiều hơn chỉ để cập nhật được một tài liệu, tuy nhiên có thể sử dụng kiểu cập nhật dữ liệu cho từng bản ghi được thay đổi (đề cập chi tiết ở các phần sau).
Solr hỗ trợ rất nhiều công cụ để tinh chỉnh kết quả tìm kiếm, bằng tất cả các thông tin mà bạn cung cấp làm sao để kết quả trả về là tốt nhất. Ví dự như đánh trọng số các trường, click log, số lượt view, …
3.5.3. Tìm kiếm - gợi ý sử dụng Solr
Khi nói đến một công cụ tìm kiếm, người ta sẽ nghĩ tới một khung search để điền thông tin. Tương tự khi nghĩ tới một công cụ recommendation (gợi ý), người ta sẽ nghĩ tới một thuật toán tự động đề xuất những thông tin dựa trên nhu cầu và hành vi của người dùng. Trong thực tế, cả search và recommendation nhìn chung đều là so khớp giữa input và thông tin có sẵn.
Về bản chất, cả search và recommendation hoạt động tương tự nhau: xây dựng kết nối giữa các văn bản và tìm kiếm thông tin có liên quan nhất dựa trên những chỉ số được thiết lập sẵn. Search và recommendation khác nhau cơ bản ở chỗ search yêu cầu input từ người dùng một cách cụ thể trong khi recommendation tự động cung cấp những thông tin dựa trên thông tin từ người dùng, có thể là trong profile hay lịch sử search.
Chức năng tìm kiếm các hệ thống thường sử dụng tính năng Fulltext search của CSDL, hay sử dụng Google Custome Search để giải quyết vấn đề đó. Cả hai cách đều có thể thực hiện được khá nhanh. Tuy nhiên nó đều có những nhược điểm không thể bỏ qua:
Với SQL search:
Lê Tất Doãn – D12CNPM2 61
Chất lượng kết quả tìm kiếm rất tệ, nó thường trả về những kết quả đầu tiên mà nó thấy chứ không phải những kết quả tốt nhất, những thứ mà người dùng muốn tìm.
Tốc độ tìm kiếm rất chậm đặc biệt với CSDL lớn hay là có nhiều người dùng. CSDL không phải được thiết kế để tìm kiếm nên nó chậm là điều hiển nhiên.
Với Google Custom Search (GCS):
Dùng GCS, chỉ phát huy khi Google index tất cả các thông tin của bạn một cách kịp thời, điều mà chỉ có bởi một số ít trang web có Rank cao
Google không biết các thông tin dữ liệu khác của bạn, ngoài các ký tự được đưa lên web ví dụ như public date, category, … Vì vậy người dùng không thể lọc kết quả tìm kiếm theo các trường đó, sắp xếp, thống kê. Các tính năng này đặc biệt hữu ích cho người dùng để tìm đúng kết quả họ cần vì không phải lúc nào bộ máy tìm kiếm có thể trả về kết quả chính xác ngay lập tức dựa vào một câu truy vấn.
Với Apache Solr:
Solr lưu dữ liệu dưới dạng các chỉ mục điều này làm tăng tốc độ tìm kiếm dữ liệu
Cho phép highlighting kết quả tìm kiếm: Như cách mà google hiện thị thông tin tóm tắt về kết quả mà ở đó câu truy vấn được in đậm
Hỗ trợ rất nhiều cú pháp tìm kiếm: Hỗ trợ nhiều kiểu đầu ra Json, XML, PHP, … cho phép Apache Solr có thể tích hợp với một ứng dụng web một cách đơn giản
Cho phép scale hệ thống một cách dễ dàng khi bạn có một lượng lớn dữ liệu mà không đủ chứa trên một máy chủ hay phải phục vụ rất nhiều người dùng đồng thời.
Lê Tất Doãn – D12CNPM2 62