0

Solr: Mã nguồn mở ứng dụng tìm kiếm

Solr là một platform mã nguồn mở cung cấp chức năng tìm kiếm phổ biến được phát triển bởi Apache.

apache solrTính năng chính của nó bao gồm khả năng tìm kiếm full-text, highlighting, faceted search, tích hợp cơ sở dữ liệu, xử lý nhiều kiểu văn bản(ví dụ, Word, PDF), và tìm kiếm theo địa điểm. Solr có khả năng mở rộng cao, cung cấp tìm kiếm phân tán và nhân bản Index. Nó cung cấp các tính năng định hướng và tìm kiếm cho nhiều trang web hàng đầu trên thế giới.

Solr là gì?

Solr là một platform mã nguồn mở cung cấp chức năng tìm kiếm (http://lucene.apache.org/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ì Solr chính là cái mà bạn cần.

Tại sao lại dùng 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.
  • 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.

Các tính năng và ứng dụng của Solr

  1. 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
  2. Hỗ trợ rất nhiều cú pháp tìm kiếm
  3. Hỗ trợ nhiều kiểu đầu ra Json, XML, PHP, … cho phép Solr có thể tích hợp với một ứng dụng web một cách đơn giản
  4. 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.
  5. 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) …
  6. Faceting: dùng cho mục đích navigation, lọc kết quả tìm kiếm dễ dàng
  7. 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.
  8. 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 chỉ để cập nhật được một tài liệu.
  9. 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, …

Sử dụng Solr

  1. Solr có thể chạy trên mọi nền tảng hỗ trợ Java (Window, Unix, Mac, …) và cài đặt rất dễ dàng. Chỉ cần copy và chạy. Tất nhiên bạn phải cài đặt JDK trước.
  2. Đây là hướng dẫn sử dụng mà bạn có thể làm quen với solr trong 15-20’ http:// lucene.apache.org/solr/tutorial.html
  3. Hiện tại Solr được sử dụng rất nhiều ở công ty để xây dựng search (Soha, Dantri, Khối thương mại điện tử, …

Theo VCCorp

dred