Chọn một máy chủ tìm kiếm toàn văn bản độc lập: Sphinx hay SOLR? [đóng cửa]


192

Tôi đang tìm kiếm một máy chủ tìm kiếm toàn văn bản độc lập với các thuộc tính sau:

  • Phải hoạt động như một máy chủ độc lập có thể phục vụ các yêu cầu tìm kiếm từ nhiều khách hàng
  • Phải có khả năng thực hiện "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 TỪ tài liệu;"
  • Phải là phần mềm miễn phí và phải chạy trên Linux với MySQL làm cơ sở dữ liệu
  • Phải nhanh chóng (loại trừ tìm kiếm toàn văn nội bộ của MySQL)

Các lựa chọn thay thế mà tôi đã tìm thấy có các tính chất này là:

  • Solr (dựa trên Lucene)
  • ElasticSearch (cũng dựa trên Lucene)
  • Nhân sư

Những câu hỏi của tôi:

  • Làm thế nào để họ so sánh?
  • Tôi đã bỏ lỡ bất kỳ lựa chọn thay thế?
  • 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ẽ không muốn sử dụng một gói nhất định?

1
Bạn đã loại trừ bằng cách sử dụng Lucene thẳng? Solr là một dịch vụ trên đỉnh của lucene, vì vậy Lucene thẳng có thể là một khả năng.
Dave

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

mausch: Chủ yếu là Java mà còn các ngôn ngữ khác.
knorv

Cá nhân tôi thích Nhân sư. Tuy nhiên, trong một dự án "lớn" gần đây, ứng cử viên phát hành mới nhất (0.9.9-RC2) đã hiển thị các lỗi chặn khi sử dụng mảng đa giá trị (MVA). Nó sẽ kết quả ngẫu nhiên! Vì vậy, chúng tôi đã chuyển sang SOLR để giải quyết vấn đề này. Khi SOLR hoạt động và hiệu năng vẫn ổn, và không có lỗi trình chiếu.
pchap10k

2
Bạn đã xem qua elaticsearch.com chưa?
FYA

Câu trả lời:


327

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

Điểm tương đồng:

  • Cả Solr và Sphinx đều đáp ứng tất cả các yêu cầu của bạn. Chúng nhanh và được thiết kế để lập chỉ mục và tìm kiếm các khối dữ liệu lớn một cách hiệu quả.
  • Cả hai đều có một 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 cung cấp hỗ trợ thương mại. ( Solr , Nhân sư )
  • Cả hai đều cung cấp các ràng buộc API của máy khách cho một số nền tảng / ngôn ngữ ( Sphinx , Solr )
  • Cả hai có thể được phân phối để tăng tốc độ và công suất ( Nhân sư , Solr )

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

Câu hỏi liên quan:


4
Nói về các nhà phát triển cam kết với cả Solr và Lucene, có vẻ như họ đã hợp nhất hai sản phẩm giúp phát triển hơn nữa dễ dàng hơn và nhanh hơn - lucidimagination.com/blog/2010/03/26/ .
jimmystormig

3
@Stann: làm sao vậy? 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 nào.
Mauricio Scheffer

@MauricioScheffer Bạn có thực sự nghĩ rằng mã java sẽ nhanh hơn C ++. Dưới đây là so sánh được thực hiện bởi Bill Karwin và Sphinx có truy vấn việc nhanh hơn 10 lần so với Lucene (và Solr Có phải là người ngồi thậm chí chậm hơn.) Slideshare.net/billkarwin/...
Stann

3
@Stann: bạn có thực sự nghĩ rằng bạn cần hiệu suất cao hơn Whitehouse.gov, Netflix, The Guardian, digg, chỉ để đặt tên cho một vài trang web sử dụng Solr? wiki.apache.org/solr/PublicServers
Mauricio Scheffer

3
Đây là một câu trả lời trên Sphinx là một cặp tốt cho câu trả lời này trên Solr
New Alexandria

48

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à lựa chọn tốt nhất của bạn.

Lợi ích nhân sư:

  1. Phát triển và thiết lập nhanh hơn
  2. Tổng hợp tốt hơn (và nhanh hơn). Đây là tính năng sát thủ cho 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ả về các tập kết quả khá lớn (nghĩ hàng trăm kết quả) và sau đó tự tổng hợp chúng vì tập hợp Solr còn thiếu. Lượng thời gian để tuần tự hóa đến và từ XML hoàn toàn giết chết hiệu năng. Đối với các tập kết quả nhỏ mặc dù, nó là hoàn toàn tốt.
  4. Tài liệu tốt nhất tôi từng thấy trong một ứng dụng nguồn mở

Ưu điểm của Solr:

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

29
Solr có nhiều người viết phản hồi khác ngoài xml, bao gồm JSON, PHP, Ruby, Python và định dạng nhị phân java: lucene.apache.org/solr/api/org/apache/solr/request/ trộm
Mauricio Scheffer

24
Tôi đã đề cập đến tài liệu Solr / Lucene khủng khiếp như thế nào chưa? Phải 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: wiki.apache.org/solr/ Khăn
Mauricio Scheffer

2
Tôi dành cả ngày để sửa một số lỗi cài đặt nhân sư 0.9.9 trên máy mac của mình. Cho đến nay nó vẫn không hoạt động. Thật là lỗi. Tôi đã sử dụng rất nhiều cách đề nghị. Tôi rất vui mừng ...
lkahtz

tài liệu của solr không tốt như nhân sư. nhưng cộng đồng thì rộng lớn. Và tôi luôn có thể tìm ra mọi thứ bằng cách đọc mã nguồn của solr.
Tyler Long

21

Lưu ý: Có rất nhiều người dùng có cùng câu hỏi.

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

Cái nào và tại sao?

  • Sử dụng Solr nếu bạn có ý định sử dụng nó trong ứng dụng web của bạn (ví dụ: công cụ tìm kiếm trang web). Nó chắc chắn sẽ trở nên tuyệt vời, nhờ 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 Sphinx nếu bạn muốn tìm kiếm thông qua hàng tấn tài liệu / tệp thực sự nhanh chóng. Nó lập chỉ mục thực sự quá nhanh quá. 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ó kết quả tìm kiếm. Sử dụng nó cho các tìm kiếm dB trực tiếp. Nó hoạt động rất tốt trên MySQL.

Lựa chọn thay thế

Mặc dù đây là những người khổng lồ, nhưng có nhiều hơn nữa. Ngoài ra, có những người sử dụng chúng để cung cấp năng lượng cho 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 mà có một 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à nhấp vào upvote và thấy rằng tôi đã tự viết câu trả lời này. cười lớn. : DA bổ sung nhỏ vào điều này mặc dù: Sau 18 tháng, elaticsearch đã trở thành một sự thay thế tuyệt vời và cũng có một cộng đồng tử tế. Mát, cây cảnh mát!
Augiwan

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

Ứng dụng web được viết bằng ngôn ngữ nào không quan trọng. Chọn dựa trên trường hợp sử dụng của bạn!
Augiwan

19

Tôi đã sử dụng Sphinx được 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 Sphinx để giới hạn các tìm kiếm ở các vị trí trong các vĩ độ và kinh độ cụ thể, và nó rất nhanh. Ngoài ra, làm thế nào kết quả được xếp hạng là rất điều chỉnh. Dễ dàng cài đặt và thiết lập, nếu bạn đọc một hoặc hai hướng dẫn. Gần như trạng thái 1.0, nhưng Ứng viên phát hành của họ đã vững chắc.


3
Tìm kiếm địa lý có thể được thực hiện trong Solr với plugin LocalSolr
Mauricio Scheffer

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 ĐỌC nhiều tệp - trực tiếp từ 7zip (không ghi, xuất ra bảng điều khiển) trên ổ SSD của tôi! Và đó là năm 2017! Những loại tài liệu này là gì? Điều đó thật phi thường. Lưu ý: Tôi hy vọng bạn không có nghĩa là tìm kiếm chỉ số 1,5 triệu trong một phút. Tìm kiếm chỉ mục với 1,5 triệu tài liệu vẫn sẽ quay lại sau vài giây (ngay cả trong năm 2009).
FastAl

2

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


Cộng đồng người dùng là một điểm quan trọng. Có một vài người RẤT, RẤT hữu ích trong các diễn đàn Nhân sư, nhưng không có một cộng đồng mạnh mẽ nào khác.
mlissner
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.