2009-08-16 27 views
191

Tôi đang tìm kiếm một máy chủ tìm kiếm toàn văn độc lập với các thuộc tính sau:Chọn một máy chủ tìm kiếm toàn văn độc lập: Sphinx hoặc SOLR?

  • Phải hoạt động như một máy chủ độc lập có thể phục vụ yêu cầu tìm kiếm từ nhiều khách hàng
  • Phải có khả năng làm "lập chỉ mục hàng loạt" bằng cách lập chỉ mục kết quả của truy vấn SQL: nói "SELECT id, text_to_index FROM documents;"
  • Phải là phần mềm miễn phí và phải chạy trên Linux với MySQL là cơ sở dữ liệu
  • Phải nhanh (quy ra tìm kiếm toàn văn nội bộ của MySQL)

Các phương án tôi đã phát hiện ra rằng có những tính chất này là :

  • Solr (dựa trên Lucene)
  • ElasticSearch (cũng dựa trên Lucene)
  • Sphinx

Câu hỏi của tôi:

  • Làm thế nào để họ so sánh?
  • Tôi có bỏ lỡ bất kỳ lựa chọn thay thế nào không?
  • Tôi biết rằng mỗi trường hợp sử dụng là khác nhau, nhưng có những trường hợp nhất định mà tôi chắc chắn sẽ là không phải muốn sử dụng một gói nhất định không?
+1

Bạn đã loại trừ sử dụng Lucene thẳng chưa? Solr là một dịch vụ trên đầu trang của lucene, vì vậy thẳng Lucene có thể stile là một khả năng. – Dave

+0

Lucene có chế độ máy chủ độc lập không? Tôi nghĩ đó là một trong những thứ mà SOLR đã thêm vào? Tôi đã không loại trừ bất cứ điều gì - vì vậy cảm thấy tự do để ủng hộ Lucene nếu đó là sự lựa chọn tốt nhất cho các yêu cầu :-) – knorv

+0

Nền tảng khách hàng của bạn là gì? –

Trả lời

322

Tôi đã sử dụng Solr thành công trong gần 2 năm nay và chưa bao giờ sử dụng Sphinx, vì vậy tôi rõ ràng là thiên vị. Tuy nhiên, tôi sẽ cố giữ mục tiêu bằng cách trích dẫn tài liệu hoặc những người khác. Tôi cũng sẽ đưa bản vá lỗi để câu trả lời của tôi :-)

tương đồng:

  • Cả Solr và Sphinx đáp ứng tất cả các yêu cầu của bạn. Chúng nhanh chóng và được thiết kế để lập chỉ mục và tìm kiếm các cơ quan dữ liệu lớn một cách hiệu quả.
  • Cả hai đều có danh sách dài các trang web có lưu lượng truy cập cao sử dụng chúng (Solr, Sphinx)
  • Cả hai đều cung cấp hỗ trợ thương mại. (Solr, Sphinx)
  • Cả hai đưa ra cam kết ràng buộc API khách hàng cho nhiều nền tảng/ngôn ngữ (Sphinx, Solr)
  • Cả hai có thể được phân phối để tăng tốc độ và năng lực (Sphinx, Solr)

Dưới đây là một số khác biệt :

câu hỏi liên quan:

+4

Nói về devs cam kết với cả Solr và Lucene, có vẻ như họ đã sáp nhập hai sản phẩm để phát triển hơn nữa dễ dàng hơn và nhanh hơn - http://www.lucidimagination.com/blog/2010/03/26/lucene-and-solr- phát triển-có-sáp nhập /. – jimmystormig

+3

@Stann: làm thế nào? Tôi đã sử dụng Solr gần 5 năm trước và không bao giờ cần phải viết một dòng Java. –

+0

@MauricioScheffer Bạn có thực sự nghĩ rằng mã java sẽ nhanh hơn C++. Đây là so sánh được thực hiện bởi Bill Karwin và Sphinx có truy vấn những điều nhanh hơn gấp 10 lần so với lucene (và solr phải gotta thậm chí còn chậm hơn.) Http://www.slideshare.net/billkarwin/practical-full-text-search-with- my-sql – Stann

46

Trừ khi bạn cần mở rộng chức năng tìm kiếm theo bất kỳ cách độc quyền nào, Sphinx là đặt cược tốt nhất của bạn.

lợi thế Sphinx:

  1. Phát triển và thiết lập nhanh
  2. Tốt hơn nhiều (và nhanh hơn) tập hợp. Đây là tính năng sát thủ của chúng tôi.
  3. Không phải XML. Đây là những gì cuối cùng loại trừ Solr cho chúng tôi. Chúng tôi đã phải trả lại những tập hợp kết quả khá lớn (nghĩ hàng trăm kết quả) và sau đó tổng hợp chúng từ khi tập hợp Solr thiếu. Lượng thời gian để tuần tự hóa và từ XML hoàn toàn bị giết hiệu suất. Tuy nhiên, đối với các kết quả nhỏ, nó hoàn toàn ổn.
  4. tài liệu xuất sắc nhất tôi đã nhìn thấy trong một ứng dụng mã nguồn mở

Solr ưu điểm:

  1. có thể được mở rộng.
  2. Có thể truy cập trực tiếp từ ứng dụng web, tức là bạn có thể có tìm kiếm tự động hoàn tất truy cập trực tiếp vào máy chủ Solr qua AJAX.
+29

Solr có nhiều tác giả trả lời khác với xml, bao gồm JSON, PHP, Ruby, Python và định dạng nhị phân java: http://lucene.apache.org/solr/api/org/apache/solr/request/QueryResponseWriter.html –

+23

Tôi đã đề cập đến tài liệu Solr/Lucene kinh khủng đến mức nào? Có để root thông qua Javadocs để tìm ra chức năng không phải là ý tưởng của tôi về tài liệu. – larf311

+3

Tôi nên liên kết với wiki: http://wiki.apache.org/solr/QueryResponseWriter#head-e82d899e83a861380fb6d0c34c1228a2f79f6c98 –

19

Tôi đã sử dụng Nhân sư gần một năm nay và điều đó thật tuyệt vời. Tôi có thể lập chỉ mục 1,5 triệu tài liệu trong khoảng một phút trên MacBook của mình và thậm chí nhanh hơn trên máy chủ. Tôi cũng đang sử dụng Nhân sư để giới hạn tìm kiếm các địa điểm trong các vĩ độ cụ thể & kinh độ và rất nhanh. Ngoài ra, cách xếp hạng kết quả là rất có thể chỉnh sửa. Dễ cài đặt & thiết lập, nếu bạn đọc một hoặc hai hướng dẫn. Hầu hết 1.0 trạng thái, nhưng ứng cử viên phát hành của họ đã được đá vững chắc.

+3

Tìm kiếm địa lý có thể được thực hiện trong Solr với plugin LocalSolr: http://www.gissearch.com/localsolr –

+1

bạn có thể INDEX 1,5 triệu tài liệu trong một phút? Tôi thậm chí không thể đến gần READING mà nhiều người - trực tiếp từ các tập tin 7zip (không viết, xuất ra bảng điều khiển) trên SSD của tôi! Và đó là năm 2017! Loại tài liệu này là gì? Đó là khá đáng kinh ngạc. Lưu ý: Tôi hy vọng bạn không có nghĩa là _search_ chỉ số 1,5 triệu trong một phút. Các tìm kiếm của chỉ mục w/1,5 triệu tài liệu vẫn sẽ trở lại sau vài giây (ngay cả trong năm 2009). – FastAl

2

Lucene/Solr dường như là tính năng hơn và với nhiều năm còn trong kinh doanh và một cộng đồng người dùng mạnh mẽ hơn. imho nếu bạn có thể vượt qua các vấn đề thiết lập ban đầu như một số dường như đã phải đối mặt (không phải chúng tôi) sau đó tôi sẽ nói Lucene/Solr là đặt cược tốt nhất của bạn.

+0

Cộng đồng người dùng là một điểm quan trọng. Có một vài người VERY, RẤT hữu ích trong các diễn đàn Sphinx, nhưng không có một cộng đồng vững mạnh nào khác. – mlissner

20

Lưu ý: Có nhiều người dùng có cùng một câu hỏi trong đầu.

Vì vậy, để trả lời cho điểm:

nào và tại sao?

  • Sử dụng Solr nếu bạn có ý định sử dụng nó trong web của bạn ứng dụng (ví dụ trang web công cụ tìm kiếm). Nó chắc chắn sẽ trở nên tuyệt vời, nhờ vào API của nó. Bạn chắc chắn sẽ cần sức mạnh đó cho một ứng dụng web.

  • Sử dụng Nhân sư nếu bạn muốn tìm kiếm qua tấn tài liệu/tệp thật nhanh. Nó cũng lập chỉ mục thật nhanh. Tôi khuyên bạn không nên sử dụng nó trong một ứng dụng liên quan đến JSON hoặc phân tích cú pháp XML để có được kết quả tìm kiếm. Sử dụng nó cho tìm kiếm dB trực tiếp. Nó hoạt động tốt trên MySQL.

Alternatives

Mặc dù đây là những người khổng lồ, có rất nhiều nhiều hơn nữa. Ngoài ra, có những người sử dụng chúng để hỗ trợ các khung tùy chỉnh của họ. Vì vậy, tôi sẽ nói rằng bạn thực sự đã không bỏ lỡ bất kỳ. Mặc dù có một elasticsearch có cơ sở người dùng tốt.

+13

khoảnh khắc khó xử khi tôi đọc câu trả lời này sau một năm rưỡi và bấm vào upvote và thấy rằng tôi đã viết câu trả lời này bản thân mình. lol. : D Một bổ sung nhỏ cho điều này mặc dù: Sau 18 tháng, elasticsearch đã bật ra được một thay thế tuyệt vời và có một cộng đồng phong nha quá. Mát mẻ, cây cảnh mát mẻ! – Augiwan

+0

Augustus! Khoảnh khắc khó xử đó: D. Vì vậy, đối với một ứng dụng web python, bạn nghĩ điều gì là tốt nhất hiện nay? Solr hoặc tìm kiếm đàn hồi dựa trên hiệu suất, sử dụng bộ nhớ và sự dễ dàng để thiết lập bất kỳ ý tưởng? –

+0

Không cần biết ngôn ngữ của ứng dụng web được viết. Chọn dựa trên trường hợp sử dụng của bạn! – Augiwan

Các vấn đề liên quan