سؤال

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

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

المحلول

هناك العديد من الخيارات المتاحة ولكل منها نقاط قوة ونقاط ضعف مختلفة.إذا كنت ترغب في إضافة ميزة البحث عن النص الكامل، فمن الحكمة التحقق من كل منها قليلاً وتجربتها لمعرفة مدى نجاحها في بيئتك.

يحتوي MySQL على دعم مدمج للبحث عن النص الكامل.لديه دعم عبر الإنترنت مما يعني أنه عند إضافة سجلات جديدة إلى قاعدة البيانات، تتم فهرستها تلقائيًا وستكون متاحة في نتائج البحث.ال توثيق لديه مزيد من التفاصيل.

acts_as_tsearch يقدم غلافًا لوظائف مدمجة مماثلة للإصدارات الحديثة من PostgreSQL

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

لوسين هو مزود بحث شائع مكتوب بلغة Java.يمكنك استخدام Lucene من خلال خادم البحث الخاص به سولر مع القضبان باستخدام acts_as_solr.

إذا كنت لا ترغب في استخدام Java، فهناك منفذ يسمى Lucene إلى Ruby النمس.تتم إضافة دعم Rails باستخدام acts_as_ferret توصيل في.

اكسابيان يعد خيارًا جيدًا آخر وهو مدعوم في Rails باستخدام acts_as_xapian توصيل في.

وأخيرا، خياري المفضل هو أبو الهول باستخدام ألتراسفنكس توصيل في.إنه سريع للغاية ولديه العديد من الخيارات حول كيفية فهرسة قواعد البيانات الخاصة بك والبحث فيها، ولكن لم تعد تتم صيانتها بشكل نشط.

مكون إضافي آخر لـ Sphinx هو تفكير أبو الهول الذي لديه الكثير من الإيجابية تعليق.يعد البدء في استخدام Thinking Sphinx أسهل قليلاً من Ultrasphinx.أود أن أقترح التحقق من كلا المكونين الإضافيين لتحديد أيهما يناسب مشروعك بشكل أفضل.

نصائح أخرى

يمكنني أن أوصي بأبو الهول.رايان بيتس لديه عظيم تسجيل الشاشة حول استخدام البرنامج المساعد Thinking Sphinx لإنشاء حل للبحث عن النص الكامل.

يمكنك استخدام Ferret (وهو Lucene المكتوب بلغة Ruby).إنه يتكامل بسلاسة مع Rails باستخدام مزيج act_as_ferret.ألق نظرة على "كيفية دمج النمس مع القضبان".البديل هو أبو الهول.

لقد قمت بتجميع أ قائمة بخيارات البحث المتنوعة في Ruby on Rails في هذا السؤال الآخر.لست متأكدًا من كيفية أو ما إذا كان سيتم دمج أسئلتنا.

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

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

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

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