سؤال

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

حسنا ... يخزن CMS محتوى من خلال ترجمة الشخصيات الخاصة إلى كيانات HTML (هذا حقيقي القيام به من قبل المحرر المجمع). لذلك الكلمة الألمانية "möchten" يحصل على "möchten" في DB. CMS يخلق سلسلة استعلام مثل

SELECT * FROM `SiteTree` WHERE MATCH( Content ) AGAINST (<SEARCH_STRING> IN BOOLEAN MODE);

الجدول هو من النوع MyISAM، يحتوي الحقل على مؤشر النص الكامل.

إذا كنت تستخدم "Möchten" كسلسلة بحث، فسوف يتطابق MySQL بكل صفحة، كما هو مشغل سيفعل الأشياء المجنونة إذا كان موجودا في سلسلة البحث. البحث لن يعمل.

الفكرة التالية هي استبدال الشخصية الخاصة عن طريق النائب. ولكن هذا سيتطابق أيضا العديد من الكلمات، بمجرد أن يكون لديك أي شيء يبدأ ب "m" وبلد آخر ينتهي ب "Chten". لا أعرف السبب، ولكن استبدال فقط أمبيرساند مع علامة النجمة (حتى البحث عن "M * OUML؛ Chten") سيؤدي أيضا إلى نتائج مماثلة.

تم وصف نفس المشكلة هنا.

حسنا، الناس، أنا بحاجة لمساعدتكم! أيه أفكار؟

يحرر: تحويل المحتوى إلى UTF-8 ليس خيارا.

شكرا!
craesh.

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

المحلول

لماذا تستخدم كيانات HTML؟ فقط قم بالتبديل إلى UTF8.

خلاف ذلك حاول اقتباس سلسلة البحث الخاصة بك مرة أخرى مثل ("البحث" ").لسوء الحظ لن تعمل - http://bugs.mysql.com/bug.php؟id=26265. هناك علة معلقة طويلة. أعتقد أن النهج الوحيد هو:

والنهج الأخير هو تخزين عمود إضافي فقط لغرض البحث مع استبدال جميع لهجات.

نصائح أخرى

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

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