سؤال

وقد أي شخص يستخدم Lucene.NET بدلا من استخدام البحث النص الكامل الذي يأتي مع sql server?

إذا كنت سوف تكون مهتمة في كيفية تنفيذ ذلك.

هل على سبيل المثال كتابة ويندوز خدمة الاستعلام عن قاعدة البيانات كل ساعة ثم حفظ النتائج إلى lucene.net المؤشر ؟

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

المحلول

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

لقد استعملت lucene.net كما قاعدة البيانات العامة مفهرس ، لذلك ما عدت كان في الأساس DB id (مفهرسة رسائل البريد الإلكتروني) و أنا أيضا استخدامه للحصول على العودة معلومات كافية لملء نتائج البحث أو تلك دون لمس قاعدة البيانات.انها عملت كبيرة في كلتا الحالتين ، tho SQL يمكن الحصول على قليلا بطيئة ، كما لديك إلى حد كبير إلى الحصول على هوية ، حدد معرف الخ.لدينا حول هذا بجعل الجدول المؤقت (مع مجرد معرف الصف في ذلك) و بالجملة-إدراج من ملف (الذي كان الإخراج من لوسين) ثم الانضمام إلى الرسالة الجدول.كان الكثير أسرع.

لوسين ليست مثالية ، عليك أن تفكر قليلا خارج قواعد البيانات العلائقية مربع ، لأنه تماما ليست واحدة, لكنه جيد جدا في ما يفعل.تستحق نظرة ، ، أنا قلت لا يكون "عفوا, آسف, كنت بحاجة إلى إعادة إنشاء الفهرس الخاص بك مرة أخرى" المشاكل التي MS SQL هو FTI لا.

راجع للشغل, كنا نتعامل مع 20-50million رسائل البريد الإلكتروني (حول 1 مليون فريدة من نوعها المرفقات) ، بلغ مجموعها عن 20GB من لوسين مؤشر أعتقد و 250+جيجابايت بيانات SQL + المرفقات.

الأداء كان رائعا ، على أقل تقدير - فقط تأكد من التفكير ، وقرص الخاص بك دمج العوامل (عندما يدمج مؤشر قطاعات).لا يوجد أي مشكلة في وجود أكثر من شريحة واحدة, ولكن يمكن أن يكون هناك مشكلة كبيرة إذا كنت في محاولة دمج اثنين من القطاعات التي 1mil العناصر في كل لديك مراقب الخيط الذي يقتل العملية إذا كان يستغرق وقتا طويلا.....(نعم ، ركل دبرنا لفترة من الوقت).وبالتالي الحفاظ على أقصى عدد من الوثائق في thinggie منخفضة (أي لا تعيين إلى maxint كما فعلنا!)

تحرير كوري تراجر توثيق كيفية استخدام Lucene.NET في BugTracker.NET هنا.

نصائح أخرى

أنا لم تكن قد فعلت ذلك ضد قاعدة البيانات بعد سؤالك نوعا ما مفتوحة.

إذا كنت ترغب في البحث وهو ديسيبل, و يمكن أن تختار لاستخدام لوسين, أنا أيضا أعتقد أنه يمكنك التحكم عندما يتم إدخال البيانات إلى قاعدة البيانات.إذا ليس هناك ما يدعو إلى استطلاع db لمعرفة إذا كنت بحاجة إلى reindex فقط مؤشر عند إدراج أو إنشاء قائمة انتظار الجدول الذي يمكن أن لوسين ما إلى مؤشر.

أعتقد أننا لا نحتاج آخر مفهرس التي تجهل ما تفعله ، وإعادة فهرسة في كل مرة ، أو يستخدم موارد الإسراف.

لقد استخدمت lucene.net كما مشغل التخزين, لأنه من السهل أن وتوزيع إعداد البديل آلات مع فهرس من قاعدة البيانات, انها مجرد نسخ الملفات ، يمكنك مؤشر على آلة واحدة فقط نسخ الملفات الجديدة إلى الأجهزة الأخرى لتوزيع المؤشر.جميع عمليات البحث وترد التفاصيل من لوسين مؤشر قاعدة البيانات يستخدم فقط من أجل التحرير.هذا الإعداد قد ثبت جدا قابلة حل احتياجاتنا.

فيما يتعلق بالاختلافات بين sql server و لوسين فإن المشكلة الأساسية مع sql server 2005 النص الكامل البحث هو أن الخدمة تنفصل من مشغل العلائقية ، حتى ينضم, أوامر, المجاميع تصفية بين النص الكامل النتائج العلائقية الأعمدة هي مكلفة جدا من حيث الأداء, مايكروسوفت تدعي أن هذه القضايا تم تناولها في sql server 2008 أو دمج النص الكامل البحث داخل مشغل العلائقية ، ولكن لا يجب اختباره.كما جعل كل بحث النص الكامل أكثر شفافية في الإصدارات السابقة فإن الإقليمي الحالية, stopwords عدة أجزاء أخرى من الفهرسة حيث مثل صندوق أسود و من الصعب أن نفهم ، و في النسخة الجديدة من السهل أن نرى كيف يعمل.

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

اعتدت Lucene.NET جنبا إلى جنب مع MySQL.توجهي إلى تخزين المفتاح الأساسي من db سجل في لوسين الوثيقة جنبا إلى جنب مع فهرسة النص.في البرمجية الزائفة يبدو مثل:

  • متجر سجل:

    إدراج النص ، وغيرها من البيانات إلى الجدول
    الحصول على أحدث إدخال معرف
    إنشاء لوسين الوثيقة
    وضع (ID, النص) في لوسين الوثيقة تحديث مؤشر لوسين

  • الاستعلام
    البحث لوسين مؤشر
    لكل لوسين دكتور في مجموعة نتائج تحميل البيانات من DB من خلال تخزين سجل معرف

فقط ملاحظة, أنا حولت من لوسين إلى أبو الهول بسبب أداء رائع

أعتقد أن هذا المقال هو نقطة انطلاق جيدة:

http://www.aspfree.com/c/a/braindump/working-with-lucene-net/

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