سؤال

ما هي حدود أو gotchas أو انتي باترن أو العثرات؟

ويبدو جذابا جدا، على ما يبدو يمكنك إنشاء محرك بحث مع العمل لا تقريبا. ولكن لا يمكن أن يكون دون مشاكلها ...

ما هي تجربتك؟

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

المحلول

في رأيي، أكبر العيب هو أن الخلية فهرسة النص الكامل يقتصر على الجداول MYISAM. كما oppsosed إلى الجداول ك InnoDB، تلك تفتقر إلى الكثير من الميزات الهامة، على سبيل المثال، صفقة.

نصائح أخرى

<اقتباس فقرة>   

وأنه لا يمكن أن يكون دون مشاكلها ...

وبالتأكيد لا!

وأي مصطلح البحث تتألف بحتة من الكلمات المحظورة ستفشل بصمت. يمكن أن يكون قد تم حظره بسبب كلمات دقيقة / قيود طول كحد أقصى و / أو ملف stopword.

ولقد وجدت في ملف stopword الافتراضي حتى عدوانية جدا، كان منع العديد من عمليات البحث صالحة. أيضا طول الحد الأدنى الافتراضي من 4 والركل في كثير من الأحيان عن مختصرات الناس قد ترغب في البحث عنها. أنا خفض ft_min_word_len إلى 3 وإزالة stoplist تماما (ft_stopword_file = ''). وثيقة: http://dev.mysql.com/doc /refman/5.1/en/fulltext-fine-tuning.html

ويمكنك أيضا فحص استعلام البحث لمعرفة ما إذا كان يحتوي فقط <4-حرف الكلمات، وتعود الى بحث LIKE في هذه الحالة. ليس هناك مثل هذه طريقة سهلة للالتفاف على stoplist على مستوى التطبيق.

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

وأخيرا، وكما ذكر الفريق الاستشاري، لا يوجد أي دعم لك InnoDB. في هذا اليوم وهذا العصر، لا تريد أن تكون وضع جميع البيانات الخاصة بك في جدول MYISAM.

إذا كان لديك تخزين لتجنيب، ما يمكنك القيام به هو وضع، الإصدار الكنسي الرئيسي للبيانات في InnoDB الجدول، ومن ثم إنشاء جدول MYISAM منفصل يحتوي على نسخة من محتوى FREETEXT، لمجرد استخدامها searchbait. لديك لتحديث كل الجداول على التغيير، ولكن إذا يفقد الجدول MYISAM سلامة فعلى الأقل تخسر فقط القدرة على البحث عبر الصفوف المعنية، بدلا من bumming احتياطية من البيانات الحية حقيقية وتحصل أخطاء التطبيق.

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

لجداول كبيرة، وسوف تحتاج إلى زيادة حجم المخزن المؤقت وحد ذاكرة التخزين المؤقت في ملف التكوين الخلية الخاصة بك.

وأيضا MATCH () الأعمدة التي تستخدم في البحث تحتاج إلى أن تكون نفس الأعمدة في المؤشر.

وبالإضافة إلى الإجابة bobince الجيدة جدا، وهناك مقال في وثائق الخلية التي تتحدث عن القيود المفروضة على النص الكامل. أتمنى أن يساعدك هذا. http://dev.mysql.com/doc/refman/5.0 /en/fulltext-restrictions.html (واولافور واج تحدث عن واحد من هذه بالفعل)

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