Apache Solr

Apache Solr là gì?
Apache Solr là một platform mã nguồn mở cung cấp chức năng tìm kiếm (http://lucene.apache.org/Apache Solr/), là một trong mười ứng dụng nguồn mở tốt nhất năm 2010 do infoWolrd trao (BOSSIE awardfor the Best of Open Source Software).


Apache Solr
Khi bạn muốn xây dựng một trang tìm kiếm cho trang web của bạn hay đặc biệt là khi bạn muốn làm một trang tìm kiếm chuyên biệt (như tìm nhạc, tìm phim, tìm việc, …) thì Apache Solr chính là cái mà bạn cần.
Tại sao lại dùng Apache Solr?
Khi các bạn làm một trang search thường các bạn sẽ dùng tính năng Fulltext search của CSDL, hay cũng có bạn dùng Google Custom Search cho trang web của mình. 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ảo qua:

Với SQL search
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.

Các tính năng và ứng dụng của Apache Solr
Apache Solr là một platform mã nguồn mở cung cấp chức năng tìm kiếm (http://lucene.apache.org/Apache Solr/), là một trong mười ứng dụng nguồn mở tốt nhất năm 2010 do infoWolrd trao (BOSSIE awardfor the Best of Open Source Software).
Khi bạn muốn xây dựng một trang tìm kiếm cho trang web của bạn hay đặc biệt là khi bạn muốn làm một trang tìm kiếm chuyên biệt (như tìm nhạc, tìm phim, tìm việc, …) thì Apache Solr chính là cái mà bạn cần.

Nó còn thiếu rất nhiều tính năng khác mà sẽ được đề cập đến trong phần sau, hầu hết các tính năng cần phải có của một trang tìm kiếm.

Google Custom Search:
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.

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.

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 keywordscategory navigation, các kết quả liên quan, nhóm kết quả (field collapsed) …

Faceting: dùng cho mục đích navigation, lọc kết quả tìm kiếm dễ dàng.

Apache 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.

Apache 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 Apache 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 chỉ để cập nhật được một tài liệu.

Apache 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, …