سؤال

هناك العديد من خيارات المكونات الإضافية لإنشاء محرك بحث في تطبيق Ruby on Rails الخاص بك.أي منهم هو الأفضل؟

هل كانت مفيدة؟

المحلول

يمتلك Thinking Sphinx صياغة أكثر إيجازًا لتحديد الحقول والنماذج التي سيتم فهرستها.

يتمتع كل من UltraSphinx وThinking Sphinx (مؤخرًا) بميزة رائعة للغاية تأخذ في الاعتبار القرب الجغرافي للأشياء.

يواجه UltraSphinx مشكلات مزعجة فيما يتعلق بكيفية تحميل النماذج (لا يقوم بتحميل مكدس Rails بالكامل، لذلك قد تحصل على أخطاء غريبة ويصعب تشخيصها، والتي يتم التعامل معها عن طريق إضافة صريحة require صياغات).

نحن نستخدم Thinking Sphinx في المشاريع الجديدة، وUltraSphinx في المشاريع التي تستخدم المحتوى الجغرافي.

نصائح أخرى

لقد تم طرح هذا السؤال سابقا هنا مع إجابات أكثر تفصيلا.

الخيار القوي الذي يستخدمه أحد أصدقائي هو سولر, ، محرك بحث يستخدم برنامج Lucene الأصلي المستند إلى Java.لاستخدامه مع Rails، هناك بالطبع مكون إضافي act_as، act_as_solr.

قدم التحرير والسرد مؤخرا في مونتريال على القضبان ويعطي لمحة لطيفة وشاملة عن كيفية استخدام Acts_as_solr على مدونته.

ويبدو أنه يدعم اللهجات الفرنسية جيدًا أيضًا.

أنا أقوم بهذه العملية بالضبط الآن، لذا على الرغم من أنني لا أملك خبرة فعلية، فقد أمضيت ساعات عديدة في البحث عن جميع الخيارات.وإليك ما تعلمته حتى الآن:

  • *Sphinx - يتمتع بسمعة جيدة فيما يتعلق بالسرعة والأداء الوظيفي، لكن Sphinx يحتاج إلى مفاتيح الأعداد الصحيحة ويستخدم النموذج الخاص بي GUID؛أعلنت ThinkingSphinx مؤخرًا عن دعمها لـ GeoSpatial
  • Acts_As_Solr - موصى به من قبل صديق له موقع كبير الحجم؛توقف المبدعون الأصليون عن العمل عليه ومن الصعب العثور على الوثائق؛يتطلب جافا servlet
  • Acts_As_Ferret - يبدو سهل الاستخدام، ولكن الكثير من المنتقدين يقولون إنه غير مستقر
  • هناك اثنان آخران بمعلومات محدودة هما Acts_As_Indexed وActs_As_Searchable

لدي جدول بيانات يحتوي على محاولتي لتوثيق مزايا وعيوب كل منها.إذا كان أي شخص مهتمًا برؤيته و/أو مساعدتي في تصحيحه، فما عليك سوى الاتصال بي.سأقوم بنشره في مكان ما عندما أعرف دقته.

توصيتي هي تجربة UltraSphinx أو Thinking Sphinx إذا كان لديك مفاتيح أساسية عادية.سأحاول Acts_As_Xapian بناءً على التوثيق الجيد ومجموعة الميزات ومدى نشاط المشروع.

لقد استخدمت مجموعة Ferret/acts_as_ferret فقط (قرار قديم) في مشروع عميل.أوصي بشدة بالنظر إلى آخر الخيارات أولا.

aaf هش للغاية ويمكن أن يوقف تطبيق Rails الخاص بك بشكل صارخ إذا ارتكبت خطأ في التكوين أو إذا واجهت خطأً في aaf لسبب ما.

في مثل هذه الحالة، بدلاً من مجرد إيقاف وظيفة البحث، فإن أي إجراء تحكم يمس نموذجًا مفهرسًا سيفشل تمامًا ويؤدي إلى حدوث استثناء.ما هو بعد، همكاي؟

انا استعمل ال act_as_xapian توصيل في.لقد اتبعت هذا البرنامج التعليمي:

http://locomotivation.com/2008/07/23/simple-ruby-on-rails-full-text-search-using-xapian

يعمل بشكل جيد للغاية.

أنا أستخدم act_as_ferret.من السهل تكوينه وسريع بشكل عام.تعد وظيفة البحث عن السجل النشط المضمنة مفيدة جدًا:يمكنك تطبيق أي شروط أو الانضمام إلى نماذج أخرى بعد أن يجد بحثك السجلات المطابقة.

على عكس أبو الهول، لا يتعين عليك إعادة فهرسة جميع سجلاتك عند إضافة بيانات جديدة.توجد خطافات after_save وafter_update والتي ستُدرج سجلك الجديد في قاعدة بيانات النمس.كانت هذه واحدة من نقاط البيع الكبيرة بالنسبة لي.

عندما يتعين عليك فهرسة بياناتك بشكل جماعي، فمن المؤكد أن النمس أبطأ من Acts_as_sphinx (بعامل 3).انتهى بي الأمر بكتابة طريقتي الخاصة لإعادة فهرسة النماذج التي تعمل بنفس سرعة أبو الهول - فهي تقوم بشكل أساسي بتحميل جميع البيانات من قاعدة البيانات مسبقًا بدلاً من الانتقال إلى سجل تلو الآخر لإنشاء الفهرس الجديد.

تعد وثائق النمس جيدة للأساسيات، ولكنها قليلة بعض الشيء بمجرد الدخول في عمليات بحث أكثر تعقيدًا وفرز واستخدام خادم dRb لاستضافة فهرس بعيد.ومع ذلك، يبدو أنه منتج أكثر نضجًا بكثير من act_as_sphinx، على الرغم من أن خبرتي محدودة مع أبو الهول.

إذا كنت تستخدم خدمة استضافة مشتركة مثلي (Bluehost)، فقد تقتصر خياراتك على ما يقدمه المزود.في حالتي، لم أتمكن من العثور على طريقة جيدة وموثوقة لبدء تشغيل خادم منفصل والحفاظ عليه، مثل Lucene أو Solr.

لذلك، ذهبت مع Xapian وكان الأمر يعمل بشكل جيد بالنسبة لي.هناك مكونان إضافيان للقضبان التي بحثت عنها:act_as_xapian و xapian_fu.الأول سوف يجعلك تنطلق بسرعة، ولكن لا يبدو أنه سيتم صيانته بعد الآن.لقد بدأت للتو العمل مع xapian_fu.

في حال كان أي شخص لا يزال مهتمًا، فإن أحدث شيء يمكن استخدامه الآن هو Elasticsearch.هناك الأحجار الكريمة المتاحة لذلك مثل إطار العجلة أو elasticsearch-rails.وهو يعتمد أيضًا على Lucene مثل Solr، المستند إلى Java.تم دمج Solr بالفعل مع هذا المشروع الآن ...

لقد استخدمت Thinking Sphinx ويبدو الأمر جيدًا جدًا، لكن لم يكن لدي الوقت الكافي لتقييم جميع الخيارات.

أوصي بالتفكير في أبو الهول.إنه الخيار الأسرع في رأيي.

لقد استخدمت Ferret وعملت بشكل جيد لأغراضي، لكنني لم أقم بتقييم الخيارات الأخرى.

الخيار الذي لم أجربه هو المستند إلى لغة C++ اكسابيان

كانوا يستخدمون http://hyperestraier.sourceforge.net/, ، والتي ورثت.لم ألقي نظرة على المحركات الأخرى، لكن جهاز Hyperestraier يوفر جميع الخطافات اللازمة.بالرغم من ذلك، فإن إعداد فهرس البحث أمر معقد.ربما تتوفر خيارات أسهل.

ذلك يعتمد على قاعدة البيانات التي تستخدمها.أوصي باستخدام Solr لأنه يقدم الكثير من الخيارات الرائعة للبحث الغامض ويحتوي على محلل استعلام رائع.الجانب السلبي هو أنه يجب عليك تشغيل عملية منفصلة لذلك.لقد استخدمت Ferret أيضًا، لكنني وجدت أنه أقل استقرارًا من حيث الوصول متعدد الخيوط إلى الفهرس.لم أجرب Sphinx لأنه يعمل فقط مع MySQL وPostgres.

أنا أستخدم خيارًا مختلفًا تم إعداده جيدًا بشكل مذهل.أنا أستخدم jruby وأتحدث إلى لوسين مباشرة.

لقد استخدمت act_as_solr في الماضي وواجهت بعض المشكلات.يقوم بشكل أساسي بإجراء مكالمة متزامنة لكل عملية حفظ AR.هذا ليس سيئًا للغاية، ولكن في حالتي، تسبب الحفظ أحيانًا في العديد من الاستدعاءات المتزامنة لـ solr وقد يستغرق أحيانًا وقتًا أطول مما يسمح به الهجين وأحصل على استثناء مهلة الهجين (أو شيء من هذا القبيل)

يعد Thinking Sphinx بديلاً أفضل من Ultrasphinx، الذي يبدو مهجورًا، ولكن بشكل عام، يمتلك Xapian محركًا أقوى من Sphinx وأسهل في تنفيذ البحث في الوقت الفعلي.

أوصي بـ act_as_ferret.ولكن على الرغم من أن الجزء الصعب هو إعداده وتشغيله بنجاح في الخادم الخاص بك، فبمجرد القيام بذلك لن تواجه أي مشكلة تقريبًا حيث سيتم تشغيل خادم النمس كعملية خلفية منفصلة لتحديث الفهرس الخاص بك في كل مرة يكون هناك أي تحديث جديد.كما أنه يعمل بشكل رائع في الهجين مع اباتشي بالنسبة لنا.

لقد كنت أبحث عن الحل الأمثل كذلك.في البداية ذهبت مع Thinking Sphinx، وكان الأمر جيدًا.ولكن بما أنني أنوي استضافة تطبيق الويب الخاص بي على هيروكو, ، الخيار الوحيد هو الاستخدام سولر.لكن العيب الأكبر هو أن التطور الرئيسي act_as_solr يبدو أن الجوهرة قد توقفت بعد مايو 2008.لذلك هذا قديم جدًا بالنسبة لذوقي.لقد وجدت البقع الشمسية كبديل متقدم ومع التحديثات الأخيرة، لذلك سأضعه في الاعتبار.

خيار آخر يقدمه Heroku هو الذهاب إلى خادم فهرس مستضاف يعتمد على Solr، المسمى ويبسولر.الجوهرة المطلوبة websolr-acts_as_solr ولحسن الحظ أيضًا محدث جدًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top