2008-09-16 52 views

Trả lời

16

Think Sphinx có cú pháp ngắn gọn hơn để xác định trường nào và mô hình nào được lập chỉ mục.

Cả UltraSphinx và Think Sphinx (gần đây) đều có tính năng cực kỳ tuyệt vời, tính đến khoảng cách địa lý của các đối tượng. UltraSphinx có vấn đề gây phiền nhiễu với cách nó tải các mô hình (nó không tải toàn bộ ngăn xếp Rails, vì vậy bạn có thể nhận được lỗi lạ và khó chẩn đoán, được xử lý bằng cách thêm tuyên bố rõ ràng require).

Chúng tôi sử dụng Think Sphinx về các dự án mới và UltraSphinx trên các dự án sử dụng nội dung địa lý.

+2

Tò mò, nếu cả hai đều có hỗ trợ cho nội dung địa lý, tại sao lại sử dụng Think Sphinx trên các dự án mới và UltraSphinx trên các dự án sử dụng nội dung địa lý? –

0

Tôi đã sử dụng Nghĩ Sphinx và có vẻ như khá tốt, nhưng tôi đã không có thời gian để đánh giá tất cả các tùy chọn.

0

Tôi khuyên bạn nên suy nghĩ Nhân sư. Đó là lựa chọn nhanh nhất theo ý kiến ​​của tôi.

0

Tôi đã sử dụng Ferret và nó hoạt động tốt cho mục đích của tôi, nhưng tôi chưa đánh giá các tùy chọn khác.

4

Tôi chỉ sử dụng kết hợp Ferret/actions_as_ferret (quyết định cũ) trên dự án khách hàng. Tôi khuyên bạn nên xem xét các tùy chọn khác trước tiên.

aaf rất dễ vỡ và có thể khiến ứng dụng Rails của bạn ngừng hoạt động nếu bạn nhầm lẫn trong cấu hình hoặc nếu vì lý do nào đó bạn gặp lỗi trong aaf.

Trong trường hợp này, thay vì chỉ đơn giản là có chức năng tìm kiếm thèm ra, bất kỳ hành động điều khiển nào chạm vào một mô hình được lập chỉ mục sẽ hoàn toàn thất bại và tăng ngoại lệ. Đó là baaad, hmkay?

0

Một lựa chọn Tôi đã không cố gắng là C++ dựa Xapian

5

Tùy chọn rắn được sử dụng bởi một trong những người bạn của tôi là Solr, một công cụ tìm kiếm sử dụng Lucene gốc dựa trên Java.Để sử dụng nó với Rails, có, tất nhiên một plugin actions_as, acts_as_solr.

Anh ấy đã trình bày kết hợp gần đây tại Montreal on Rails và cung cấp tổng quan tốt đẹp và toàn diện về how to use acts_as_solr on his blog.

Dường như nó cũng hỗ trợ giọng Pháp rất tốt.

0

Chúng tôi đang sử dụng http://hyperestraier.sourceforge.net/, được kế thừa. Đã không nhìn vào các công cụ khác, nhưng hyperestraier cung cấp tất cả các móc cần thiết. Tuy nhiên, việc thiết lập chỉ mục tìm kiếm phức tạp. Có lẽ các tùy chọn dễ dàng hơn có sẵn.

10

Câu hỏi này đã được hỏi trước đây here với câu trả lời chi tiết hơn.

5

Tôi sẽ trải qua quá trình chính xác này ngay bây giờ vì vậy trong khi tôi không có kinh nghiệm thực tế, tôi đã dành nhiều giờ nghiên cứu tất cả các tùy chọn. Dưới đây là những gì tôi đã học được cho đến thời điểm này:

  • * Nhân sư - danh tiếng tốt về tốc độ và chức năng nhưng Nhân sư cần phím nguyên và mô hình của tôi sử dụng GUID; ThinkingSphinx vừa công bố hỗ trợ cho GeoSpatial
  • Acts_As_Solr - được đề xuất bởi một người bạn có trang web có khối lượng lớn; những người sáng tạo ban đầu đã ngừng làm việc trên đó và tài liệu khó tìm; đòi hỏi một servlet Java
  • Acts_As_Ferret - trông dễ sử dụng, nhưng rất nhiều lời dèm pha rằng nói không ổn định của nó
  • Hai người khác với thông tin hạn chế được Acts_As_Indexed và Acts_As_Searchable

Tôi có một bảng tính với nỗ lực của tôi tại tài liệu về lợi thế và bất lợi của tất cả chúng. Nếu bất cứ ai quan tâm đến việc xem nó và/hoặc giúp tôi sửa nó, chỉ cần liên hệ với tôi. Tôi sẽ đăng nó ở đâu đó một khi tôi biết nó chính xác.

Đề xuất của tôi sẽ là thử UltraSphinx hoặc Think Sphinx nếu bạn có khóa chính bình thường. Tôi sẽ thử Acts_As_Xapian dựa trên tài liệu tốt, bộ tính năng và cách hoạt động của dự án.

1

Tôi đang sử dụng actions_as_ferret. Thật dễ dàng để cấu hình và nói chung là nhanh. Chức năng tìm thấy bản ghi hoạt động tích hợp khá hữu ích: bạn có thể áp dụng bất kỳ điều kiện nào hoặc tham gia các mô hình khác sau khi tìm kiếm của bạn tìm thấy các bản ghi phù hợp.

Không giống như nhân sư, bạn không phải lập chỉ mục lại TẤT CẢ hồ sơ của bạn khi bạn thêm dữ liệu mới. Có các chuỗi after_save và after_update sẽ chèn bản ghi mới của bạn vào db ferret. Đây là một trong những điểm bán hàng lớn đối với tôi.

Khi bạn phải lập chỉ mục khối lượng dữ liệu của mình, chồn chắc chắn chậm hơn act_as_sphinx (theo hệ số 3). Cuối cùng tôi đã viết phương pháp riêng của mình để lập chỉ mục các mô hình hoạt động nhanh như nhân sư - về cơ bản tải trước tất cả dữ liệu từ DB thay vì ghi lại bản ghi để tạo chỉ mục mới.

Tài liệu chồn là tốt cho những điều cơ bản, nhưng nó hơi thưa thớt khi bạn tìm kiếm các tìm kiếm phức tạp hơn, sắp xếp và sử dụng máy chủ dRb để lưu trữ một chỉ mục từ xa. Điều đó đang được nói, nó cảm thấy một sản phẩm trưởng thành hơn nhiều so với act_as_sphinx, mặc dù tôi có kinh nghiệm hạn chế với nhân sư.

0

Tùy thuộc vào cơ sở dữ liệu bạn đang sử dụng. Tôi sẽ khuyên bạn nên sử dụng Solr vì nó cung cấp rất nhiều lựa chọn tốt đẹp cho tìm kiếm mờ và có một trình phân tích cú pháp truy vấn tuyệt vời. Nhược điểm là bạn phải chạy một quá trình riêng biệt cho nó.Tôi đã sử dụng Ferret là tốt, nhưng thấy nó được ít ổn định trong điều khoản của đa luồng truy cập vào chỉ mục. Tôi đã không cố gắng Sphinx bởi vì nó chỉ hoạt động với MySQL và Postgres.

0

Tôi đang sử dụng một tùy chọn khác có hiệu quả đáng ngạc nhiên. Tôi đang sử dụng jruby và nói chuyện trực tiếp với lucene.

Tôi đã sử dụng behav_as_solr trong quá khứ và gặp phải một số sự cố. chủ yếu nó làm cho một cuộc gọi đồng bộ cho mỗi AR tiết kiệm. Đây không phải là quá xấu, nhưng trong tình huống của tôi một tiết kiệm đôi khi gây ra nhiều cuộc gọi đồng bộ để solr và đôi khi sẽ lâu hơn mongrel sẽ cho phép và tôi nhận được một ngoại lệ thời gian chờ mongrel (hoặc một cái gì đó như thế)

0

Think Sphinx là một lựa chọn tốt hơn Ultrasphinx, mà dường như bị bỏ rơi, nhưng, nói chung, Xapian có một động cơ mạnh hơn Sphinx và dễ dàng hơn trong việc thực hiện tìm kiếm thời gian thực.

0

Tôi khuyên bạn nên actions_as_ferret. Nhưng mặc dù phần khó khăn là làm cho nó hoạt động thành công trong máy chủ của bạn, một khi đã thực hiện bạn hầu như không gặp vấn đề gì vì máy chủ ferret sẽ chạy như một quá trình nền riêng biệt để cập nhật chỉ mục của bạn mỗi khi có bất kỳ cập nhật mới nào. Ngoài ra, nó làm việc tuyệt vời trong mongrel với apache cho chúng tôi.

0

Tôi cũng đang tìm giải pháp hoàn hảo. Lúc đầu, tôi đã đi với suy nghĩ Sphinx, mà làm việc tốt. Nhưng vì tôi có ý định lưu trữ ứng dụng web của mình trên Heroku, tùy chọn duy nhất là sử dụng Solr. Hạn chế lớn nhất, tuy nhiên, đó là sự phát triển của đá quý chính acts_as_solr dường như đã dừng lại sau tháng 5 năm 2008. Vì vậy, đó là quá cũ cho hương vị của tôi. Tôi chỉ tìm thấy Sunspot là một thay thế nâng cao và với các bản cập nhật gần đây, vì vậy đó là một trong những tôi sẽ xem xét.

Một tùy chọn khác mà Heroku cung cấp là sử dụng máy chủ chỉ mục được lưu trữ dựa trên Solr, có tên là Websolr. Các đá quý cần thiết websolr-acts_as_solr cũng may mắn rất nhiều up-to-date.

1

Nếu bạn đang sử dụng dịch vụ lưu trữ dùng chung như tôi (Bluehost), các tùy chọn của bạn có thể bị giới hạn ở những gì nhà cung cấp cung cấp. Trong trường hợp của tôi, tôi không thể tìm thấy một cách tốt và đáng tin cậy để bắt đầu và giữ một máy chủ riêng biệt chạy, chẳng hạn như Lucene hoặc Solr.

Vì vậy, tôi đã đi với Xapian và nó đã làm việc tốt cho tôi. Có 2 plugin cho đường ray tôi đã nghiên cứu: actions_as_xapian và xapian_fu. Việc đầu tiên sẽ giúp bạn đi nhanh chóng, nhưng nó dường như không còn được duy trì nữa. Tôi mới bắt đầu làm việc với xapian_fu.

1

Trong trường hợp bất kỳ ai vẫn quan tâm, điều mới nhất để sử dụng ngay bây giờ là elasticsearch. Có đá quý có sẵn cho nó như lốp hoặc elasticsearch-ray. Nó cũng dựa trên Lucene như Solr, dựa trên Java. Solr thực sự được tích hợp với dự án này ngay bây giờ ...

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